Skip to content

Releases: kurtmckee/sqliteimport

v0.14.0

25 Sep 13:58
v0.14.0
03ccbc4

Choose a tag to compare

Python support

  • Drop Python 3.9 support.

Added

  • Add an inject command.

    This allows a database of dependencies to be injected into a target file.
    This can be used to make a Python file a standalone executable.

    This feature requires Python 3.11 and higher at execution time
    due to sqlite3 API usage.

Documentation

  • Use pngcrush to make image file sizes smaller.

  • Link to the source code repository without using an iframe.

  • Document how to import sqliteimport and load a database of packages.

    This now includes runnable scripts showing fully-automated loading
    using sitecustomize.py and the PYTHONPATH environment variable.
    In addition, more information is provided
    for manually importing sqliteimport and loading a database.

Development

  • Migrate the flake8 configuration to pyproject.toml using
    the flake8-toml-config plugin.
  • Test type annotations against all supported Python versions.
  • Lock the GitHub CI runners to known, predictable versions.
  • Lock the coverage dependencies used for generating HTML reports
    to match the same version used to gather coverage statistics.

v0.13.0

24 Jul 12:42
v0.13.0
c5b73d4

Choose a tag to compare

Python support

  • Drop support for PyPy 3.10.

Fixed

  • Fall back to importing from source code if importing from byte code fails.

    This resolves a problem importing Flask when byte-compiled,
    due to its sansio subdirectory, which has no __init__.py file
    and whose submodules currently fail to import from the byte code table.

Documentation

  • Document compatible ruff configurations.

  • Add a logo and description to the sidebar on subpages.

  • Update the homepage sidebar layout and design.

Development

  • Fix performance testing issues.

    Zip-based bytecode import times were skewed during testing
    because zipimport doesn't use PEP 3147 __pycache__/ subdirectories.
    This is now accounted for by the performance testing script's setup steps,
    and zip-based import times are now accurate for comparison.

    Also, the total size of the source code and byte code trees is captured.

  • Begin to expand and better automate performance testing.

    This includes the ability to install from a requirements.txt file,
    to execute an arbitrary Python file, and to plot comparison bar charts
    of import times and package content sizes.

  • Use chipshot to standardize headers.

  • Prefer the new Python 3.14 compression.lzma namespace.

v0.12.0

15 May 12:56
v0.12.0
daad9ee

Choose a tag to compare

Fixed

  • Find all available distributions when no name is given.

    This allows tools like flake8 to auto-detect installed plugins.

v0.11.0

14 May 14:53
v0.11.0
27c81cc

Choose a tag to compare

Fixed

  • Fix a crash that occurs when CLI extras are not installed.

    This restores the user-friendly warning message behavior
    when [cli] extras are not installed.

Changed

  • A FileNotFoundError subclass is now raised when a file isn't found.

    Previously, a TypeError was implicitly raised due to the structure of the code.

Documentation

  • Add a CITATION.cff file.

v0.10.0

25 Mar 14:21
v0.10.0
e2b3548

Choose a tag to compare

Added

  • Add preliminary support for displaying files and source lines in tracebacks.

v0.9.0

19 Mar 12:54
v0.9.0
59dfef9

Choose a tag to compare

Fixed

  • Ensure that modules have a __file__ attribute,
    and possibly a __cached__ attribute.

    The Python data model docs make it clear that these attributes aren't guaranteed,
    but it is nevertheless common for authors to assume that __file__ exists.

    The string value may not be usable for a specific purpose,
    but the attributes now exist with the correct type for increased compatibility.

v0.8.0

18 Mar 14:05
v0.8.0
eef3279

Choose a tag to compare

Added

  • Support namespace packages.

Fixed

  • Fix a bug, and inconsistencies, in the describe command output.
  • Verify a distribution package exists in the database before claiming it does.

v0.7.0

10 Mar 13:45
v0.7.0
a9c065f

Choose a tag to compare

Added

  • Add a subcommand, describe, to print info about a database.
  • Add an alias for the CLI sqliteimport command: si.

Development

  • Improve the isolation of compatibility code.

v0.6.0

18 Feb 15:42
v0.6.0
68a2e9b

Choose a tag to compare

Added

  • Compress all database content using the LZMA algorithm.

    sqliteimport now produces databases that are smaller than importable zip files.

  • Support compiling to, and loading from, pre-compiled bytecode in the database.

    Performance testing shows that sqliteimport now imports large dependency trees
    faster than standard filesystem-based imports.

  • Add a sqliteimport compile command to compile all Python source to bytecode.

    The command should be run for each Python interpreter that will be used
    by the application.

Development

  • Add a Powershell script to test performance on Windows.

v0.5.0

15 Feb 16:54
v0.5.0
6ed7394

Choose a tag to compare

Python support

  • Support PyPy 3.11.

Added

  • Add initial support for bundling and loading Python bytecode (.pyc files).

    Performance testing on Linux shows that loading from sqlite is now twice as fast.

    The implementation is currently inflexible:
    it binds the sqlite database to the Python version used to bundle it.

Documentation

  • Add the changelog and a colophon to the documentation.
  • Configure ReadtheDocs to use the dirhtml builder.
  • Update the links shown on PyPI.

Development

  • Fix test project regeneration, which broke when Poetry 2 was released.

    • Migrate from Poetry to build to build the test project wheels.
    • Pin the regeneration tool dependencies.
    • Update the test projects' pyproject.toml files to use PEP 621 metadata keys.
  • Add a script to log performance comparisons across multiple importers,
    including source and bytecode files when imported from the filesystem,
    from sqlite, and from zip files with varying compression levels.