Skip to main content

rashid

PyPI Python versions CI License

rashid checks whether a Portolan catalog follows the standard.

Give it a catalog directory or its root catalog.json. rashid checks the metadata, structure, and asset bytes. It reports each problem with a stable rule ID.

The name comes from the Arabic root ر ش د. Its participles رَاشِدٌ and رَشِيدٌ mean "taking, or following, a right way or course or direction".

Install

uv tool install rashid

rashid requires Python 3.10 or later.

Check a Catalog

rashid check path/to/catalog

Exit code 0 means the catalog breaks no MUST requirement. Exit code 1 means it breaks at least one.

By default, rashid checks:

  • Portolan metadata requirements.
  • STAC 1.1.0 core structure with schemas included in the package.
  • Local and remote asset bytes against their metadata and format rules.

Use --no-data when you only need a metadata and structure result. Use --data-scope local to keep byte checks inside the catalog directory.

rashid check path/to/catalog --data-scope local

Use --live to check HTTP range support and CORS on published assets. Relative asset links also require the catalog's public base URL.

rashid check path/to/catalog \
  --live \
  --live-base-url https://data.example.org/my-catalog/

Use --json for a machine-readable report.

Read the Report

Each finding contains a rule ID, severity, message, and file path. MUST requirements produce errors, and SHOULD requirements produce warnings.

A catalog can produce thousands of similar findings. After 50 findings, rashid groups results by rule and shows representative examples.

Use --all to list every finding. Use --summary to group any report by rule. JSON output always contains the complete findings array and a summary.by_rule object.

Choose Additional Checks

rashid provides five separate validation passes:

  • Metadata checks Portolan requirements in catalog JSON.
  • Structural checks STAC 1.1.0 core structure offline.
  • Schema checks each object against the packaged Portolan profile schema.
  • Data reads asset bytes and verifies checksums, sizes, formats, and extents.
  • Live hosting checks HTTP range support and CORS on remote servers.

Metadata, structural, and data checks run by default. Use --schema as a cross-check against the published profile schema. Use --live for checks that require a published catalog and network access.

If a pass cannot run, rashid reports a warning. It does not treat the skipped pass as successful.

For transfer details and every rule ID, see the rule reference.

Use rashid from Python

from rashid import validate

report = validate("path/to/catalog")

for finding in report.errors:
    print(finding.message)

validate() uses the same default passes as the command-line interface. Set schema=True or live=True to add those passes.

Use RulesConfig to disable rules or change their severity.

from rashid import RulesConfig, Severity, validate

config = RulesConfig(
    disabled=frozenset({"PTL-VIZ-004"}),
    severity_overrides={"PTL-TTL-002": Severity.ERROR},
)

report = validate("path/to/catalog", config=config)

The public rashid.api module also provides helpers for tools that repair catalogs. Names from this module remain available across 0.x releases. Other internal modules can change in a patch release.

Documentation

License

rashid is available under the Apache License 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

rashid-0.1.8.tar.gz (496.9 kB view details)

Uploaded Source

Built Distribution

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

rashid-0.1.8-py3-none-any.whl (147.4 kB view details)

Uploaded Python 3

File details

Details for the file rashid-0.1.8.tar.gz.

File metadata

  • Download URL: rashid-0.1.8.tar.gz
  • Upload date:
  • Size: 496.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rashid-0.1.8.tar.gz
Algorithm Hash digest
SHA256 b1625928836be4de2d59f7d440eee9ec657d5e22a1ca449463b9aedd4bdcf491
MD5 aff7f730027fd49d1384bb3c0e7b203b
BLAKE2b-256 bd618b29b0c1ac8d7dcf6a666f01a457cf3c8f91f4c65a5b0c5bec08006baf5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for rashid-0.1.8.tar.gz:

Publisher: publish.yml on portolan-sdi/rashid

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rashid-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: rashid-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 147.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rashid-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 3f74f355a314f16e3c3ae9d9d4e0e0abedbc25f6ca3ff2a95ea35aa7a76fa7e3
MD5 4aee158f1e58c57a4ce02be28c82becf
BLAKE2b-256 4f54c2c46828dae4ab8ce412bb56328e5e6008d278a1284c8168c64448527692

See more details on using hashes here.

Provenance

The following attestation bundles were made for rashid-0.1.8-py3-none-any.whl:

Publisher: publish.yml on portolan-sdi/rashid

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.8 This release

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

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