Skip to main content

Crystalia Collector

Generate dataset descriptors for large S3-hosted datasets as RDF annotations.

For architecture, extensibility, and infrastructure details see docs/architecture.md.

Installation

uv sync

Usage

# List files in an S3 prefix
crystalia-collector list my-bucket/path/to/data

# List and generate task files for parallel processing
crystalia-collector list my-bucket/path/to/data --task-dir ./tasks --method-id md5-8gb

# Compute checksum for a single S3 object
crystalia-collector checksum s3://my-bucket/path/to/file.gz

# Compute checksum for a byte range
crystalia-collector checksum s3://my-bucket/path/to/file.gz --offset 0 --length 8589934592

# Process a task file and generate RDF annotations
crystalia-collector annotate tasks/task_1 --output-file annotations.rdf

# Combine annotations (placeholder — not yet implemented)
crystalia-collector combine

Checksum Methods

Method ID Block Size Description
md5 Unbounded MD5 of the entire file
md5-2gb 2 GB MD5 in 2 GB blocks
md5-8gb 8 GB MD5 in 8 GB blocks (default)

Block-based methods split large files into offset/length pairs in task files, enabling parallel checksum computation.

Configuration

Settings load in this order (highest priority first):

  1. Environment variables (CRYSTALIA_* prefix, or bare SENTRY_DSN)
  2. ./crystalia.toml in the current directory
  3. ~/.config/crystalia-collector/config.toml
  4. Built-in defaults

Environment Variables

Variable Default Description
CRYSTALIA_DEFAULT_METHOD_ID md5-8gb Checksum method
CRYSTALIA_DEFAULT_OUTPUT_FILE out.rdf Output file for annotations
CRYSTALIA_ENABLE_TELEMETRY false Send crash reports to Sentry
CRYSTALIA_SENTRY_DSN project default Override Sentry DSN
SENTRY_DSN — Bare DSN fallback
CRYSTALIA_LOG_JSON true JSON-formatted log output
AWS_PROFILE default AWS credentials profile
AWS_DEFAULT_REGION us-east-1 AWS region

Config File

# crystalia.toml or ~/.config/crystalia-collector/config.toml
default_method_id = "md5-8gb"
default_output_file = "out.rdf"
enable_telemetry = false
log_json = false

Copy .envrc.example to .envrc and adjust as needed.

Docker

docker build -t crystalia-collector .
docker run --rm crystalia-collector --help

Development

uv sync
uv run pytest
uv run ruff check .
uv run mypy src/

License

Apache-2.0

Metadata

Release files for crystalia-collector 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for crystalia-collector 0.2.0
File Size Uploaded Provenance
crystalia_collector-0.2.0.tar.gz 52.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for crystalia-collector 0.2.0
File Interpreter ABI Platform
crystalia_collector-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 97.6 kB

Release files / crystalia_collector-0.2.0.tar.gz

Download URL crystalia_collector-0.2.0.tar.gz
Size 52.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3e502b9a16a98d3a9f917c43afb6b108f144be01722bf905930f32918e8d1f5e
BLAKE2b-256 checksum
How to use checksums
98fe395814e7b8178dbabb163c5a080c451b01d57a932028b82302ca68ebd0ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / crystalia_collector-0.2.0-py3-none-any.whl

Download URL crystalia_collector-0.2.0-py3-none-any.whl
Size 45.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0ef23ec97945d31252fad19cb0b5d43f2b505dee9547e0ee8c17a4d8f44cfbfe
BLAKE2b-256 checksum
How to use checksums
9236f2298a7cff88611ce297d8634a0365a25948724fb0417efc4228e1276c0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Security for crystalia-collector 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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A 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.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page