Skip to main content

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.

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

  1. Open PR to main

  2. Merge after approval

  3. 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

pycarol-2.56.12.tar.gz (118.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pycarol-2.56.12-py3-none-any.whl (136.3 kB view details)

Uploaded Python 3

File details

Details for the file pycarol-2.56.12.tar.gz.

File metadata

  • Download URL: pycarol-2.56.12.tar.gz
  • Upload date:
  • Size: 118.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for pycarol-2.56.12.tar.gz
Algorithm Hash digest
SHA256 7c98f106927ca5bba6bb6be8578bc7c9177fe9ab4ac7320fc7e45ec3ec936038
MD5 5bc765e8d53697fb924e8db2b0609c7b
BLAKE2b-256 be42e13968fd88b83d1f6e44715732796ebeec6c8ddfa666a0c552656bc1afa0

See more details on using hashes here.

File details

Details for the file pycarol-2.56.12-py3-none-any.whl.

File metadata

  • Download URL: pycarol-2.56.12-py3-none-any.whl
  • Upload date:
  • Size: 136.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for pycarol-2.56.12-py3-none-any.whl
Algorithm Hash digest
SHA256 07c2bd711af14db16211ede865ca7a009ebacaa56546f591db74027eab8a6d27
MD5 de740f9c9a697961b480f46850be11a1
BLAKE2b-256 14410d6497591c221b3e6a71733bf946c5d222bb21e7d2462509ac248acba948

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page