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.0

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.0
File Size Uploaded Provenance Actions
uu_crab_r-0.3.0.tar.gz 884.8 kB Without provenance Details for uu_crab_r-0.3.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for uu-crab-r 0.3.0
File Actions
uu_crab_r-0.3.0-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details for uu_crab_r-0.3.0-cp312-abi3-win_amd64.whl
uu_crab_r-0.3.0-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.0-cp312-abi3-manylinux_2_28_x86_64.whl
uu_crab_r-0.3.0-cp312-abi3-manylinux_2_28_aarch64.whl CPython 3.12 abi3 Linux glibc 2.28+ ARM64 Details for uu_crab_r-0.3.0-cp312-abi3-manylinux_2_28_aarch64.whl
uu_crab_r-0.3.0-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details for uu_crab_r-0.3.0-cp312-abi3-macosx_11_0_arm64.whl
uu_crab_r-0.3.0-cp312-abi3-macosx_10_12_x86_64.whl CPython 3.12 abi3 macOS 10.12+ x86-64 Details for uu_crab_r-0.3.0-cp312-abi3-macosx_10_12_x86_64.whl

Total release size: 15.9 MB

Release files / uu_crab_r-0.3.0.tar.gz

Download URL uu_crab_r-0.3.0.tar.gz
Size 884.8 kB
Tags Source
SHA-256 checksum
How to use checksums
24c0c998891ab69a20575112d9aad6c5e3ef1d922bae0d53f061d7f29c19ff92
BLAKE2b-256 checksum
How to use checksums
7c8c8c53e0b5816b26f4044e5010357caa4fe76a08083e85f742e7dd4c6b248b
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.0-cp312-abi3-win_amd64.whl

Download URL uu_crab_r-0.3.0-cp312-abi3-win_amd64.whl
Size 3.2 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
49a686e2eb89088f3bfaeb68bb503e77ae0215ba393fc2487b0720272d56f29f
BLAKE2b-256 checksum
How to use checksums
f22646d783c72ca87d4cdfbd6b89ec3dcf564ceb9e73280a6050057ba2001db7
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.0-cp312-abi3-manylinux_2_28_x86_64.whl

Download URL uu_crab_r-0.3.0-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
c60398e91a57bb4e3c88cd9e0a6db727f5289913e42f5e1f69d5ac729757c341
BLAKE2b-256 checksum
How to use checksums
8418f3bf7b80fab04628facb9c12064d2a176ecb39cff32a40e53611f04a75e8
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.0-cp312-abi3-manylinux_2_28_aarch64.whl

Download URL uu_crab_r-0.3.0-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
3f84a56a49cef4f4a01e5961784800c7bc23b1b1625a5b07be3cd9e5874b41a9
BLAKE2b-256 checksum
How to use checksums
ab7b8e61239aa8b136626880ee79e553beeab5d0b8344e1865ca0359f4edf4d1
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.0-cp312-abi3-macosx_11_0_arm64.whl

Download URL uu_crab_r-0.3.0-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
6f3bf0ac44d1a7936af1cfc28ca3cfcf62bb3c73161acec0f96ccec5a1fd0de2
BLAKE2b-256 checksum
How to use checksums
67e959c76c2942129c5131da84a65813878a6bc739187ca7712d03e7ee83abde
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.0-cp312-abi3-macosx_10_12_x86_64.whl

Download URL uu_crab_r-0.3.0-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
6a6f8df93097cce33803d294dec63a6e30623bbc223763b9840accf90185b1ec
BLAKE2b-256 checksum
How to use checksums
33e0bc45661b81f96cd41905cb548410561506386f81f7a84fbc3f2ea841e0f5
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.0

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