Changelog#
This project follows the semantic versioning and pre-release versioning schemes recommended by the Python Packaging Authority.
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#
Twine 4.0.0 (2022-03-31)#
Features#
Bugfixes#
Twine 3.8.0 (2022-02-02)#
Features#
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#
Bugfixes#
Twine 3.4.2 (2021-07-20)#
Bugfixes#
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#
Twine 3.3.0 (2020-12-23)#
Features#
Bugfixes#
Improved Documentation#
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
orhttps
(#602)Add type annotations, checked with mypy, with PEP 561 support for users of Twine’s API (#231)
Bugfixes#
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, usekeyring --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#
Bugfixes#
Fail more gracefully when encountering bad metadata (#341)
Twine 1.13.0 (2019-02-13)#
Features#
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#
Bugfixes#
Avoid MD5 when Python is compiled in FIPS mode (#367)
Twine 1.11.0 (2018-03-19)#
Features#
Bugfixes#
Misc#
Twine 1.10.0 (2018-03-07)#
Features#
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
, notstderr
(#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#
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.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 usepython -m pip install twine[with-blake2]
to havepyblake2
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#
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#
Twine 1.6.3 (2015-10-05)#
Bugfixes#
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
.pypirc
(#97)Support registering new packages with
twine register
(#8)Add the
--skip-existing
flag totwine 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#
Twine 1.5.0 (2015-03-10)#
Features#
Support commands not named “gpg” for signing (#29)
Bugfixes#
Misc#
Add lower-limit to requests dependency
Twine 1.4.0 (2014-12-12)#
Features#
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.