Carol Python API and Tools
Project description
PyCarol
PyCarol is a Python SDK designed to support data ingestion and data access workflows on Carol. It provides abstractions for authentication, connector and staging management, data ingestion, and querying, enabling reliable integration with Carol services using Python. The SDK encapsulates low-level API communication and authentication logic, making data pipelines easier to build, maintain, and operate.
Table of Contents
Getting Started
Run pip install pycarol to install the latest stable version from PyPI. Documentation is hosted on Read the Docs.
Recommended authentication method
Never write passwords or API tokens in plain text. Use environment variables whenever possible.
Carol URL format:
www.ORGANIZATION.carol.ai/TENANT_NAME
Explicit authentication methods
Carol is the main object to access pyCarol and Carol APIs.
Using user/password
from pycarol import PwdAuth, Carol
carol = Carol(
domain=TENANT_NAME,
app_name=APP_NAME,
auth=PwdAuth(USERNAME, PASSWORD),
organization=ORGANIZATION
)
Using Tokens
from pycarol import PwdKeyAuth, Carol
carol = Carol(
domain=TENANT_NAME,
app_name=APP_NAME,
auth=PwdKeyAuth(pwd_auth_token),
organization=ORGANIZATION
)
Using API Key
from pycarol import ApiKeyAuth, Carol
carol = Carol(
domain=DOMAIN,
app_name=APP_NAME,
auth=ApiKeyAuth(api_key=X_AUTH_KEY),
connector_id=CONNECTORID,
organization=ORGANIZATION
)
Setting up Carol entities
from pycarol import Connectors
connector_id = Connectors(carol).create(
name="my_connector",
label="connector_label"
)
Sending Data
from pycarol import Staging
Staging(carol).send_data(
staging_name="my_stag",
data=[{"name": "Rafael"}],
connector_id=CONNECTORID
)
Reading data
from pycarol import BQ, Carol
BQ(Carol()).query("SELECT * FROM stg_connectorname_tablename")
Carol In Memory
from pycarol import Memory
memory = Memory()
memory.add("my_table", [{"id": 1}])
memory.query("SELECT * FROM my_table")
Logging
Prerequisites
Set LONGTASKID when running locally.
Logging messages to Carol
import logging
from pycarol import CarolHandler, Carol
logger = logging.getLogger(__name__)
logger.addHandler(CarolHandler(Carol()))
logger.info("Hello Carol")
Notes
Logs are linked to long tasks
Console fallback when task ID is missing
Calling Carol APIs
carol.call_api("v1/some/endpoint", method="POST")
Settings
from pycarol.apps import Apps
Apps(carol).get_settings(app_name="my_app")
Useful Functions
from pycarol.functions import track_tasks
track_tasks(carol, ["task1", "task2"])
Release process
Open PR to main
Merge after approval
Update README if needed
Made with ❤ at TOTVS IDeIA
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
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
File details
Details for the file pycarol-2.56.10.tar.gz.
File metadata
- Download URL: pycarol-2.56.10.tar.gz
- Upload date:
- Size: 117.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3abe5360995733f1f42ac15cebb62371eb184de07ae0d95b25d6154ddb3370e5
|
|
| MD5 |
eebe84b76fd69eb72feef7c85bbb6a81
|
|
| BLAKE2b-256 |
39ae10df0d64620ad547a590c8d7c3267b1d94b8623c177525a2159d28e0afcb
|
File details
Details for the file pycarol-2.56.10-py3-none-any.whl.
File metadata
- Download URL: pycarol-2.56.10-py3-none-any.whl
- Upload date:
- Size: 135.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac45bd80838f1d5da49737d83c08c84628449162ba16eab385884501499ec94f
|
|
| MD5 |
56ecdb5f0293e95a8f30b82ac59bbab9
|
|
| BLAKE2b-256 |
f03f9e98173c9669332285a1b11d2dddf434cc33789ec919ae6a318644a913bc
|