- [Feature] #547: Add support for specifying
--non-interactiveas an environment variable.
- [Feature] #518: Add Python 3.8 to classifiers.
- [Feature] #524: Twine now unconditionally requires the keyring library
and no longer supports uninstalling
keyringas a means to disable that functionality. Instead, use
keyring --disablekeyring functionality if necessary.
- [Feature] #489: Add
--non-interactiveflag 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
- [Feature] #488: Improved output on
checkcommand: 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.
- [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.
- [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.