Change log¶
0.8.3 (2024-02-22)¶
Improved error reporting from LTD Keeper API responses for common scenarios and direct the user to contact dm-docs-support on the LSSTC Slack.
0.8.2 (2024-02-22)¶
Removed usage of
pkg_resourcesfor better compatibility with Python 3.12 environments.Fixed internal typing issues.
Updated the GitHub Actions workflows.
0.8.1 (2021-09-27)¶
Fix parsing of the
GITHUB_HEAD_REFenvironment variable in GitHub Actions.
0.8.0 (2021-09-15)¶
The
ltd uploadcommand now works in pull requests workflows on GitHub Actions.
0.7.0 (2020-09-01)¶
This release focuses on infrastructure improvements, and should not have a significant impact on users.
This tool is officially tested and supported on Python 3.7 and 3.8. Python 3.6 is no longer officially supported.
Removed pins on third-party dependencies, including boto3, requests, uritemplate, and click. In doing so, LTD Conveyor is easier to integrate into your existing Python environment.
We have migrated from Travis CI to GitHub Actions for testing, linting, documentation builds and deployment, and deployments to PyPI. In addition to on-demand testing, GitHub Actions tests the package on a daily basis to ensure compatibility with third-party dependencies.
Internally, we use tox for running tests, linters, and to build documentation. tox makes it possible for local test runs to use the same set up as CI.
The codebase is now automatically formatted with black and isort. By using pre-commit, we ensure that formatting is always applied.
The codebase now has type annotations, which are tested with mypy. Type annotations help ensure that APIs are explicitly defined and correctly used.
0.6.1 (2020-02-23)¶
Bugs fixed¶
The
--ghoption forltd uploadnow supports tag and PR events, in addition to branches.
0.6.0 (2020-02-20)¶
New features¶
Added a
--ghoption to theltd uploadcommand to support usage in GitHub Actions.
0.5.0 (2020-02-05)¶
New features¶
LTD Conveyor can now upload new builds to S3 using Amazon’s S3’s presigned POST URL feature. This means that clients no longer need credentials for S3 — the LTD Keeper API server generates presigned POST URLs as part of the
POST /products/<product>/builds/build registration step.The
ltdcommand now uses the presigned POST-based URLs. The--aws-idand--aws-secretoptions have been removed, but the--userand--passwordoptions remain. If you use environment variables, there should be no change in how you useltd upload(aside from not needing the$LTD_AWS_IDand$LTD_AWS_SECRETenvironment variables).
Bugs fixed¶
In INFO-level and higher logging, the module path isn’t displayed. Module paths are only shown in DEBUG-level logging where it’s most useful.
Other changes¶
Packaging is now done through a
setup.cfgfile and apyproject.tomlfile (PEP 518).Updated Travis CI configuration to test with Python 3.8; also refactored the CI Pipeline with Travis CI stages.
0.4.2 (2018-10-09)¶
Bugs fixed¶
Fixed a bug where
ltdconveyor.s3.delete_dir, since 0.4.1, would raise aTypeErrorwhile deleting an empty directory (no objects in the S3 prefix).
0.4.1 (2018-10-08)¶
Bugs fixed¶
Fixed a bug where
ltdconveyor.s3.delete_dirwould fail if there are more than 1000 objects under a path prefix that is being deleted.Fixed title of the project in the documentation by updating to use a Documenteer-based Sphinx set up.
0.4.0 (2018-04-17)¶
New features¶
Added a new command-line app,
ltd, that provides subcommands for clients to work with the LSST the Docs API. This app is implemented with Click, and its documentation is automatically generated from the command-line help withsphinx-click.The first subcommand is
ltd upload, which lets a client upload a site to LTD as a new build. This command includes special features for using the client from Travis CI (ltd upload --travisoption) to populate the version information from the Travis environment. Other flags allowltd uploadto become a no-op under certain circumstances (for example, skip uploads on pull requests) or arbitrarily (setltd upload --skiporexport LTD_SKIP_UPLOAD=true).With this feature, LTD Conveyor effectively deprecates LTD Mason. LTD Mason was the original uploader for LSST the Docs, but it was also designed around the idea of building the
LSST Science Pipelinesdocumentation as well (hence the term “mason”). Over time, we realized it is better to have a general purpose client and uploader for LSST the Docs (LTD Conveyor) and a dedicated tool for assembling the multi-package Sphinx documentation site (Documenteer).Added the
ltdconveyor.keepersubpackage that widens the scope of LTD Conveyor to be a full-service library for building LTD clients, not just an S3 upload client.The
ltdconveyor.keeper.login.get_keeper_tokenfunction lets you obtain a temporary auth token for the LTD Keeper API.The
ltdconveyor.keeper.buildmodule includes functions for performing the build upload handshake with the LTD Keeper API.
Other changes¶
Removed Python 2.7 and 3.4 compatibility. Now the codebase is entirely Python 3 (3.5, 3.6)-oriented.
Completely reorganized Python namespace. Now all S3 APIs are in
ltdconveyor.s3. Fastly APIs are available fromltdconveyor.fastly.Switched to using
setuptools_scmto generate version strings for releases.Switched to using
extras_requirefor development dependencies (pip install -e ".[dev]"). This lets us exclusively coordinate dependencies insetup.py.Enable testing via
python setup.py test. Also upgrade the testing stack topytest3.5 andpytest-flake81.0.Compatibility updates to the Sphinx documentation infrastructure.
Default to
acl=Noneto support more AWS IAM users. It turns out that not all IAM users withPutObjectpermissions also have permissions to set theACLfor an object. We want to make it possible for many lightweight IAM users to upload to restricted sub-directories of thelsst-the-docsbucket, but it seems hard to make these users ACL grantees too. We now seek an alternative:The
lsst-the-docsbucket now has a PublicRead bucket policyNo ACL is set on individual objects.
Bugs fixed¶
Changed assertions to
RuntimeErrors. Assertions shouldn’t be used to raise exceptions in production code.
0.3.1 (2017-03-27)¶
New features¶
Add
open_bucketfunction. This provides a convenient API for getting a boto3 bucket resource, particularly for clients that use the upload_object and upload_file APIs directly that take a bucket only.
0.3.0 (2017-02-20)¶
New features¶
Added
content_typeparameter toupload_objectso that a user can specifytext/htmlfor an HTML upload. Theupload_file/upload_dirfunctions avoid this problem by using Python’smimetypeslibrary to guess the encoding, butupload_objectis lower-level and warrants having the user explicitly provide the content type.Refactored new function
create_dir_redirect_object. This code used to be insideupload_dir, but in LTD Dasher it seems necessary to upload files one at a time, and thus it’s necessary to directly create these directory redirect objects.
Bugs fixed¶
Fix issue where
'..'shows up in directory names (seen when doingupload_dirwithLTD Dasherasset directories).
0.2.0 (2017-02-02)¶
New features¶
Ported Fastly
purge_keyfunction from LTD Keeper. Any LTD application that uploads objects to S3 might also need to purge Fastly CDN caches. This purge capability is presented as a simple function.
0.1.0 (2017-01-25)¶
New features¶
Port S3 codebase from LTD Mason. The purpose of LTD Conveyor is to provide a set of common S3 APIs that can be used from both client (uploading docs from CI) and server (LTD Keeper) settings.