========= Changelog ========= This project follows the `semantic versioning `_ and `pre-release versioning `_ schemes recommended by the Python Packaging Authority. .. Do *NOT* add changelog entries here! This changelog is managed by towncrier and is built at release time. See https://twine.readthedocs.io/en/latest/contributing.html#changelog-entries for details. .. towncrier release notes start Twine 5.0.0 (2024-02-10) ------------------------ Bugfixes ^^^^^^^^ - Use ``email.message`` instead of ``cgi`` as ``cgi`` has been deprecated (`#969 `_) Misc ^^^^ - `#931 `_, `#991 `_, `#1028 `_, `#1040 `_ Twine 4.0.2 (2022-11-30) ------------------------ Bugfixes ^^^^^^^^ - Remove deprecated function to fix ``twine check`` with pkginfo 1.9.0. (`#941 `_) Twine 4.0.1 (2022-06-01) ------------------------ Bugfixes ^^^^^^^^ - Improve logging when keyring fails. (`#890 `_) - Reconfigure root logger to show all log messages. (`#896 `_) Twine 4.0.0 (2022-03-31) ------------------------ Features ^^^^^^^^ - Drop support for Python 3.6. (`#869 `_) - Use Rich to add color to ``upload`` output. (`#851 `_) - Use Rich to add color to ``check`` output. (`#874 `_) - Use Rich instead of tqdm for upload progress bar. (`#877 `_) Bugfixes ^^^^^^^^ - Remove Twine's dependencies from the ``User-Agent`` header when uploading. (`#871 `_) - Improve detection of disabled BLAKE2 hashing due to FIPS mode. (`#879 `_) - Restore warning for missing ``long_description``. (`#887 `_) Twine 3.8.0 (2022-02-02) ------------------------ Features ^^^^^^^^ - Add ``--verbose`` logging for querying keyring credentials. (`#849 `_) - Log all upload responses with ``--verbose``. (`#859 `_) - Show more helpful error message for invalid metadata. (`#861 `_) Bugfixes ^^^^^^^^ - Require a recent version of urllib3. (`#858 `_) Twine 3.7.1 (2021-12-07) ------------------------ Improved Documentation ^^^^^^^^^^^^^^^^^^^^^^ - Fix broken link to packaging tutorial. (`#844 `_) Twine 3.7.0 (2021-12-01) ------------------------ Features ^^^^^^^^ - Add support for core metadata version 2.2, defined in PEP 643. (`#833 `_) Twine 3.6.0 (2021-11-10) ------------------------ Features ^^^^^^^^ - Add support for Python 3.10. (`#827 `_) Twine 3.5.0 (2021-11-02) ------------------------ Features ^^^^^^^^ - Show more helpful messages for invalid passwords. (`#815 `_) - Allow the ``--skip-existing`` option to work with GCP Artifact Registry. (`#823 `_) Bugfixes ^^^^^^^^ - Add a helpful error message when an upload fails due to missing a trailing slash in the URL. (`#812 `_) - Generalize ``--verbose`` suggestion when an upload fails. (`#817 `_) Twine 3.4.2 (2021-07-20) ------------------------ Bugfixes ^^^^^^^^ - Improve error message for unsupported metadata. (`#755 `_) - Improve error message for a missing config file. (`#770 `_) - Do not include md5_digest or blake2_256_digest if FIPS mode is enabled on the host. This removes those fields from the metadata before sending the metadata to the repository. (`#776 `_) Twine 3.4.1 (2021-03-16) ------------------------ Bugfixes ^^^^^^^^ - Fix a regression that was causing some namespace packages with dots in them fail to upload to PyPI. (`#745 `_) Twine 3.4.0 (2021-03-15) ------------------------ Features ^^^^^^^^ - Prefer importlib.metadata for entry point handling. (`#728 `_) - Rely on importlib_metadata 3.6 for nicer entry point processing. (`#732 `_) - Eliminate dependency on setuptools/pkg_resources and replace with packaging and importlib_metadata. (`#736 `_) Twine 3.3.0 (2020-12-23) ------------------------ Features ^^^^^^^^ - Print files to be uploaded using ``upload --verbose`` (`#670 `_) - Print configuration file location when using ``upload --verbose`` (`#675 `_) - Print source and values of credentials when using ``upload --verbose`` (`#685 `_) - Add support for Python 3.9 (`#708 `_) - Turn warnings into errors when using ``check --strict`` (`#715 `_) Bugfixes ^^^^^^^^ - Make password optional when using ``upload --client-cert`` (`#678 `_) - Support more Nexus versions with ``upload --skip-existing`` (`#693 `_) - Support Gitlab Enterprise with ``upload --skip-existing`` (`#698 `_) - Show a better error message for malformed files (`#714 `_) Improved Documentation ^^^^^^^^^^^^^^^^^^^^^^ - Adopt PSF code of conduct (`#680 `_) - Adopt towncrier for the changleog (`#718 `_) Twine 3.2.0 (2020-06-24) ------------------------ Features ^^^^^^^^ - Improve display of HTTP errors during upload (`#666 `_) - Print packages and signatures to be uploaded when using ``--verbose`` option (`#652 `_) - Use red text when printing errors on the command line (`#649 `_) - Require repository URL scheme to be ``http`` or ``https`` (`#602 `_) - Add type annotations, checked with mypy, with :pep:`561` support for users of Twine's API (`#231 `_) Bugfixes ^^^^^^^^ - Update URL to ``.pypirc`` specification (`#655 `_) - Don't raise an exception when Python version can't be parsed from filename (`#612 `_) - Fix inaccurate retry message during ``upload`` (`#611 `_) - Clarify error messages for archive format (`#601 `_) Twine 3.1.1 (2019-11-27) ------------------------ Bugfixes ^^^^^^^^ - Restore ``--non-interactive`` as a flag not expecting an argument. (`#548 `_) Twine 3.1.0 (2019-11-23) ------------------------ Features ^^^^^^^^ - Add support for specifying ``--non-interactive`` as an environment variable. (`#547 `_) Twine 3.0.0 (2019-11-18) ------------------------ Features ^^^^^^^^ - When a client certificate is indicated, all password processing is disabled. (`#336 `_) - Add ``--non-interactive`` flag to abort upload rather than interactively prompt if credentials are missing. (`#489 `_) - Twine now unconditionally requires the keyring library and no longer supports uninstalling ``keyring`` as a means to disable that functionality. Instead, use ``keyring --disable`` keyring functionality if necessary. (`#524 `_) - Add Python 3.8 to classifiers. (`#518 `_) Bugfixes ^^^^^^^^ - More robust handling of server response in ``--skip-existing`` (`#332 `_) Twine 2.0.0 (2019-09-24) ------------------------ Features ^^^^^^^^ - Twine now requires Python 3.6 or later. Use pip 9 or pin to "twine<2" to install twine on older Python versions. (`#437 `_) Bugfixes ^^^^^^^^ - Require requests 2.20 or later to avoid reported security vulnerabilities in earlier releases. (`#491 `_) Twine 1.15.0 (2019-09-17) ------------------------- Features ^^^^^^^^ - Improved output on ``check`` command: Prints a message when there are no distributions given to check. Improved handling of errors in a distribution's markup, avoiding messages flowing through to the next distribution's errors. (`#488 `_) Twine 1.14.0 (2019-09-06) ------------------------- Features ^^^^^^^^ - Show Warehouse URL after uploading a package (`#459 `_) - Better error handling and gpg2 fallback if gpg not available. (`#456 `_) - Now provide a more meaningful error on redirect during upload. (`#310 `_) Bugfixes ^^^^^^^^ - Fail more gracefully when encountering bad metadata (`#341 `_) Twine 1.13.0 (2019-02-13) ------------------------- Features ^^^^^^^^ - Add disable_progress_bar option to disable tqdm. (`#427 `_) - Allow defining an empty username and password in .pypirc. (`#426 `_) - Support keyring.get_credential. (`#419 `_) - Support keyring.get_username_and_password. (`#418 `_) - Add Python 3.7 to classifiers. (`#416 `_) Bugfixes ^^^^^^^^ - Restore prompts while retaining support for suppressing prompts. (`#452 `_) - Avoid requests-toolbelt to 0.9.0 to prevent attempting to use openssl when it isn't available. (`#447 `_) - Use io.StringIO instead of StringIO. (`#444 `_) - Only install pyblake2 if needed. (`#441 `_) - Use modern Python language features. (`#436 `_) - Specify python_requires in setup.py (`#435 `_) - Use https URLs everywhere. (`#432 `_) - Fix --skip-existing for Nexus Repos. (`#428 `_) - Remove unnecessary usage of readme_render.markdown. (`#421 `_) - Don't crash if there's no package description. (`#412 `_) - Fix keyring support. (`#408 `_) Misc ^^^^ - Refactor tox env and travis config. (`#439 `_) Twine 1.12.1 (2018-09-24) ------------------------- Bugfixes ^^^^^^^^ - Fix regression with upload exit code (`#404 `_) Twine 1.12.0 (2018-09-24) ------------------------- Features ^^^^^^^^ - Add ``twine check`` command to check long description (`#395 `_) - Drop support for Python 3.3 (`#392 `_) - Empower ``--skip-existing`` for Artifactory repositories (`#363 `_) Bugfixes ^^^^^^^^ - Avoid MD5 when Python is compiled in FIPS mode (`#367 `_) Twine 1.11.0 (2018-03-19) ------------------------- Features ^^^^^^^^ - Remove PyPI as default ``register`` package index. (`#320 `_) - Support Metadata 2.1 (:pep:`566`), including Markdown for ``description`` fields. (`#319 `_) Bugfixes ^^^^^^^^ - Raise exception if attempting upload to deprecated legacy PyPI URLs. (`#322 `_) - Avoid uploading to PyPI when given alternate repository URL, and require ``http://`` or ``https://`` in ``repository_url``. (`#269 `_) Misc ^^^^ - `Update PyPI URLs `_. (`#318 `_) - Add new maintainer, release checklists. (`#314 `_) - Add instructions on how to use keyring. (`#277 `_) Twine 1.10.0 (2018-03-07) ------------------------- Features ^^^^^^^^ - Link to changelog from ``README`` (`#46 `_) - Reorganize & improve user & developer documentation. (`#304 `_) - Revise docs predicting future of ``twine`` (`#303 `_) - Add architecture overview to docs (`#296 `_) - Add doc building instructions (`#295 `_) - Declare support for Python 3.6 (`#257 `_) - Improve progressbar (`#256 `_) Bugfixes ^^^^^^^^ - Degrade gracefully when keyring is unavailable (`#315 `_) - Fix changelog formatting (`#299 `_) - Fix syntax highlighting in ``README`` (`#298 `_) - Fix Read the Docs, tox, Travis configuration (`#297 `_) - Fix Travis CI and test configuration (`#286 `_) - Print progress to ``stdout``, not ``stderr`` (`#268 `_) - Fix ``--repository[-url]`` help text (`#265 `_) - Remove obsolete registration guidance (`#200 `_) Twine 1.9.1 (2017-05-27) ------------------------ Bugfixes ^^^^^^^^ - Blacklist known bad versions of Requests. (`#253 `_) Twine 1.9.0 (2017-05-22) ------------------------ Bugfixes ^^^^^^^^ - Twine sends less information about the user's system in the User-Agent string. (`#229 `_) - Fix ``--skip-existing`` when used to upload a package for the first time. (`#220 `_) - Fix precedence of ``--repository-url`` over ``--repository``. (`#206 `_) Misc ^^^^ - Twine will now resolve passwords using the `keyring `_ if available. Module can be required with the ``keyring`` extra. - Twine will use ``hashlib.blake2b`` on Python 3.6+ instead of pyblake2 Twine 1.8.1 (2016-08-09) ------------------------ Misc ^^^^ - Check if a package exists if the URL is one of: * ``https://pypi.python.org/pypi/`` * ``https://upload.pypi.org/`` * ``https://upload.pypi.io/`` This helps people with ``https://upload.pypi.io`` still in their :file:`.pypirc` file. Twine 1.8.0 (2016-08-08) ------------------------ Features ^^^^^^^^ - Switch from upload.pypi.io to upload.pypi.org. (`#201 `_) - Retrieve configuration from the environment as a default. (`#144 `_) * Repository URL will default to ``TWINE_REPOSITORY`` * Username will default to ``TWINE_USERNAME`` * Password will default to ``TWINE_PASSWORD`` - Allow the Repository URL to be provided on the command-line (``--repository-url``) or via an environment variable (``TWINE_REPOSITORY_URL``). (`#166 `_) - Generate Blake2b 256 digests for packages *if* ``pyblake2`` is installed. Users can use ``python -m pip install twine[with-blake2]`` to have ``pyblake2`` installed with Twine. (`#171 `_) Misc ^^^^ - Generate SHA256 digest for all packages by default. - Stop testing on Python 2.6. - Warn users if they receive a 500 error when uploading to ``*pypi.python.org`` (`#199 `_) Twine 1.7.4 (2016-07-09) ------------------------ Bugfixes ^^^^^^^^ - Correct a packaging error. Twine 1.7.3 (2016-07-08) ------------------------ Bugfixes ^^^^^^^^ - Fix uploads to instances of pypiserver using ``--skip-existing``. We were not properly checking the return status code on the response after attempting an upload. (`#195 `_) Misc ^^^^ - Avoid attempts to upload a package if we can find it on Legacy PyPI. Twine 1.7.2 (2016-07-05) ------------------------ Bugfixes ^^^^^^^^ - Fix issue where we were checking the existence of packages even if the user didn't specify ``--skip-existing``. (`#189 `_) (`#191 `_) Twine 1.7.1 (2016-07-05) ------------------------ Bugfixes ^^^^^^^^ - Clint was not specified in the wheel metadata as a dependency. (`#187 `_) Twine 1.7.0 (2016-07-04) ------------------------ Features ^^^^^^^^ - Support ``--cert`` and ``--client-cert`` command-line flags and config file options for feature parity with pip. This allows users to verify connections to servers other than PyPI (e.g., local package repositories) with different certificates. (`#142 `_) - Add progress bar to uploads. (`#152 `_) - Allow ``--skip-existing`` to work for 409 status codes. (`#162 `_) - Implement retries when the CDN in front of PyPI gives us a 5xx error. (`#167 `_) - Switch Twine to upload to pypi.io instead of pypi.python.org. (`#177 `_) Bugfixes ^^^^^^^^ - Allow passwords to have ``%``\ s in them. (`#186 `_) Twine 1.6.5 (2015-12-16) ------------------------ Bugfixes ^^^^^^^^ - Bump requests-toolbelt version to ensure we avoid ConnectionErrors (`#155 `_) Twine 1.6.4 (2015-10-27) ------------------------ Bugfixes ^^^^^^^^ - Paths with hyphens in them break the Wheel regular expression. (`#145 `_) - Exception while accessing the ``repository`` key (sic) when raising a redirect exception. (`#146 `_) Twine 1.6.3 (2015-10-05) ------------------------ Bugfixes ^^^^^^^^ - Fix uploading signatures causing a 500 error after large file support was added. (`#137 `_, `#140 `_) Twine 1.6.2 (2015-09-28) ------------------------ Bugfixes ^^^^^^^^ - Upload signatures with packages appropriately (`#132 `_) As part of the refactor for the 1.6.0 release, we were using the wrong name to find the signature file. This also uncovered a bug where if you're using twine in a situation where ``*`` is not expanded by your shell, we might also miss uploading signatures to PyPI. Both were fixed as part of this. Twine 1.6.1 (2015-09-18) ------------------------ Bugfixes ^^^^^^^^ - Fix signing support for uploads (`#130 `_) Twine 1.6.0 (2015-09-14) ------------------------ Features ^^^^^^^^ - Allow the user to specify the location of their :file:`.pypirc` (`#97 `_) - Support registering new packages with ``twine register`` (`#8 `_) - Add the ``--skip-existing`` flag to ``twine upload`` to allow users to skip releases that already exist on PyPI. (`#115 `_) - Upload wheels first to PyPI (`#106 `_) - Large file support via the ``requests-toolbelt`` (`#104 `_) Bugfixes ^^^^^^^^ - Raise an exception on redirects (`#92 `_) - Work around problems with Windows when using ``getpass.getpass`` (`#116 `_) - Warnings triggered by pkginfo searching for ``PKG-INFO`` files should no longer be user visible. (`#114 `_) - Provide more helpful messages if :file:`.pypirc` is out of date. (`#111 `_) Twine 1.5.0 (2015-03-10) ------------------------ Features ^^^^^^^^ - Support commands not named "gpg" for signing (`#29 `_) Bugfixes ^^^^^^^^ - Display information about the version of setuptools installed (`#85 `_) - Support deprecated pypirc file format (`#61 `_) Misc ^^^^ - Add lower-limit to requests dependency Twine 1.4.0 (2014-12-12) ------------------------ Features ^^^^^^^^ - Switch to a git style dispatching for the commands to enable simpler commands and programmatic invocation. (`#6 `_) - Parse :file:`~/.pypirc` ourselves and use ``subprocess`` instead of the ``distutils.spawn`` module. (`#13 `_) Bugfixes ^^^^^^^^ - Expand globs and check for existence of dists to upload (`#65 `_) - Fix issue uploading packages with ``_``\ s in the name (`#47 `_) - List registered commands in help text (`#34 `_) - Use ``pkg_resources`` to load registered commands (`#32 `_) - Prevent ResourceWarning from being shown (`#28 `_) - Add support for uploading Windows installers (`#26 `_) Twine 1.3.0 (2014-03-31) ------------------------ Features ^^^^^^^^ - Additional functionality. Twine 1.2.2 (2013-10-03) ------------------------ Features ^^^^^^^^ - Basic functionality.