Releases: kurtmckee/sqliteimport
v0.14.0
Python support
- Drop Python 3.9 support.
Added
-
Add an
injectcommand.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
pngcrushto 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
usingsitecustomize.pyand thePYTHONPATHenvironment variable.
In addition, more information is provided
for manually importing sqliteimport and loading a database.
Development
- Migrate the flake8 configuration to
pyproject.tomlusing
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
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 itssansiosubdirectory, which has no__init__.pyfile
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
becausezipimportdoesn'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.txtfile,
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.lzmanamespace.
v0.12.0
v0.11.0
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
FileNotFoundErrorsubclass is now raised when a file isn't found.Previously, a
TypeErrorwas implicitly raised due to the structure of the code.
Documentation
- Add a
CITATION.cfffile.
v0.10.0
v0.9.0
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
v0.7.0
v0.6.0
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 compilecommand 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
Python support
- Support PyPy 3.11.
Added
-
Add initial support for bundling and loading Python bytecode (
.pycfiles).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
dirhtmlbuilder. - Update the links shown on PyPI.
Development
-
Fix test project regeneration, which broke when Poetry 2 was released.
- Migrate from Poetry to
buildto build the test project wheels. - Pin the regeneration tool dependencies.
- Update the test projects'
pyproject.tomlfiles to use PEP 621 metadata keys.
- Migrate from Poetry to
-
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.