Skip to main content

crab-r

pip install uu-crab-r → import crab_r (Python ≥ 3.12, one abi3 wheel per platform).

Generative technical metadata for BigQuery. Name a project, a dataset, a table, or hand over SQL; crab-r reads the catalog, the queries that produce each table (job history, view definitions, or your SQL), Dataplex lineage and the values themselves, then writes column and table descriptions that are checked against the data before they are trusted.

import crab_r

# A dataset, keeping state so an unchanged rerun costs nothing.
report = crab_r.describe("my-project.mart", store="state", budget_usd=1)

# One table and what it reads, one level up.
crab_r.describe("my-project.mart.orders", upstream=1, store="state")

# A query's result, described as a virtual table (checks run over the query).
crab_r.describe(sql="SELECT customer_id, COUNT(*) AS orders FROM orders GROUP BY 1",
                default_dataset="my-project.mart")

# An OpenAI-compatible server instead of Vertex AI. The key is read from the
# environment variable named here, never passed as a value.
crab_r.describe("my-project.mart", openai_url="https://host/v1",
                openai_model="gpt-4o", openai_key_env="OPENAI_API_KEY")

# Lookups read the store, no network.
print(crab_r.lookup("state", "my-project.mart.orders.status"))
print(crab_r.upstream("state", "my-project.mart.orders.status"))

Static lineage and BigQuery names

A deployment program's SQL lineage export (bq:// ids; contains, derives_from and column_derives_from edges) can be written into a store before any describe, so declared tables answer lookups offline:

export = ...  # {"nodes": [...], "edges": [...]}, as the lineage export emits it
done = crab_r.ingest_lineage("state", export["nodes"], export["edges"])
# {"committed": True, "created": 14, "updated": 0, "edges": 20,
#  "skipped": {"writes_to": 1, ...}, "rejected": []}
print(crab_r.upstream("state", "bq://proj/mart/orders_v#amt"))
print(crab_r.downstream("state", "proj.mart.orders"))   # a table: what reads it

Ingest only adds: a description, type or edge the store holds is kept, and a repeat ingest of the same export writes nothing. A later describe fills the same nodes in and keeps what was declared. Entries crab-r does not model (routines, writes_to, defined_by, ...) are counted in skipped; unusable ones are listed in rejected by position, never repeated.

One BigQuery name has three spellings, and every function here accepts all of them:

Spelling Where it comes from
bq://p/d/t#column (bq_id) the lineage export's own ids
bq://p/d/t/column (bq_path) a store that keys by url and canonicalises urls the way graph-r's Python add() does, which drops the #fragment — there a column's # id would silently become its table. Key such a store with the path form
p.d.t.column (dotted) the warehouse's own
crab_r.bq_path("bq://proj/mart/orders#Status")   # 'bq://proj/mart/orders/status'
crab_r.dotted("bq://proj/mart/orders/status")    # 'proj.mart.orders.status'

crab-r's own store keys the exact sql://bigquery/p/d/t#column uri with no url canonicalisation, so columns and tables stay distinct there. Column names are lowercased (BigQuery treats them case-insensitively); a component holding anything but letters, digits, _ and - (and : in a project) is refused rather than guessed at.

Options are the crab-describe command's flags as keyword arguments (lineage_location="us", profile=False, apply=True, ...). Credentials come from Application Default Credentials; with openai_url= the model's key comes from the variable openai_key_env= names (default OPENAI_API_KEY). Nothing is written to the warehouse unless apply=True.

License: AGPL-3.0-or-later, or a commercial license from lituus-io.

Metadata

Release files for uu-crab-r 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for uu-crab-r 0.3.1
File Size Uploaded Provenance Actions
uu_crab_r-0.3.1.tar.gz 895.2 kB Without provenance Details for uu_crab_r-0.3.1.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for uu-crab-r 0.3.1
File Actions
uu_crab_r-0.3.1-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details for uu_crab_r-0.3.1-cp312-abi3-win_amd64.whl
uu_crab_r-0.3.1-cp312-abi3-manylinux_2_28_x86_64.whl CPython 3.12 abi3 Linux glibc 2.28+ x86-64 Details for uu_crab_r-0.3.1-cp312-abi3-manylinux_2_28_x86_64.whl
uu_crab_r-0.3.1-cp312-abi3-manylinux_2_28_aarch64.whl CPython 3.12 abi3 Linux glibc 2.28+ ARM64 Details for uu_crab_r-0.3.1-cp312-abi3-manylinux_2_28_aarch64.whl
uu_crab_r-0.3.1-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details for uu_crab_r-0.3.1-cp312-abi3-macosx_11_0_arm64.whl
uu_crab_r-0.3.1-cp312-abi3-macosx_10_12_x86_64.whl CPython 3.12 abi3 macOS 10.12+ x86-64 Details for uu_crab_r-0.3.1-cp312-abi3-macosx_10_12_x86_64.whl

Total release size: 16.0 MB

Release files / uu_crab_r-0.3.1.tar.gz

Download URL uu_crab_r-0.3.1.tar.gz
Size 895.2 kB
Tags Source
SHA-256 checksum
How to use checksums
81c46b8cd4e998bc8245837ab03f867db6a4e31f982a12600d2ac3a6fa925d83
BLAKE2b-256 checksum
How to use checksums
453e3698858d6ea8b86137f20be5a275ba8307813e2966ce824b33019a0c6bda
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / uu_crab_r-0.3.1-cp312-abi3-win_amd64.whl

Download URL uu_crab_r-0.3.1-cp312-abi3-win_amd64.whl
Size 3.2 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
165987c1aaae96fad3ba9df84b29e69c06c427ee587e1c44ab774d670a6c2e82
BLAKE2b-256 checksum
How to use checksums
3b83ae85730a8b10fab6d836deea277442657a0161dafa92595dc0f9dcc3073c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / uu_crab_r-0.3.1-cp312-abi3-manylinux_2_28_x86_64.whl

Download URL uu_crab_r-0.3.1-cp312-abi3-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
a540285ed5b51d45c09d7815733c59680bfda03f1c56dffef746fa67db1b1a05
BLAKE2b-256 checksum
How to use checksums
ea644e8c4a0e8a557a20c039d1a1870452b29ff6a96ef34c5ef483dec2310dae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / uu_crab_r-0.3.1-cp312-abi3-manylinux_2_28_aarch64.whl

Download URL uu_crab_r-0.3.1-cp312-abi3-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
7aa9d6254fdfcdd16606bdee6b1292cc0a90035685c33055c8adaa45bac9f661
BLAKE2b-256 checksum
How to use checksums
9ab27d0dbc2e4e0bccff6aa0efb4b599e9c477ad45a28401ff20cd7d32ade504
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / uu_crab_r-0.3.1-cp312-abi3-macosx_11_0_arm64.whl

Download URL uu_crab_r-0.3.1-cp312-abi3-macosx_11_0_arm64.whl
Size 2.8 MB
Tags CPython 3.12 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
918134765346b9865538eeebb29896fa74f87fb69d1c9b020a3835b4674bd2eb
BLAKE2b-256 checksum
How to use checksums
03073ebc862da66da160f9be3b3cf27474f8a2fa62032c2858ae928f41e72bf0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / uu_crab_r-0.3.1-cp312-abi3-macosx_10_12_x86_64.whl

Download URL uu_crab_r-0.3.1-cp312-abi3-macosx_10_12_x86_64.whl
Size 3.0 MB
Tags CPython 3.12 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
e9838c20f6a68867b37d258b21a8e10734d35786de3fcd09ffd06432856a9ebb
BLAKE2b-256 checksum
How to use checksums
bf644f4a59477a2edc814721c1c244ac5c9129b815ee93473318937c18a634f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Security for uu-crab-r 0.3.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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