Skip to main content

Python SDK for Walacor

Project description

Walacor Python SDK

License Apache 2.0 Walacor (1100127456347832400) Walacor (1100127456347832400) Walacor (1100127456347832400)

Walacor Python SDK

PyPI License

A typed, lightweight wrapper around Walacor’s REST API for immutable provenance, schema management and (soon) data‑science transformations.


✨ Features

  • One‑liner setup – a single WalacorService object bootstraps authentication and exposes sub‑clients (auth, schema, data, etc.)
  • Pydantic models everywhere – rich typing, runtime validation and IDE autocompletion.
  • Version‑safe schemas – helper methods to list, inspect and create schema blueprints.
  • Composable requests – thin wrappers over requests that automatically inject Bearer tokens and headers.
  • Python 3.11 + only – enjoy typing generics, | unions, match statements.

📦 Installation

From PyPI (recommended)

pip install walacor-python-sdk

From source (editable)

git clone https://github.com/walacor/python-sdk.git
cd python-sdk
pip install -e .[dev,test]

After installation, import via walacor_sdk (underscore), not the PyPI name with a dash.

from walacor_sdk import WalacorService

🚀 Quick Start

1 – Create a service instance

from walacor_sdk import WalacorService

wal = WalacorService(
    server="http://[walacor.instance.address/api",
    username="Admin",
    password="Password!"
)

Need to change credentials later?

wal.changeCred("new_user", "new_password")

2 – Work with schemas

from walacor_sdk.schema.models import (
    CreateSchemaRequest, CreateSchemaDefinition,
    CreateFieldRequest, CreateIndexRequest
)

schema_req = CreateSchemaRequest(
    ETId=50,    # system envelope for schemas
    SV=1,
    Schema=CreateSchemaDefinition(
        ETId=654321,
        TableName="books",
        Family="library",
        DoSummary=True,
        Fields=[
            CreateFieldRequest(FieldName="book_id", DataType="TEXT", Required=True),
            CreateFieldRequest(FieldName="title",   DataType="TEXT", Required=True)
        ],
        Indexes=[
            CreateIndexRequest(Fields=["book_id"], IndexValue="book_id")
        ]
    )
)

meta = wal.schema.create_schema(schema_req)
print("Created schema envelope:", meta.EId)

Other handy calls:

# list latest versions for every ETId
for s in wal.schema.get_list_with_latest_version():
    print(s.ETId, s.TableName)

# detailed info for a known ETId
info = wal.schema.get_schema_details_with_ETId(654321)
print(info.Fields)

3 – Use enums & constants

from walacor_sdk.utils.enums import SystemEnvelopeType
print(SystemEnvelopeType.SCHEMA.value)   # -> 50

⚙️ Error handling & logging

  • Network errors raise requests.HTTPError so you can retry or surface gracefully.
  • Validation errors are logged with logging.error and result in None/[] returns, never raw dictionaries.
  • The SDK writes to the module‑level walacor_sdk.utils.logger logger; attach your own handler or redirect to file.

🧪 Running tests

pip install .[test]
pytest -q

🤝 Contributing

We love PRs! Please open an issue first for large features. All contributions must:

  • Pass pre-commit hooks (pre-commit run --all-files).
  • Include unit tests with pytest.
  • Follow the existing docstring & typing style.

For full contribution details, see 👉 CONTRIBUTING.md.


📄 License

Apache 2.0 © 2025 Walacor & Contributors.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

walacor_python_sdk-0.1.9.tar.gz (37.3 kB view details)

Uploaded Source

Built Distribution

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

walacor_python_sdk-0.1.9-py3-none-any.whl (34.1 kB view details)

Uploaded Python 3

File details

Details for the file walacor_python_sdk-0.1.9.tar.gz.

File metadata

  • Download URL: walacor_python_sdk-0.1.9.tar.gz
  • Upload date:
  • Size: 37.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for walacor_python_sdk-0.1.9.tar.gz
Algorithm Hash digest
SHA256 3944bf3613f7e211b8fd64c67aaa948e98a02ad75345f290b45919017f151dd5
MD5 6d5ef3e6ec384148017b6d4d93204b10
BLAKE2b-256 2fced9ea137e8e0b0afc5e13ef88ccc0f3395f5c8a080c5ee188e9534cc0b672

See more details on using hashes here.

Provenance

The following attestation bundles were made for walacor_python_sdk-0.1.9.tar.gz:

Publisher: release.yaml on walacor/python-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file walacor_python_sdk-0.1.9-py3-none-any.whl.

File metadata

File hashes

Hashes for walacor_python_sdk-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 060b8a2f5bfbff2df87aa542a80bfa1ea44f45274341f7cb9882f087089d26e5
MD5 d7aa55af50e875077121b55332aae3d3
BLAKE2b-256 f15520175cd593b5500aa80b527ec19beeedc23d18f4d6a49491af57c480df9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for walacor_python_sdk-0.1.9-py3-none-any.whl:

Publisher: release.yaml on walacor/python-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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