Skip to main content

Crystalia Collector: Generate Dataset Descriptors for Large Datasets

Project description

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

Project details


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.1.1.tar.gz (50.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.1.1-py3-none-any.whl (44.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: crystalia_collector-0.1.1.tar.gz
  • Upload date:
  • Size: 50.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.1.1.tar.gz
Algorithm Hash digest
SHA256 0f92d241e2162836c6e970564064022b5c1558c81481c6cf62c6c62feb84c21e
MD5 f5b301df39a7265dcb1e2a453bbe6748
BLAKE2b-256 7d1251394dd3d066c9ab8e3d0d064df5d2f6fd38bb043c2d2dc6b1fa56989366

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for crystalia_collector-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 74d04c227a127005ffc1dda02ddb576849d4cb86b4d4515fcd8ab758b64b76ce
MD5 e4f10a03b7b9814737b296a586539c55
BLAKE2b-256 bf0d9c3e83748a0105555fe7d7cd470f10725f37ab9fb964c02d415b10bee4fd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page