All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to PEP 440.
- Correctly parse source distribution names with hyphens, since setuptools does not produce normalised names. See pypa/setuptools#3593.
s3pypi delete
command to delete packages from S3.s3pypi force-unlock
command to release a stuck lock in DynamoDB.--locks-table
option to customise the DynamoDB table name used for locking.
- Moved default command to
s3pypi upload
. - Renamed
--unsafe-s3-website
option to--index.html
.
--acl
option. Use--s3-put-args='ACL=...'
instead. The use of ACLs is discouraged.--lock-indexes
option. Locking is enabled automatically if a DynamoDB table exists.
--put-root-index
combined with--prefix
builds the index page of that prefix.
--strict
option to fail when trying to upload existing files.
- Require Python 3.8 or greater.
- Fail when a distribution package doesn't exist.
- Allow uploading source distributions with
.tar.bz2
,.tar.xz
, and.zip
extensions.
- Require Python 3.7 or greater.
- SHA-256 checksums in URLs. @andrei-shabanski
--no-sign-request
option to disable S3 authentication. @jaustinpage- Expand glob patterns in case they were not expanded by a shell. @jaustinpage
--s3-endpoint-url
option for targeting a custom S3 endpoint.
- Terraform config for an optional DynamoDB table used for distributed locking.
--lock-indexes
option to lock index objects in S3 using said DynamoDB table.--put-root-index
option to write a root index that lists all package names.
- Set CloudFront default root object to
index.html
.
- Terraform configuration for S3 and CloudFront, including optional basic authentication using Lambda@Edge and AWS Systems Manager Parameter Store. Instructions for migrating from CloudFormation are in the README.
--s3-put-args
option for passing extra arguments to S3 PutObject calls. Example:--s3-put-args='ServerSideEncryption=aws:kms,SSEKMSKeyId=1234...'
- CLI arguments have been overhauled. See
s3pypi --help
for details. - The default behaviour for uploading index pages has changed. Previously, they would
be placed under the
<package>/index.html
key in S3, which could be changed to<package>/
using the--bare
option. This has now been reversed: the default key is<package>/
, and an option--unsafe-s3-website
was added to appendindex.html
. This new behaviour assumes that CloudFront uses the S3 REST API endpoint as its origin, not the S3 website endpoint. This allows the bucket to remain private, with CloudFront accessing it through an Origin Access Identity (OAI). The new Terraform configuration includes such an OAI by default. To keep using the old configuration, packages must be uploaded with--unsafe-s3-website --acl public-read
. This is not recommended, because the files will be publicly accessible!
- Python 2 support.
- Automatic creation of distributions. From now on, distributions must be created using a separate build command. See the README for an example.
- The
--private
option. The default ACL is nowprivate
, and you can pass a different one using the--acl
option. - CloudFormation templates (replaced by Terraform configuration).
- Jinja2 dependency.
- New
--acl
option, mutually exclusive with--private
. @marcelgwerder
- Preserve existing files of the same version in the index when uploading with
--force
. @natefoo
- Support
--dist-path
with only a wheel package present. @takacsd