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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

crystalia_collector-0.2.0.tar.gz (52.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

crystalia_collector-0.2.0-py3-none-any.whl (45.0 kB view details)

Uploaded Python 3

File details

Details for the file crystalia_collector-0.2.0.tar.gz.

File metadata

  • Download URL: crystalia_collector-0.2.0.tar.gz
  • Upload date:
  • Size: 52.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for crystalia_collector-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3e502b9a16a98d3a9f917c43afb6b108f144be01722bf905930f32918e8d1f5e
MD5 89ba7e8ee6781051d7486ad35523d83d
BLAKE2b-256 98fe395814e7b8178dbabb163c5a080c451b01d57a932028b82302ca68ebd0ff

See more details on using hashes here.

File details

Details for the file crystalia_collector-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for crystalia_collector-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0ef23ec97945d31252fad19cb0b5d43f2b505dee9547e0ee8c17a4d8f44cfbfe
MD5 f4b1e6b544618c0868533b83e79029c3
BLAKE2b-256 9236f2298a7cff88611ce297d8634a0365a25948724fb0417efc4228e1276c0e

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.1

2 files

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