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.6.tar.gz (36.1 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.6-py3-none-any.whl (32.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: walacor_python_sdk-0.1.6.tar.gz
  • Upload date:
  • Size: 36.1 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.6.tar.gz
Algorithm Hash digest
SHA256 77f405ac5f08000ad27ed25df99138b62e835dd8d3a0f7246d9ae3ee4a7d1b6e
MD5 21bbbace429ddc4e770f2b247ef498f1
BLAKE2b-256 182435c035117027c6c4f18d6ade37b8bbcc3080ea29f4a5b426721233c05a76

See more details on using hashes here.

Provenance

The following attestation bundles were made for walacor_python_sdk-0.1.6.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.6-py3-none-any.whl.

File metadata

File hashes

Hashes for walacor_python_sdk-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 30095d15ff980aa36007bb6b26615f09978ee6074bbd61d0aa5bc89aa1aee392
MD5 297b2854c34e02bd7e2e02372610fe78
BLAKE2b-256 be5387350922e2b72e4aa36118ace6418ff413c2a6576ef5aaa1cff5cef1d3a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for walacor_python_sdk-0.1.6-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