See the fragment files in the changelog.d directory.
- Fix docker build.
- Use Python 3.12.6.
- Use
uv
to manage the project environment.
- Update dependencies.
- Describe application version in
pyproject.toml
.
- Use Python 3.12.5.
- Update dependencies.
- Use Python 3.12.4.
- Update dependencies.
- Use Python 3.12.3.
- Replace
pip
,pip-tools
andvirtualenv
withuv
. - Update dependencies.
- Update dependencies.
- Adjusted server tolenace to more frequent keepalive pings, mitigating
ENHANCE_YOUR_CALM
errors by allowing shorter intervals between pings.
- Replace bandit with Ruff's flake8-bandit rules.
- Automate the build and plublishing of the container image to GitHub Container Registry.
- Pass arguments to atool using a list, allowing transfer names to contain spaces. See issue #449 for more details.
- Use Python 3.12.2.
- Update dependencies.
- Publish to PyPI with Trusted Publishing.
- Update dependencies.
- Use Python 3.12.1.
- Update dependencies.
- Fake
pkg_resources
to enable the use of bagit-python in Python 3.12.
- Use
platformdirs
instead ofappdirs
to determine the user data directory. - Update dependencies.
- Update the Submit RPC handler to use the default processing configuration when
the user-provided
config
field is unset.
- Update dependencies.
- Update dependencies.
- Fix issue in the setuptools package discovery configuration introduced in the
migration to
pyproject.toml
.
- Remove unused dependency: vcrpy.
- Remove
externals
(fiwalk extension for ISO disk images). - Remove virus scanning capabilities.
- Remove UUID log files that were included in AIPs.
- Remove
null
values from the JSON-encoded workflow, reducing the size of the default workflow document significantly.
- Add scriv to manage our changelog.
- Add pyright, another static type checker that integrates well with Visual Studio Code. We should remove mypy at some point.
- Add django-types, type stubs for Django compatible with pyright.
- Add
make workflow
to render the current workflow in the browser using the latest version of amflow available. - Add
tox -e publish
to build and publish the packages to PyPI.
- Add time precision to values written to
premis:dateCreatedByApplication
. - Bump supported versions of Python to 3.11 and 3.12.
- Ruff is now used for linting and formatting, replacing flake8, black or pyupgrade. More tools may be removed as the Ruff team adds more features, e.g. bandit, vulture...
- The project has been migrated to
pyproject.toml
entirely,setup.cfg
andsetup.py
were removed, as well as other configuration files liketox.ini
,pytest.ini
or.bandit
. - Multiple improvements in CI, e.g.: image caching for faster builds, use of
.python-version
, combined coverage data across multiple Python versions, use of tox without Docker for unit testing. fpr
is not a Django app anymore but a standard Python package with new abstractions to load rules directly from JSON-encoded documents generated by Archivematica. Fetching new rules from Archivematica is now easier, see :doc:`contributing` for more. This change allows for future developments where multiplefpr
could be supported.
- The Docker image is now built using
requirements.txt
instead ofrequirements-dev.txt
and uses.python-version
to find the default Python version preferred by the project. - Twine now uses
.pypirc
for credentials. - The docs site now shows the last known release version using
git describe --tags --abbrev=0
as opposed to relying ona3m.__version__
. This ensures that the docs site shows the latest published release as opposed to the latest release in development.
- Remove
fileFormatIdentification
logfile. - Remove unused dependency
ufraw
. - Remove transfer METS file (client script
create_transfer_mets
).
- Add
`.python-version
, a file indicating the default version of Python to be used in this project in various contexts, e.g. Docker image, tooling, etc... - Add processing configuration choice for file format identification of metadata files.
- Add
Empty
method to the gRPC API (TransferService
) to manually clean up local shared folders. This is a temporary solution until a3m learns to do it automatically. - Add GitHub issue templates.
- Add settings
org_id
andorg_name
enabling the customization of the organization agent.
- Bump supported versions of Python to 3.11 and 3.12.
- Update other dependencies, including Django 3.2.
- Don't use
examine_contents
in the default processing configuration. - Change the workflow to execute file format identification of metadata files
if
identify_submission_and_metadata
is enabled. - Refactor multiple client scripts with the goal of improved performance and use of short-lived database transactions.
- In the Docker image: use pyenv to manage the installation of Python, use Ubuntu 22.04 as the base distribution and the Archivematica 1.15 PPAs for the installation of dependencies.
- Use local XML schemas for XML validation, enabling the use of a3m without Internet access.
- Change filename cleanup job to filename change.
- Fix a bug in
normalize.py
breaking normalization. - Fix
CheckCloseConnectionsHandler
, a thin wrapper used for database usage debugging purposes. - Fix a bug in
PoolTaskBackend
attempting to write to the database after the batched jobs had already been delivered to the thread pool, causing sporadic errors in the presence of multiple database writers. The task backend now writes the tasks before the jobs are delivered to the pool. - Migrate from Buf remote generation alpha to v1.
- Add request-scoped processing configuration.
- Remove reingest capabilities.
- Remove UnitVariable links.
- Remove access normalization paths.
- Remove PID binding.
- Remove access directory support.
- Remove policy check on access derivatives.
- Remove reingest capabilities.
- Change Docker image registry:
ghcr.io/artefactual-labs/a3m
.
- Fix
long_description
config insetup.cfg
.
- Add Sphinx documentation project.
- Disable
zip_safe
flag insetuptools
to work around a release problem.
- Add a3m (
a3m.cli.client.__main__
) entry point: the a3m client with the ability to connect to a remote sever or standalone (embedded engine). - Add a3md (
a3m.cli.server.__main__
) entry point: the a3m standalone server.
- Enable WAL mode in SQLite providing more concurrency as readers don't block writers and writers don't block readers.
- Remove Gearman-related capabilities in favor of a new threaded pool task backend to execute jobs.
Amidst the global pandemic, our team found purpose in creating a3m, an internal project that kept us connected and productive during a time of isolation. This initiative, an offshoot from Archivematica, focuses on Automated Information Processing (AIP) creation. a3m removes complexities like the dashboard and the storage service, pivoting towards a tool that's simpler and more integrative.
See the full list of commits for more details.