Current collected state Current
Observed since 20 Oct, 17:35 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Python SDK for the Abra-Q API — manage datasources, run queries, and handle IAM from Python and Jupyter notebooks
Python SDK for the Abra-Q API — manage datasources, run natural-language queries, and handle IAM, all from Python or a Jupyter notebook.
pip install abra-q
Or with uv:
uv add abra-q
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")
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()
client = AbraQ(base_url, timeout=30)
client.login(email, password)
client.logout()
client.datasources| Method | Description |
|---|---|
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 |
client.datasets| Method | Description |
|---|---|
parse(file_path) | Parse a CSV/Excel file |
import_dataset(sheets=...) | Import parsed data as a datasource |
client.query_builder| Method | Description |
|---|---|
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 |
client.queries| Method | Description |
|---|---|
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.
client.iamManage 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")
client.users| Method | Description |
|---|---|
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 |
client.preferences| Method | Description |
|---|---|
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 |
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")
Apache 2.0
pypistats · 48 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-17 – 2026-10-17 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-10-13 – 2026-10-13 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-10-12 – 2026-10-12 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-10-10 – 2026-10-10 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-10-09 – 2026-10-09 | 2 | 2026-10-20T21:02:43.1171119Z |
| 2026-10-08 – 2026-10-08 | 3 | 2026-10-20T21:02:43.1171119Z |
| 2026-10-07 – 2026-10-07 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-10-06 – 2026-10-06 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-30 – 2026-09-30 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-27 – 2026-09-27 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-26 – 2026-09-26 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-25 – 2026-09-25 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-24 – 2026-09-24 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-22 – 2026-09-22 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-18 – 2026-09-18 | 2 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-15 – 2026-09-15 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-13 – 2026-09-13 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-12 – 2026-09-12 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-10 – 2026-09-10 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-09 – 2026-09-09 | 2 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-07 – 2026-09-07 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-06 – 2026-09-06 | 2 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-04 – 2026-09-04 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-03 – 2026-09-03 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-09-01 – 2026-09-01 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-31 – 2026-08-31 | 2 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-28 – 2026-08-28 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-24 – 2026-08-24 | 9 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-23 – 2026-08-23 | 3 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-20 – 2026-08-20 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-18 – 2026-08-18 | 24 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-17 – 2026-08-17 | 4 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-16 – 2026-08-16 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-14 – 2026-08-14 | 5 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-13 – 2026-08-13 | 2 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-09 – 2026-08-09 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-06 – 2026-08-06 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-04 – 2026-08-04 | 4 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-03 – 2026-08-03 | 5 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-02 – 2026-08-02 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-08-01 – 2026-08-01 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-07-30 – 2026-07-30 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-07-29 – 2026-07-29 | 13 | 2026-10-20T21:02:43.1171119Z |
| 2026-07-28 – 2026-07-28 | 2 | 2026-10-20T21:02:43.1171119Z |
| 2026-07-27 – 2026-07-27 | 1 | 2026-10-20T21:02:43.1171119Z |
| 2026-07-23 – 2026-07-23 | 3 | 2026-10-20T21:02:43.1171119Z |
| 2026-07-21 – 2026-07-21 | 2 | 2026-10-20T21:02:43.1171119Z |
| 2026-07-20 – 2026-07-20 | 1 | 2026-10-20T21:02:43.1171119Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 5 Apr 2026 | 2 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 17:35 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:2431207102ae1e5288c338bfea70ceccb106a364b27363fd8fbf6562f44049b8