Catalog PyPI
PACKAGE EXPLORERView in registry

abra-q

PyPI

Python SDK for the Abra-Q API — manage datasources, run queries, and handle IAM from Python and Jupyter notebooks

abraqdatasourcejupyternotebookquerysql
Versions collected1
Direct dependencies2From release 0.1.0
Last observed20 Oct, 17:35 UTC

README

Version 0.1.0 documentation

abra-q

Python SDK for the Abra-Q API — manage datasources, run natural-language queries, and handle IAM, all from Python or a Jupyter notebook.

Installation

pip install abra-q

Or with uv:

uv add abra-q

Quick Start

from abra_q import AbraQ

client = AbraQ("<host provided by AbraDynamics team>")
client.login("user@example.com", "password")

# List datasources
datasources = client.datasources.list()

# Ask a question in natural language
result = client.datasources.prompt("my-datasource-id", "Show me top 10 customers by revenue")
print(result["query"])        # Generated SQL
print(result["explanation"])  # AI explanation

# Run raw SQL
rows = client.datasources.query("my-datasource-id", "SELECT * FROM customers LIMIT 5")

Using in Jupyter Notebooks

from abra_q import AbraQ

client = AbraQ("<host provided by AbraDynamics team>")
client.login("analyst@company.com", "password")

# Natural-language query
result = client.datasources.prompt("sales-db", "Monthly revenue for the last year")
print(result["query"])

# Execute the generated query
data = client.datasources.query("sales-db", result["query"])

# Convert to pandas DataFrame (optional)
import pandas as pd
df = pd.DataFrame(data["rows"], columns=[c["name"] for c in data["columns"]])
df.head()

API Reference

Client

client = AbraQ(base_url, timeout=30)
client.login(email, password)
client.logout()

Datasources — client.datasources

MethodDescription
list()List all accessible datasources
get(id)Get datasource details
create(...)Create a new datasource
delete(id)Delete a datasource
test_connection(...)Test connection before creating
prompt(id, text)Generate SQL from natural language
query(id, sql)Execute raw SQL
enhance(id)AI-enhance table/column descriptions
reacquaint(id)Resync schema
sample_queries(id)Get sample queries
generate_sample_queries(id)Generate sample queries with AI

Datasets — client.datasets

MethodDescription
parse(file_path)Parse a CSV/Excel file
import_dataset(sheets=...)Import parsed data as a datasource

Query Builder — client.query_builder

MethodDescription
intelligent_prompt(prompt, datasource_ids)Multi-datasource natural language query
list_sessions()List query builder sessions
create_session()Create a new session
get_session(id)Get session details

Saved Queries — client.queries

MethodDescription
get(query_id)Get a saved query
execute(query_id)Execute a saved query

Both accept an optional api_key parameter for agent-based authentication.

IAM — client.iam

Manage policies, roles, groups, agents, and user policies:

# Policies
client.iam.list_policies()
client.iam.create_policy(id="pol-1", name="ReadOnly", statement=[...])

# Roles
client.iam.list_roles()
client.iam.create_role(id="role-1", name="Analyst")
client.iam.attach_role_policy("role-1", "pol-1")

# Groups
client.iam.list_groups()
client.iam.add_user_to_group("group-1", "user-1")

# Agents (API keys)
client.iam.create_agent(id="bot-1", description="ETL bot")
client.iam.assign_agent_role("bot-1", "role-1")

Users — client.users

MethodDescription
me()Get current user profile
list()List all users
create(email)Create a user
delete(id)Delete a user
change_password(current, new)Change password

Preferences — client.preferences

MethodDescription
get()Get all preferences
set_llm_model(model)Set LLM model
set_embedding_model(model)Set embedding model
set_vector_threshold(label, threshold)Set similarity threshold

Error Handling

from abra_q import AbraQ, AuthenticationError, PermissionDeniedError, NotFoundError

client = AbraQ("host provided by AbraDynamics team")

try:
    client.login("user@example.com", "wrong-password")
except AuthenticationError as e:
    print(f"Login failed: {e}")

try:
    client.datasources.get("nonexistent-id")
except NotFoundError:
    print("Datasource not found")
except PermissionDeniedError:
    print("You don't have access")

License

Apache 2.0

Downloads & popularity

1downloads
1-day window · source-reported counts17 Oct 2026
24120
2026-07-20: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-07-20–2026-07-202026-07-21: 2 · observed 2026-10-20T21:02:43.1171119Z · period 2026-07-21–2026-07-212026-07-23: 3 · observed 2026-10-20T21:02:43.1171119Z · period 2026-07-23–2026-07-232026-07-27: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-07-27–2026-07-272026-07-28: 2 · observed 2026-10-20T21:02:43.1171119Z · period 2026-07-28–2026-07-282026-07-29: 13 · observed 2026-10-20T21:02:43.1171119Z · period 2026-07-29–2026-07-292026-07-30: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-07-30–2026-07-302026-08-01: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-01–2026-08-012026-08-02: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-02–2026-08-022026-08-03: 5 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-03–2026-08-032026-08-04: 4 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-04–2026-08-042026-08-06: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-06–2026-08-062026-08-09: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-09–2026-08-092026-08-13: 2 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-13–2026-08-132026-08-14: 5 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-14–2026-08-142026-08-16: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-16–2026-08-162026-08-17: 4 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-17–2026-08-172026-08-18: 24 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-18–2026-08-182026-08-20: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-20–2026-08-202026-08-23: 3 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-23–2026-08-232026-08-24: 9 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-24–2026-08-242026-08-28: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-28–2026-08-282026-08-31: 2 · observed 2026-10-20T21:02:43.1171119Z · period 2026-08-31–2026-08-312026-09-01: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-01–2026-09-012026-09-03: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-03–2026-09-032026-09-04: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-04–2026-09-042026-09-06: 2 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-06–2026-09-062026-09-07: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-07–2026-09-072026-09-09: 2 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-09–2026-09-092026-09-10: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-10–2026-09-102026-09-12: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-12–2026-09-122026-09-13: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-13–2026-09-132026-09-15: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-15–2026-09-152026-09-18: 2 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-18–2026-09-182026-09-22: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-22–2026-09-222026-09-24: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-24–2026-09-242026-09-25: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-25–2026-09-252026-09-26: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-26–2026-09-262026-09-27: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-27–2026-09-272026-09-30: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-09-30–2026-09-302026-10-06: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-10-06–2026-10-062026-10-07: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-10-07–2026-10-072026-10-08: 3 · observed 2026-10-20T21:02:43.1171119Z · period 2026-10-08–2026-10-082026-10-09: 2 · observed 2026-10-20T21:02:43.1171119Z · period 2026-10-09–2026-10-092026-10-10: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-10-10–2026-10-102026-10-12: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-10-12–2026-10-122026-10-13: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-10-13–2026-10-132026-10-17: 1 · observed 2026-10-20T21:02:43.1171119Z · period 2026-10-17–2026-10-17
20 Jul17 Oct

pypistats · 48 observations shown. Missing days are unknown. Source category: overall: without mirrors.

View observed values
Date / source periodValueObserved at
2026-10-17 – 2026-10-1712026-10-20T21:02:43.1171119Z
2026-10-13 – 2026-10-1312026-10-20T21:02:43.1171119Z
2026-10-12 – 2026-10-1212026-10-20T21:02:43.1171119Z
2026-10-10 – 2026-10-1012026-10-20T21:02:43.1171119Z
2026-10-09 – 2026-10-0922026-10-20T21:02:43.1171119Z
2026-10-08 – 2026-10-0832026-10-20T21:02:43.1171119Z
2026-10-07 – 2026-10-0712026-10-20T21:02:43.1171119Z
2026-10-06 – 2026-10-0612026-10-20T21:02:43.1171119Z
2026-09-30 – 2026-09-3012026-10-20T21:02:43.1171119Z
2026-09-27 – 2026-09-2712026-10-20T21:02:43.1171119Z
2026-09-26 – 2026-09-2612026-10-20T21:02:43.1171119Z
2026-09-25 – 2026-09-2512026-10-20T21:02:43.1171119Z
2026-09-24 – 2026-09-2412026-10-20T21:02:43.1171119Z
2026-09-22 – 2026-09-2212026-10-20T21:02:43.1171119Z
2026-09-18 – 2026-09-1822026-10-20T21:02:43.1171119Z
2026-09-15 – 2026-09-1512026-10-20T21:02:43.1171119Z
2026-09-13 – 2026-09-1312026-10-20T21:02:43.1171119Z
2026-09-12 – 2026-09-1212026-10-20T21:02:43.1171119Z
2026-09-10 – 2026-09-1012026-10-20T21:02:43.1171119Z
2026-09-09 – 2026-09-0922026-10-20T21:02:43.1171119Z
2026-09-07 – 2026-09-0712026-10-20T21:02:43.1171119Z
2026-09-06 – 2026-09-0622026-10-20T21:02:43.1171119Z
2026-09-04 – 2026-09-0412026-10-20T21:02:43.1171119Z
2026-09-03 – 2026-09-0312026-10-20T21:02:43.1171119Z
2026-09-01 – 2026-09-0112026-10-20T21:02:43.1171119Z
2026-08-31 – 2026-08-3122026-10-20T21:02:43.1171119Z
2026-08-28 – 2026-08-2812026-10-20T21:02:43.1171119Z
2026-08-24 – 2026-08-2492026-10-20T21:02:43.1171119Z
2026-08-23 – 2026-08-2332026-10-20T21:02:43.1171119Z
2026-08-20 – 2026-08-2012026-10-20T21:02:43.1171119Z
2026-08-18 – 2026-08-18242026-10-20T21:02:43.1171119Z
2026-08-17 – 2026-08-1742026-10-20T21:02:43.1171119Z
2026-08-16 – 2026-08-1612026-10-20T21:02:43.1171119Z
2026-08-14 – 2026-08-1452026-10-20T21:02:43.1171119Z
2026-08-13 – 2026-08-1322026-10-20T21:02:43.1171119Z
2026-08-09 – 2026-08-0912026-10-20T21:02:43.1171119Z
2026-08-06 – 2026-08-0612026-10-20T21:02:43.1171119Z
2026-08-04 – 2026-08-0442026-10-20T21:02:43.1171119Z
2026-08-03 – 2026-08-0352026-10-20T21:02:43.1171119Z
2026-08-02 – 2026-08-0212026-10-20T21:02:43.1171119Z
2026-08-01 – 2026-08-0112026-10-20T21:02:43.1171119Z
2026-07-30 – 2026-07-3012026-10-20T21:02:43.1171119Z
2026-07-29 – 2026-07-29132026-10-20T21:02:43.1171119Z
2026-07-28 – 2026-07-2822026-10-20T21:02:43.1171119Z
2026-07-27 – 2026-07-2712026-10-20T21:02:43.1171119Z
2026-07-23 – 2026-07-2332026-10-20T21:02:43.1171119Z
2026-07-21 – 2026-07-2122026-10-20T21:02:43.1171119Z
2026-07-20 – 2026-07-2012026-10-20T21:02:43.1171119Z

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.1.05 Apr 20262

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
abrajects/abra-q

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 17:35 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:2431207102ae1e5288c338bfea70ceccb106a364b27363fd8fbf6562f44049b8