semvec/pypi-packages huggingface dataset:
yekta-sdk 0.1.0
Python SDK for the Yekta data catalog — credential vending, catalog browsing, access control
License: Apache-2.0
Requires Python: >=3.10

# yekta-sdk

Python SDK for the **Yekta data catalog** — credential vending, catalog browsing, access control.

## Install

```bash
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

```python
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)

```python
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

```python
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

```python
import polars as pl

df = pl.read_delta(
    cred.abfss_uri(),
    storage_options=cred.storage_options(),
)
```

### Use with Spark

```python
for key, value in cred.spark_config().items():
    spark.conf.set(key, value)

df = spark.read.format("delta").load(cred.abfss_uri())
```

### Access control

```python
# 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
snowflake.core 1.12.0
Snowflake Python API for Resource Management
License: Apache-2.0
Requires Python: >=3.10
Keywords: Snowflake, analytics, cloud, database, db, warehouse

`snowflake.core` is the subpackage providing Python access to Snowflake entity metadata.

You can use it to interact with Snowflake resources, creating, deleting, modifying them, and more. 

[Developer guide](https://docs.snowflake.com/developer-guide/snowflake-python-api/snowflake-python-overview)

[API reference](https://docs.snowflake.com/developer-guide/snowflake-python-api/reference/latest/index)
snowflake 1.12.0
Snowflake Python API
License: Apache-2.0
Requires Python: <3.14,>=3.10
Keywords: Snowflake, analytics, cloud, database, db, warehouse

The Snowflake Python API is the unified Python API across all Snowflake workloads, providing APIs for all Snowflake resources across data engineering, Snowpark, Snowpark ML, and client application workloads.

The `snowflake` package is the PEP 420 namespace parent package for the Snowflake Python API, including Snowpark.  
Installing snowflake automatically installs all subpackages as dependencies.

[Developer guide](https://docs.snowflake.com/developer-guide/snowflake-python-api/snowflake-python-overview)

[API reference](https://docs.snowflake.com/developer-guide/snowflake-python-api/reference/latest/index)