NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1632 most downloaded on PyPI
A simple packaging tool for simple packages.
Last release 18 days ago
16 Sep 2026
Release timing varies
gaps range from 5 weeks to 1.5 years
Some releases are documented
notes for 30 of 54 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
56 releases · first in 2015
Nothing published for this version
- Fix invalid metadata files with Import-Name ( #813 ).
Fix invalid metadata files with Import-Name ( #813 ).
No changes, but a new tag to trigger an upload to PyPI now that twine will accept it.
No changes, but a new tag to trigger an upload to PyPI now that twine will accept it.
One column per quarter.
Nothing published for this version
Nothing published for this version
Bump version: 3.10.0 → 3.10.1
Bump version: 3.10.0 → 3.10.1
The sdist of flit_core now includes the corresponding tests ( PR #704 ). These were missing in 3.10.
Nothing published for this version
Bump version: 3.8.0 → 3.9.0
Bump version: 3.8.0 → 3.9.0
Bump version: 3.7.1 → 3.8.0
Bump version: 3.7.1 → 3.8.0
Bump version: 3.7.0 → 3.7.1
Bump version: 3.7.0 → 3.7.1
Fix building packages which need execution to get the version number, and have a relative import in init.py ( PR #531 ).
Nothing published for this version
Nothing published for this version
- Fix development installs with flit install --symlink and --pth-file , which were broken in 3.5.0, especially for packages using a src folder ( PR #4
Fix development installs with flit install --symlink and --pth-file , which were broken in 3.5.0, especially for packages using a src folder ( PR #472 ).
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Flit 2 is a major architecture change. The flit_core package now provides a PEP 517 backend for building packages, while flit is a command line interf
Flit 2 is a major architecture change. The flit_core package now provides a PEP 517 backend for building packages, while flit is a command line interface extending that.
The build backend works on Python 2, so tools like pip should be able to install packages built with flit from source on Python 2. The flit command requires Python 3.5 or above. You will need to change the build-system table in your pyproject.toml file to look like this:
[build-system] requires = [ "flit_core >=2,<4" ] build-backend = "flit_core.buildapi"
Other changes include:
Support for storing your code under a src/ folder ( PR #260 ). You don’t need to change any configuration if you do this.
Options to control what files are included in an sdist - see Contents of distribution files for the details.
Requirements can specify a URL ‘direct reference’, as an alternative to a version number, with the syntax defined in PEP 440 : requests @ https://example.com/requests-2.22.0.tar.gz .
Fix the shebang of scripts installed with the --python option and the --symlink flag ( PR #286 ).
Installing with --deps develop now installs normal dependencies as well as development dependencies.
Author email is no longer required in the metadata table ( PR #289 ).
More error messages are now shown without a traceback ( PR #254 )
Nothing published for this version
Nothing published for this version
- Fix for building sdists from a subdirectory in a Mercurial repository ( PR #233 ).
Fix for building sdists from a subdirectory in a Mercurial repository ( PR #233 ).
Fix for getting the docstring and version from modules defining their encoding ( PR #239 ).
Fix for installing packages with flit installfrom ( PR #221 ).
Packages with requirements no longer get a spurious Provides-Extra: .none metadata entry ( #228 ).
Better check of whether python-requires includes any Python 2 version ( PR #232 ).
Better check of home page URLs in flit init ( PR #230 ).
Better error message when the description file is not found ( PR #234 ).
Updated a help message to refer to pyproject.toml ( PR #240 ).
Improve tests of flit init ( PR #229 ).
To use flit installfrom , you can install with pip install flit[installfrom] . Note that the installfrom subcommand is deprecated, as it will soon be…
Fix for installing packages with flit install .
Make requests_download an extra dependency, to avoid a circular build dependency. To use flit installfrom , you can install with pip install flit[installfrom] . Note that the installfrom subcommand is deprecated, as it will soon be possible to use pip to install Flit projects directly from a VCS URL.
- Fixes for packages specifying requires-extra : sdists should now work, and environment markers can be used together with requires-extra .
Fixes for packages specifying requires-extra : sdists should now work, and environment markers can be used together with requires-extra .
Fix running flit installfrom without a config file present in the working directory.
The error message for a missing or empty docstring tells you what file the docstring should be in.
Improvements to documentation on version selectors for requirements.
- Packages can now have ‘extras’, specified as requires-extra in the pyproject.toml file . These are additional dependencies for optional features.
Packages can now have ‘extras’, specified as requires-extra in the pyproject.toml file . These are additional dependencies for optional features.
The home-page metadata field is no longer required.
Additional project URLs are now validated.
flit -V is now equivalent to flit --version .
Various improvements to documentation.
- The commands deprecated in 0.13— flit wheel , flit sdist and flit register —have been removed.
The description file may now be written in reStructuredText, Markdown or plain text. The file extension should indicate which of these formats it is ( .rst , .md or .txt ). Previously, only reStructuredText was officially supported.
Multiple links (e.g. documentation, bug tracker) can now be specified in a new [tool.flit.metadata.urls] section of pyproject.toml .
Dependencies are now correctly installed to the target Python when you use the --symlink or --pth-file options.
Dependencies are only installed to the Python where Flit is running if it fails to get the docstring and version number without them.
The commands deprecated in 0.13— flit wheel , flit sdist and flit register —have been removed.
Although version 1.0 sounds like a milestone, there’s nothing that makes this release especially significant. It doesn’t represent a step change in stability or completeness. Flit has been gradually maturing for some time, and I chose this point to end the series of 0.x version numbers.
- Deprecated flit wheel and flit sdist subcommands: use flit build .
Better validation of several metadata fields ( dist-name , requires , requires-python , home-page ), and of the version number.
New FLIT_ALLOW_INVALID environment variable to ignore validation failures in case they go wrong.
The list of valid classifiers is now fetched from Warehouse ( https://pypi.org ), rather than the older https://pypi.python.org site.
Deprecated flit wheel and flit sdist subcommands: use flit build .
Deprecated flit register : you can no longer register a package separately from uploading it.
- Fix building and installing packages with a - in the distribution name.
Fix building and installing packages with a - in the distribution name.
Fix numbering in README.
- New tool to convert flit.ini to pyproject.toml :
New tool to convert flit.ini to pyproject.toml :
python3 - m flit . tomlify
Use the PAX tar format for sdists, as specified by PEP 517.
- Restore dependency on zipfile36 backport package.
Restore dependency on zipfile36 backport package.
Add some missing options to documentation of flit install subcommand.
Rearrange environment variables in the docs.
- Switch the config to pyproject.toml by default instead of flit.ini , and implement the PEP 517 API.
Switch the config to pyproject.toml by default instead of flit.ini , and implement the PEP 517 API.
A new option --pth-file allows for development installation on Windows (where --symlink usually won’t work).
Normalise file permissions in the zip file, making builds more reproducible across different systems.
Sdists (.tar.gz packages) can now also be reproducibly built by setting SOURCE_DATE_EPOCH .
For most modules, Flit can now extract the version number and docstring without importing it. It will still fall back to importing where getting these from the AST fails.
flit build will build the wheel from the sdist, helping to ensure that files aren’t left out of the sdist.
All list fields in the INI file now ignore blank lines ( requires , dev-requires , classifiers ).
Fix the path separator in the RECORD file of a wheel built on Windows.
Some minor fixes to building reproducible wheels.
If building a wheel fails, the temporary file created will be cleaned up.
Various improvements to docs and README.
- Explicitly open various files as UTF-8, rather than relying on locale encoding.
Explicitly open various files as UTF-8, rather than relying on locale encoding.
Link to docs from README.
Better test coverage, and a few minor fixes for problems revealed by tests.
- Fixed a bug causing failed uploads when the password is entered in the terminal.
Fixed a bug causing failed uploads when the password is entered in the terminal.
- A couple of behaviour changes when uploading to warehouse.
A couple of behaviour changes when uploading to warehouse.
- Fixed a bug when you use flit to build an sdist from a subdirectory inside a VCS checkout. The VCS is now correctly detected.
Fixed a bug when you use flit to build an sdist from a subdirectory inside a VCS checkout. The VCS is now correctly detected.
Fix the rst checker for newer versions of docutils, by upgrading the bundled copy of readme_renderer.
- Flit can now build sdists (tarballs) and upload them to PyPI, if your code is in a git or mercurial repository. There are new commands:
Flit can now build sdists (tarballs) and upload them to PyPI, if your code is in a git or mercurial repository. There are new commands:
flit build builds both a wheel and an sdist.
flit publish builds and uploads a wheel and an sdist.
Smarter ways of getting the information needed for upload:
If you have the keyring package installed, flit can use it to store your password, rather than keeping it in plain text in ~/.pypirc .
If ~/.pypirc does not already exist, and you are prompted for your username, flit will write it into that file.
You can provide the information as environment variables: FLIT_USERNAME , FLIT_PASSWORD and FLIT_INDEX_URL . Use this to upload packages from a CI service, for instance.
Include ‘LICENSE’ or ‘COPYING’ files in wheels.
Fix for flit install --symlink inside a virtualenv.
- Downstream packagers can use the FLIT_NO_NETWORK environment variable to stop flit downloading data from the network.
Downstream packagers can use the FLIT_NO_NETWORK environment variable to stop flit downloading data from the network.
- flit install and flit installfrom now take an optional --python argument, with the path to the Python executable you want to install it for. Using t
flit install and flit installfrom now take an optional --python argument, with the path to the Python executable you want to install it for. Using this, you can install modules to Python 2.
Installing a module normally (without --symlink ) builds a wheel and uses pip to install it, which should work better in some corner cases.
Nothing published for this version
- A new flit installfrom subcommand to install a project from a source archive, such as from GitHub.
A new flit installfrom subcommand to install a project from a source archive, such as from GitHub.
Reproducible builds - you can produce byte-for-byte identical wheels.
A warning for non-canonical version numbers according to PEP 440 .
Fix for installing projects on Windows.
Better error message when module docstring is only whitespace.
Nothing published for this version
Nothing published for this version
- A new dev-requires field in the config file for development requirements, used when doing flit install .
A new dev-requires field in the config file for development requirements, used when doing flit install .
Added a --deps option for flit install to control which dependencies are installed.
Flit can now be invoked with python -m flit .
- flit install now ensures requirements specified in flit.ini are installed, using pip.
flit install now ensures requirements specified in flit.ini are installed, using pip.
If you specify a description file, flit now warns you if it’s not valid reStructuredText (since invalid reStructuredText is treated as plain text on PyPI).
Improved the error message for mis-spelled keys in flit.ini .
Nothing published for this version
- A new flit init command to quickly define the essential basic metadata for a package.
A new flit init command to quickly define the essential basic metadata for a package.
Support for entry points.
A new flit register command to register a package without uploading it, for when you want to claim a name before you’re ready to release.
Added a --repository option for specifying an alternative PyPI instance.
Added a --debug flag to show debug-level log messages.
Better error messages when the module docstring or version is missing.
- Users can now specify dist-name in the config file if they need to use different names on PyPI and for imports.
Users can now specify dist-name in the config file if they need to use different names on PyPI and for imports.
Classifiers are now checked against a locally cached list of valid classifiers.
Packages can be locally installed into environments for development.
Local installation now creates a PEP 376 .dist-info folder instead of .egg-info .
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →