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):
- Environment variables (
CRYSTALIA_*prefix, or bareSENTRY_DSN) ./crystalia.tomlin the current directory~/.config/crystalia-collector/config.toml- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f92d241e2162836c6e970564064022b5c1558c81481c6cf62c6c62feb84c21e
|
|
| MD5 |
f5b301df39a7265dcb1e2a453bbe6748
|
|
| BLAKE2b-256 |
7d1251394dd3d066c9ab8e3d0d064df5d2f6fd38bb043c2d2dc6b1fa56989366
|
File details
Details for the file crystalia_collector-0.1.1-py3-none-any.whl.
File metadata
- Download URL: crystalia_collector-0.1.1-py3-none-any.whl
- Upload date:
- Size: 44.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74d04c227a127005ffc1dda02ddb576849d4cb86b4d4515fcd8ab758b64b76ce
|
|
| MD5 |
e4f10a03b7b9814737b296a586539c55
|
|
| BLAKE2b-256 |
bf0d9c3e83748a0105555fe7d7cd470f10725f37ab9fb964c02d415b10bee4fd
|