rashid
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
- Rule reference describes every validation pass, rule group, and degraded-pass code.
- Contributing guide covers development setup, tests, and repository checks.
- Portolan specification defines the standard that rashid implements.
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
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 rashid-0.1.7.tar.gz.
File metadata
- Download URL: rashid-0.1.7.tar.gz
- Upload date:
- Size: 491.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb48b61bb276b9efa7036de457e0cee7ff49c8c7a28aa90218292be52ac38e8d
|
|
| MD5 |
2ddaddcb8cd16a85434c6e64ff34a4f2
|
|
| BLAKE2b-256 |
87a7bdeb5665e9768b4f0357d9c8593da6ea37b872efa5047af3e2c9ea7e4912
|
Provenance
The following attestation bundles were made for rashid-0.1.7.tar.gz:
Publisher:
publish.yml on portolan-sdi/rashid
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rashid-0.1.7.tar.gz -
Subject digest:
fb48b61bb276b9efa7036de457e0cee7ff49c8c7a28aa90218292be52ac38e8d - Sigstore transparency entry: 2529004928
- Sigstore integration time:
-
Permalink:
portolan-sdi/rashid@b16400ff1d1ca83e10e468e8f0ef0253b5059278 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/portolan-sdi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b16400ff1d1ca83e10e468e8f0ef0253b5059278 -
Trigger Event:
push
-
Statement type:
File details
Details for the file rashid-0.1.7-py3-none-any.whl.
File metadata
- Download URL: rashid-0.1.7-py3-none-any.whl
- Upload date:
- Size: 142.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
722f89f137803d3ce260f497c14eb2093182529e9d0254f37b856c00a1bfb1f9
|
|
| MD5 |
8d567ae662ab2113756fd4fa2437da24
|
|
| BLAKE2b-256 |
4558a0b2274a33e020e38075f6befa1aee7dd65f41c6635b27ffae4d672c0da1
|
Provenance
The following attestation bundles were made for rashid-0.1.7-py3-none-any.whl:
Publisher:
publish.yml on portolan-sdi/rashid
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rashid-0.1.7-py3-none-any.whl -
Subject digest:
722f89f137803d3ce260f497c14eb2093182529e9d0254f37b856c00a1bfb1f9 - Sigstore transparency entry: 2529005722
- Sigstore integration time:
-
Permalink:
portolan-sdi/rashid@b16400ff1d1ca83e10e468e8f0ef0253b5059278 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/portolan-sdi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b16400ff1d1ca83e10e468e8f0ef0253b5059278 -
Trigger Event:
push
-
Statement type: