Changelog¶
3.2.0 2020-06-24
- [Feature] #231: Add type annotations, checked with mypy, with PEP 561 support for users of Twine’s API
- [Feature] #602: Require repository URL scheme to be
http
orhttps
- [Feature] #652: Print packages and signatures to be uploaded when using
--verbose
option - [Feature] #649: Use red text when printing errors on the command line
- [Feature] #666: Improve display of HTTP errors during upload
- [Bug] #601: Clarify error messages for archive format
- [Bug] #611: Fix inaccurate retry message during
upload
- [Bug] #612: Don’t raise an exception when Python version can’t be parsed from filename
- [Bug] #655: Update URL to
.pypirc
specification
3.1.0 2019-11-23
- [Feature] #547: Add support for specifying
--non-interactive
as an environment variable.
3.0.0 2019-11-18
- [Feature] #518: Add Python 3.8 to classifiers.
- [Feature] #524: 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. - [Feature] #489: Add
--non-interactive
flag to abort upload rather than interactively prompt if credentials are missing. - [Feature] #336: When a client certificate is indicated, all password processing is disabled.
- [Bug] #332: More robust handling of server response in
--skip-existing
2.0.0 2019-09-24
1.15.0 2019-09-17
- [Feature] #488: 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.
1.14.0 2019-09-06
1.13.0 2019-02-13
- [Feature] #416: Add Python 3.7 to classifiers.
- [Feature] #418: Support keyring.get_username_and_password.
- [Feature] #419: Support keyring.get_credential.
- [Feature] #426: Allow defining an empty username and password in .pypirc.
- [Feature] #427: Add disable_progress_bar option to disable tqdm.
- [Bug] #408: Fix keyring support.
- [Bug] #412: Don’t crash if there’s no package description.
- [Bug] #421: Remove unnecessary usage of readme_render.markdown.
- [Bug] #428: Fix –skip-existing for Nexus Repos.
- [Bug] #432: Use https URLs everywhere.
- [Bug] #435: Specify python_requires in setup.py
- [Bug] #436: Use modern Python language features.
- [Bug] #444: Use io.StringIO instead of StringIO.
- [Bug] #441: Only install pyblake2 if needed.
- [Bug] #447: Avoid requests-toolbelt to 0.9.0 to prevent attempting to use openssl when it isn’t available.
- [Bug] #452: Restore prompts while retaining support for suppressing prompts.
- [Support] #439: Refactor tox env and travis config.
1.12.0 2018-09-24
1.11.0 2018-03-19
- [Feature] #319: Support Metadata 2.1 (PEP 566), including Markdown
for
description
fields. - [Feature] #320: Remove PyPI as default
register
package index. - [Bug] #322: Raise exception if attempting upload to deprecated legacy PyPI URLs.
- [Bug] #269: Avoid uploading to PyPI when given alternate
repository URL, and require
http://
orhttps://
inrepository_url
. - [Support] #318: Update PyPI URLs.
- [Support] #314: Add new maintainer, release checklists.
- [Support] #277: Add instructions on how to use keyring.
1.10.0 2018-03-07
- [Feature] #256: Improve progressbar
- [Feature] #257: Declare support for Python 3.6
- [Feature] #303: Revise docs predicting future of
twine
- [Feature] #296: Add architecture overview to docs
- [Feature] #295: Add doc building instructions
- [Feature] #46: Link to changelog from
README
- [Feature] #304: Reorganize & improve user & developer documentation.
- [Bug] #265: Fix
--repository[-url]
help text - [Bug] #268: Print progress to
stdout
, notstderr
- [Bug] #297: Fix Read the Docs, tox, Travis configuration
- [Bug] #286: Fix Travis CI and test configuration
- [Bug] #200: Remove obsolete registration guidance
- [Bug] #299: Fix changelog formatting
- [Bug] #298: Fix syntax highlighting in
README
- [Bug] #315: Degrade gracefully when keyring is unavailable
1.9.0 2017-05-22
[Support]: 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.[Support]: Fix precedence of
--repository-url
over--repository
. See also [Bug] #206:[Support]: Fix
--skip-existing
when used to upload a package for the first time. See also [Bug] #220:[Support]: Twine sends less information about the user’s system in the User-Agent string. See also [Bug] #229:
[Support]: Twine will use
hashlib.blake2b
on Python 3.6+ instead of using pyblake2 for Blake2 hashes 256 bit hashes.[Support]: Twine will now resolve passwords using the keyring if available. Module can be required with the
keyring
extra.
1.8.0 2016-08-08
[Feature] #171: Generate Blake2b 256 digests for packages if
pyblake2
is installed. Users can usepython -m pip install twine[with-blake2]
to havepyblake2
installed with Twine.[Feature] #166: Allow the Repository URL to be provided on the command-line (
--repository-url
) or via an environment variable (TWINE_REPOSITORY_URL
).[Feature] #144: Retrieve configuration from the environment as a default.
- Repository URL will default to
TWINE_REPOSITORY
- Username will default to
TWINE_USERNAME
- Password will default to
TWINE_PASSWORD
- Repository URL will default to
[Feature] #201: Switch from upload.pypi.io to upload.pypi.org.
[Support]: Do not generate traffic to Legacy PyPI unless we’re uploading to it or uploading to Warehouse (e.g., pypi.io). This avoids the attempt to upload a package to the index if we can find it on Legacy PyPI already.
[Support]: Warn users if they receive a 500 error when uploading to
*pypi.python.org
[Support]: Stop testing on Python 2.6. 2.6 support will be “best effort” until 2.0.0
[Support]: Generate SHA256 digest for all packages by default.
1.7.4 2016-07-09
- [Bug]: Correct a packaging error.
1.7.3 2016-07-08
- [Bug] #195: 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.
1.7.2 2016-07-05
1.7.0 2016-07-04
- [Feature] #177: Switch Twine to upload to pypi.io instead of pypi.python.org.
- [Feature] #167: Implement retries when the CDN in front of PyPI gives us a 5xx error.
- [Feature] #162: Allow
--skip-existing
to work for 409 status codes. - [Feature] #152: Add progress bar to uploads.
- [Feature] #142: 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. - [Bug] #186: Allow passwords to have
%
s in them.
1.6.4 2015-10-27
1.6.3 2015-10-05
1.6.2 2015-09-28
[Bug] #132: Upload signatures with packages appropriately
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.
1.6.0 2015-09-14
- [Feature] #8: Support registering new packages with
twine register
- [Feature] #115: Add the
--skip-existing
flag totwine upload
to allow users to skip releases that already exist on PyPI. - [Feature] #97: Allow the user to specify the location of their
.pypirc
- [Feature] #104: Large file support via the
requests-toolbelt
- [Feature] #106: Upload wheels first to PyPI
- [Bug] #111: Provide more helpful messages if
.pypirc
is out of date. - [Bug] #116: Work around problems with Windows when using
getpass.getpass
- [Bug] #114: Warnings triggered by pkginfo searching for
PKG-INFO
files should no longer be user visible. - [Bug] #92: Raise an exception on redirects
1.5.0 2015-03-10
1.4.0 2014-12-12
- [Feature] #6: Switch to a git style dispatching for the commands to enable simpler commands and programmatic invocation.
- [Feature] #13: Parse
~/.pypirc
ourselves and usesubprocess
instead of thedistutils.spawn
module. - [Bug] #65: Expand globs and check for existence of dists to upload
- [Bug] #26: Add support for uploading Windows installers
- [Bug] #47: Fix issue uploading packages with
_
s in the name - [Bug] #32: Use
pkg_resources
to load registered commands - [Bug] #34: List registered commands in help text
- [Bug] #28: Prevent ResourceWarning from being shown
1.3.0 2014-03-31
- [Feature]: Additional functionality.
1.2.2 2013-10-03
- [Feature]: Basic functionality.