muscles-data-s3
S3-compatible adapter package for muscles-data.
This package is intentionally separate from muscles-data: the core package
owns typed ports and runtime, while this package owns the boto3-backed
ObjectStorePort adapter.
Related packages
- Core runtime and port contracts:
muscles-data - Elasticsearch search adapter:
muscles-data-elasticsearch - OpenSearch search adapter:
muscles-data-opensearch - Redis key-value/lock/stream adapter:
muscles-data-redis - Qdrant vector adapter:
muscles-data-qdrant - MongoDB document-store adapter:
muscles-data-mongodb - SQLAlchemy direct SQL resource adapter:
muscles-data-sqlalchemy - Executable example:
example_data_s3_1
Install
python -m pip install muscles-data-s3
For local framework development:
PYTHONPATH=../muscles-data/src:src python3 -m pytest -q
Configuration
data:
resources:
objects.docs:
type: s3
endpoint_url: !environ S3_ENDPOINT
bucket: documents
region_name: us-east-1
prefix: raw
max_keys: 100
The adapter also supports standard boto3 credential options:
aws_access_key_id;aws_secret_access_key;aws_session_token;profile_name;- the default boto3 environment/provider chain.
Usage
Register this adapter once in the application composition root when building
the shared DataAdapterCatalog, alongside other configured adapters:
catalog.register(S3ObjectStoreFactory())
The objects.docs resource itself is declared in the application's central
data.resources configuration shown below. A package resolves the port from
the existing runtime; it does not build another catalog or DataRuntime:
from muscles.data.ports import ObjectStorePort
objects = app.resource.connect("objects.docs", ObjectStorePort)
Then use the narrow port:
objects.put_object("docs/readme.txt", b"hello", content_type="text/plain")
blob = objects.get_object("docs/readme.txt")
items = objects.list_objects(prefix="docs", limit=20)
objects.delete_object("docs/readme.txt")
Backend-specific request options are available without exposing the boto3
client: get_object() accepts range, conditional headers and
version/checksum options; list_objects() accepts delimiter and continuation
helpers; and delete_object() accepts version and retention options.
If prefix: raw is configured, the public key docs/readme.txt is stored as
raw/docs/readme.txt in S3 and returned to port consumers without the configured
prefix. This keeps application code independent from bucket layout details.
Metadata
Release files for muscles-data-s3 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| muscles_data_s3-0.2.0.tar.gz | 10.9 kB | With provenance | Details for muscles_data_s3-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| muscles_data_s3-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for muscles_data_s3-0.2.0-py3-none-any.whl |
Total release size: 17.7 kB
Release files / muscles_data_s3-0.2.0.tar.gz
| Download URL | muscles_data_s3-0.2.0.tar.gz |
|---|---|
| Size | 10.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
12feaaff66fa43faa56b7e6afa302cc472c74c83f020054998f0c1889054c1aa
|
|
BLAKE2b-256 checksum How to use checksums |
c10d6015876694f9579d100678ad1fb277ff69f5f2c737528b185820c9a88728
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logRelease files / muscles_data_s3-0.2.0-py3-none-any.whl
| Download URL | muscles_data_s3-0.2.0-py3-none-any.whl |
|---|---|
| Size | 6.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6f430f9fe88c65ed237283bd8ecfa18b64cf7a164de4fb2ae452f48eedaac0fb
|
|
BLAKE2b-256 checksum How to use checksums |
df0ea01b88182e70b5369e862efc9715cf50d08eb85c7bd98015970b6bb27ded
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logSecurity for muscles-data-s3 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for muscles_data_s3-0.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.