diff options
Diffstat (limited to 'doc/history.rst')
-rw-r--r-- | doc/history.rst | 497 |
1 files changed, 497 insertions, 0 deletions
diff --git a/doc/history.rst b/doc/history.rst new file mode 100644 index 0000000..e04e1fb --- /dev/null +++ b/doc/history.rst @@ -0,0 +1,497 @@ +Release history +=============== + +Version 3.8 +----------- + +- A project name containing hyphens is now automatically translated to use + underscores for the import name (:ghpull:`566`). +- New option :option:`flit install --only-deps` to install the dependencies of + the package, but not the package itself. +- Add support for recursive globbing (``**``) in sdist includes and excludes + (:ghpull:`550`). +- Python's bytecode cache files (``__pycache__`` folders and ``.pyc`` files) + are now always excluded from sdists (:ghpull:`581`). +- Use tomllib in Python 3.11, rather than tomli (:ghpull:`573`, :ghpull:`604`). +- Fix crash when unable to get a password from ``keyring`` (:ghpull:`567`). +- Fix including modified files in sdist when using Mercurial (:ghpull:`541`). +- Fix for some cases of determining whether a package supports Python 2 or not + (:ghpull:`593`). +- Fix parsing version number from code using multiple assignments (:ghpull:`474`). +- Document how to use a PyPI token with :envvar:`FLIT_PASSWORD` (:ghpull:`602`). +- Fix link to information about environment variables for pip (:ghpull:`576`). +- Link to the docs for the latest stable version in package metadata + (:ghpull:`589`). +- Remove a mention of the ``toml`` package, which is no longer needed, from the + :doc:`development` page (:ghpull:`601`). +- The :doc:`bootstrap <bootstrap>` install script for ``flit_core`` accepts a + new ``--install-root`` option. +- Ensure the license file is included in packages on PyPI (:ghpull:`603`). + +Version 3.7.1 +------------- + +- Fix building packages which need execution to get the version number, + and have a relative import in ``__init__.py`` (:ghpull:`531`). + +Version 3.7 +----------- + +- Support for :ref:`external data files <pyproject_toml_external_data>` such + as man pages or Jupyter extension support files (:ghpull:`510`). +- Project names are now lowercase in wheel filenames and ``.dist-info`` folder + names, in line with the specifications (:ghpull:`498`). +- Improved support for :doc:`bootstrapping <bootstrap>` a Python environment, + e.g. for downstream packagers (:ghpull:`511`). ``flit_core.wheel`` is usable + with ``python -m`` to create wheels before the `build <https://pypi.org/project/build/>`_ + tool is available, and ``flit_core`` sdists also include a script to install + itself from a wheel before `installer <https://pypi.org/project/installer/>`_ + is available. +- Use newer importlib APIs, fixing some deprecation warnings (:ghpull:`499`). + +Version 3.6 +----------- + +- ``flit_core`` now bundles the `tomli <https://pypi.org/project/tomli/>`_ TOML + parser library (version 1.2.3) to avoid a circular dependency between + ``flit_core`` and ``tomli`` (:ghpull:`492`). This means ``flit_core`` now has + no dependencies except Python itself, both at build time and at runtime, + simplifying :doc:`bootstrapping <bootstrap>`. + +Version 3.5.1 +------------- + +- Fix development installs with ``flit install --symlink`` and ``--pth-file``, + which were broken in 3.5.0, especially for packages using a ``src`` folder + (:ghpull:`472`). + +Version 3.5 +----------- + +- You can now use Flit to distribute a module or package inside a namespace + package (as defined by :pep:`420`). To do this, specify the import name of the + concrete, inner module you are packaging - e.g. ``name = "sphinxcontrib.foo"`` + - either in the ``[project]`` table, or under ``[tool.flit.module]`` if you + want to use a different name on PyPI (:ghpull:`468`). +- Flit no longer generates a ``setup.py`` file in sdists (``.tar.gz`` packages) + by default (:ghpull:`462`). Modern packaging tools don't need this. You can + use the ``--setup-py`` flag to keep adding it for now, but this will probably + be removed at some point in the future. +- Fixed how ``flit init`` handles authors' names with non-ASCII characters + (:ghpull:`460`). +- When ``flit init`` generates a LICENSE file, the new ``pyproject.toml`` now + references it (:ghpull:`467`). + +Version 3.4 +----------- + +- Python 3.6 or above is now required, both for ``flit`` and ``flit_core``. +- Add a ``--setup-py`` option to ``flit build`` and ``flit publish``, and a + warning when neither this nor ``--no-setup-py`` are specified (:ghpull:`431`). + A future version will stop generating ``setup.py`` files in sdists by default. +- Add support for standardised editable installs - ``pip install -e`` - + according to :pep:`660` (:ghpull:`400`). +- Add a ``--pypirc`` option for ``flit publish`` to specify an alternative path + to a ``.pypirc`` config file describing package indexes (:ghpull:`434`). +- Fix installing dependencies specified in a ``[project]`` table (:ghpull:`433`). +- Fix building wheels when ``SOURCE_DATE_EPOCH`` (see :doc:`reproducible`) is + set to a date before 1980 (:ghpull:`448`). +- Switch to using the `tomli <https://pypi.org/project/tomli/>`_ TOML parser, + in common with other packaging projects (:ghpull:`438`). + This supports TOML version 1.0. +- Add a document on :doc:`bootstrap` (:ghpull:`441`). + +Version 3.3 +----------- + +- ``PKG-INFO`` files in sdists are now generated the same way as ``METADATA`` in + wheels, fixing some issues with sdists (:ghpull:`410`). +- ``flit publish`` now sends SHA-256 hashes, fixing uploads to GitLab package + repositories (:ghpull:`416`). +- The ``[project]`` metadata table from :pep:`621` is now fully supported and + :ref:`documented <pyproject_toml_project>`. Projects using this can now + specify ``requires = ["flit_core >=3.2,<4"]`` in the ``[build-system]`` table. + +Version 3.2 +----------- + +- Experimental support for specifying metadata in a ``[project]`` table in + ``pyproject.toml`` as specified by :pep:`621` (:ghpull:`393`). If you try + using this, please specify ``requires = ["flit_core >=3.2.0,<3.3"]`` in the + ``[build-system]`` table for now, in case it needs to change for the next + release. +- Fix writing METADATA file with multi-line information in certain fields + such as ``Author`` (:ghpull:`402`). +- Fix building wheel when a directory such as LICENSES appears in the project + root directory (:ghpull:`401`). + +Version 3.1 +----------- + +- Update handling of names & version numbers in wheel filenames and + ``.dist-info`` folders in line with changes in the specs (:ghpull:`395`). +- Switch from the deprecated ``pytoml`` package to ``toml`` (:ghpull:`378`). +- Fix specifying backend-path in ``pyproject.toml`` for flit-core (as a list + instead of a string). + +Version 3.0 +----------- + +Breaking changes: + +- Projects must now provide Flit with information in ``pyproject.toml`` files, + not the older ``flit.ini`` format (:ghpull:`338`). +- ``flit_core`` once again requires Python 3 (>=3.4). Packages that support + Python 2 can still be built by ``flit_core`` 2.x, but can't rely on new + features (:ghpull:`342`). +- The deprecated ``flit installfrom`` command was removed (:ghpull:`334`). + You can use ``pip install git+https://github.com/...`` instead. + +Features and fixes: + +- Fix building sdists from a git repository with non-ASCII characters in + filenames (:ghpull:`346`). +- Fix identifying the version number when the code contains a subscript + assignment before ``__version__ =`` (:ghpull:`348`). +- Script entry points can now use a class method (:ghpull:`359`). +- Set suitable permission bits on metadata files in wheels (:ghpull:`256`). +- Fixed line endings in the ``RECORD`` file when installing on Windows + (:ghpull:`368`). +- Support for recording the source of local installations, as in :pep:`610` + (:ghpull:`335`). +- ``flit init`` will check for a README in the root of the project and + automatically set it as ``description-file`` (:ghpull:`337`). +- Pygments is not required for checking reStructuredText READMEs (:ghpull:`357`). +- Packages where the version number can be recognised without executing their + code don't need their dependencies installed to build, which should make them + build faster (:ghpull:`361`). +- Ensure the installed ``RECORD`` file is predictably ordered (:ghpull:`366`). + +Version 2.3 +----------- + +- New projects created with :ref:`init_cmd` now declare that they require + ``flit_core >=2,<4`` (:ghpull:`328`). Any projects using ``pyproject.toml`` + (not ``flit.ini``) should be compatible with flit 3.x. +- Fix selecting files from a git submodule to include in an sdist + (:ghpull:`324`). +- Fix checking classifiers when no writeable cache directory is available + (:ghpull:`319`). +- Better errors when trying to install to a mis-spelled or missing Python + interpreter (:ghpull:`331`). +- Fix specifying ``--repository`` before ``upload`` (:ghpull:`322`). Passing the + option like this is deprecated, and you should now pass it after ``upload``. +- Documentation improvements (:ghpull:`327`, :ghpull:`318`, :ghpull:`314`) + +Version 2.2 +----------- + +- Allow underscores in package names with Python 2 (:ghpull:`305`). +- Add a ``--no-setup-py`` option to build sdists without a backwards-compatible + ``setup.py`` file (:ghpull:`311`). +- Fix the generated ``setup.py`` file for packages using a ``src/`` layout + (:ghpull:`303`). +- Fix detecting when more than one file matches the module name specified + (:ghpull:`307`). +- Fix installing to a venv on Windows with the ``--python`` option + (:ghpull:`300`). +- Don't echo the command in scripts installed with ``--symlink`` or + ``--pth-file`` on Windows (:ghpull:`310`). +- New ``bootstrap_dev.py`` script to set up a development installation of Flit + from the repository (:ghpull:`301`, :ghpull:`306`). + +Version 2.1 +----------- + +- Use compression when adding files to wheels. +- Added the :envvar:`FLIT_INSTALL_PYTHON` environment variable (:ghpull:`295`), + to configure flit to always install into a Python other than the one it's + running on. +- ``flit_core`` uses the ``intreehooks`` shim package to load its bootstrapping + backend, until a released version of pip supports the standard + ``backend-path`` mechanism. + +Version 2.0 +----------- + +Flit 2 is a major architecture change. The ``flit_core`` package now provides +a :pep:`517` backend for building packages, while ``flit`` is a +:doc:`command line interface <cmdline>` 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: + +.. code-block:: toml + + [build-system] + requires = ["flit_core >=2,<4"] + build-backend = "flit_core.buildapi" + +Other changes include: + +- Support for storing your code under a ``src/`` folder (:ghpull:`260`). + You don't need to change any configuration if you do this. +- Options to control what files are included in an sdist - see + :ref:`pyproject_toml_sdist` 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 (:ghpull:`286`). +- Installing with ``--deps develop`` now installs normal dependencies + as well as development dependencies. +- Author email is no longer required in the metadata table (:ghpull:`289`). +- More error messages are now shown without a traceback (:ghpull:`254`) + +Version 1.3 +----------- + +- Fix for building sdists from a subdirectory in a Mercurial repository + (:ghpull:`233`). +- Fix for getting the docstring and version from modules defining their encoding + (:ghpull:`239`). +- Fix for installing packages with ``flit installfrom`` (:ghpull:`221`). +- Packages with requirements no longer get a spurious ``Provides-Extra: .none`` + metadata entry (:ghissue:`228`). +- Better check of whether ``python-requires`` includes any Python 2 version + (:ghpull:`232`). +- Better check of home page URLs in ``flit init`` (:ghpull:`230`). +- Better error message when the description file is not found (:ghpull:`234`). +- Updated a help message to refer to ``pyproject.toml`` (:ghpull:`240`). +- Improve tests of ``flit init`` (:ghpull:`229`). + +Version 1.2.1 +------------- + +- 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. + +Version 1.2 +----------- + +- 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. + +Version 1.1 +----------- + +- Packages can now have 'extras', specified as ``requires-extra`` in the + :doc:`pyproject.toml file <pyproject_toml>`. 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. + +Version 1.0 +----------- + +- 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 :ref:`[tool.flit.metadata.urls] section <pyproject_toml_urls>` 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. + +Version 0.13 +------------ + +- Better validation of several metadata fields (``dist-name``, ``requires``, + ``requires-python``, ``home-page``), and of the version number. +- New :envvar:`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 + :ref:`build_cmd`. +- Deprecated ``flit register``: you can no longer register a package separately + from uploading it. + +Version 0.12.3 +-------------- + +- Fix building and installing packages with a ``-`` in the distribution name. +- Fix numbering in README. + +Version 0.12.2 +-------------- + +- 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. + +Version 0.12.1 +-------------- + +- Restore dependency on ``zipfile36`` backport package. +- Add some missing options to documentation of ``flit install`` subcommand. +- Rearrange environment variables in the docs. + +Version 0.12 +------------ + +- 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 + :envvar:`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. + +Version 0.11.4 +-------------- + +- 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. + +Version 0.11.3 +-------------- + +- Fixed a bug causing failed uploads when the password is entered in the + terminal. + +Version 0.11.2 +-------------- + +- A couple of behaviour changes when uploading to warehouse. + +Version 0.11.1 +-------------- + +- 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. + +Version 0.11 +------------ + +- 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 <https://github.com/jaraco/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: + :envvar:`FLIT_USERNAME`, :envvar:`FLIT_PASSWORD` and :envvar:`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. + + +Version 0.10 +------------ + +- Downstream packagers can use the :envvar:`FLIT_NO_NETWORK` environment + variable to stop flit downloading data from the network. + +Version 0.9 +----------- + +- ``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. + +Version 0.8 +----------- + +- A new ``flit installfrom`` subcommand to install a project from a source + archive, such as from Github. +- :doc:`Reproducible builds <reproducible>` - you can produce byte-for-byte + identical wheels. +- A warning for non-canonical version numbers according to `PEP 440 + <https://www.python.org/dev/peps/pep-0440/>`__. +- Fix for installing projects on Windows. +- Better error message when module docstring is only whitespace. + +Version 0.7 +----------- + +- 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``. + +Version 0.6 +----------- + +- ``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``. + +Version 0.5 +----------- + +- 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. + +Version 0.4 +----------- + +- 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``. |