- [Feature] #319: Support Metadata 2.1 (PEP 566), including Markdown
- [Feature] #320: Remove PyPI as default
- [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
- [Support] #318: Update PyPI URLs.
- [Support] #314: Add new maintainer, release checklists.
- [Support] #277: Add instructions on how to use keyring.
- [Feature] #256: Improve progressbar
- [Feature] #257: Declare support for Python 3.6
- [Feature] #303: Revise docs predicting future of
- [Feature] #296: Add architecture overview to docs
- [Feature] #295: Add doc building instructions
- [Feature] #46: Link to changelog from
- [Feature] #304: Reorganize & improve user & developer documentation.
- [Bug] #265: Fix
- [Bug] #268: Print progress to
- [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
- [Bug] #315: Degrade gracefully when keyring is unavailable
[Support]: Check if a package exists if the URL is one of:
This helps people with
https://upload.pypi.iostill in their
[Support]: Fix precedence of
--repository. See also [Bug] #206:
--skip-existingwhen 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.blake2bon 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
[Feature] #171: Generate Blake2b 256 digests for packages if
pyblake2is installed. Users can use
python -m pip install twine[with-blake2]to have
pyblake2installed with Twine.
[Feature] #166: Allow the Repository URL to be provided on the command-line (
--repository-url) or via an environment variable (
[Feature] #144: Retrieve configuration from the environment as a default.
- Repository URL will default to
- Username will default to
- Password will default to
- 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
[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.
- [Bug]: Correct a packaging error.
- [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.
- [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-existingto work for 409 status codes.
- [Feature] #152: Add progress bar to uploads.
- [Feature] #142: Support
--client-certcommand-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.
[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.
- [Feature] #8: Support registering new packages with
- [Feature] #115: Add the
twine uploadto allow users to skip releases that already exist on PyPI.
- [Feature] #97: Allow the user to specify the location of their
- [Feature] #104: Large file support via the
- [Feature] #106: Upload wheels first to PyPI
- [Bug] #111: Provide more helpful messages if
.pypircis out of date.
- [Bug] #116: Work around problems with Windows when using
- [Bug] #114: Warnings triggered by pkginfo searching for
PKG-INFOfiles should no longer be user visible.
- [Bug] #92: Raise an exception on redirects
- [Feature] #6: Switch to a git style dispatching for the commands to enable simpler commands and programmatic invocation.
- [Feature] #13: Parse
~/.pypircourselves and use
subprocessinstead of the
- [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_resourcesto load registered commands
- [Bug] #34: List registered commands in help text
- [Bug] #28: Prevent ResourceWarning from being shown
- [Feature]: Additional functionality.
- [Feature]: Basic functionality.