Python SDK for the Yekta data catalog — credential vending, catalog browsing, access control
Project description
yekta-sdk
Python SDK for the Yekta data catalog — credential vending, catalog browsing, access control.
Install
pip install yekta-sdk # Core
pip install yekta-sdk[duckdb] # + DuckDB integration
pip install yekta-sdk[polars] # + Polars/Delta integration
pip install yekta-sdk[all] # Everything
Quick Start
Browse the catalog
from yekta import YektaClient
client = YektaClient.from_env() # reads YEKTA_URL, YEKTA_TOKEN
# List resources
for r in client.ls("/dev/bronze"):
print(f"{r.path} ({r.format})")
# Preview data
df = client.preview_df("/dev/bronze/memotech/patents", rows=100)
df.head()
# Schema
schema = client.schema("/dev/bronze/memotech/patents")
for col in schema.columns:
print(f" {col.name}: {col.data_type}")
Get temporary credentials (the core feature)
from yekta import CredentialVendor
vendor = CredentialVendor.from_env() # reads SEPAR_URL, SEPAR_API_KEY
# Vend a short-lived, scoped SAS token
cred = vendor.vend(
connection_id="019c479e-...",
resource_path="dev/bronze/memotech/fabric/memotech_imt_patent",
)
print(cred.expires_at) # 1 hour from now
print(cred.is_expired) # False
Use with DuckDB
import duckdb
conn = duckdb.connect()
conn.execute(cred.duckdb_secret())
df = conn.sql("""
SELECT country, COUNT(*) as cnt
FROM delta_scan('az://dagster-data-pipelines/dev/bronze/.../memotech_imt_patent')
GROUP BY country ORDER BY cnt DESC
""").df()
Use with Polars
import polars as pl
df = pl.read_delta(
cred.abfss_uri(),
storage_options=cred.storage_options(),
)
Use with Spark
for key, value in cred.spark_config().items():
spark.conf.set(key, value)
df = spark.read.format("delta").load(cred.abfss_uri())
Access control
# List grants
for g in client.grants():
print(f"{g.path_prefix} → {g.principal_id}: {g.permission}")
# Grant read access
client.grant("/dev/bronze", principal_id="user-uuid", permission="read")
# Revoke
client.revoke(grant_id="...")
Environment Variables
| Variable | Default | Description |
|---|---|---|
YEKTA_URL |
http://localhost:8081 |
Yekta API URL |
YEKTA_TOKEN |
— | JWT token for authentication |
SEPAR_URL |
http://localhost:8080 |
Separ auth URL |
SEPAR_API_KEY |
— | API key for service-to-service auth |
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
yekta_sdk-0.1.0.tar.gz
(10.4 kB
view details)
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
yekta_sdk-0.1.0-py3-none-any.whl
(12.7 kB
view details)
File details
Details for the file yekta_sdk-0.1.0.tar.gz.
File metadata
- Download URL: yekta_sdk-0.1.0.tar.gz
- Upload date:
- Size: 10.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
958055ecef64b04eb728a3274fb37e1df8f3ed1bac4a634b29993c4b2ead816b
|
|
| MD5 |
7023e2fe76be9a64d57878305140b944
|
|
| BLAKE2b-256 |
1c620ea5ef74a05e6f9b2468a40991a17ea4312a09cfa774541a06d68d461c74
|
File details
Details for the file yekta_sdk-0.1.0-py3-none-any.whl.
File metadata
- Download URL: yekta_sdk-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62079685fdc125304eb95d878e8db9f9c38e0c3c6e1c9260d965cec5d7e06080
|
|
| MD5 |
696fd3c5d7f77aa92b24f83cd7b95ec4
|
|
| BLAKE2b-256 |
0ad1c6ce6baf1b37c4472df6f458d384e74a17ff85ca58e7136fbebf558d67fc
|