Skip to main content

Python SDK for the OBP Accounting Service.

Project description

OBP Accounting SDK

Build status License Code coverage CodeQL PyPI

Description

Python SDK for the OBP Accounting Service.

Usage

The API provides the following main classes to be used asynchronously:

  • obp_accounting_sdk.AsyncAccountingSessionFactory
  • obp_accounting_sdk.AsyncOneshotSession

and the corresponding synchronous versions:

  • obp_accounting_sdk.AccountingSessionFactory
  • obp_accounting_sdk.OneshotSession

The factory class must be instantiated only once, and a new session can be obtained by calling the oneshot_session method used as a context manager:

subtype: ServiceSubtype = ...
proj_id: UUID = ...
user_id: UUID = ...
name: str | None = ...
estimated_count: int = ...
async with accounting_session_factory.oneshot_session(
    subtype=subtype,
    proj_id=proj_id,
    user_id=user_id,
    name=name,
    count=estimated_count,
) as acc_session:
    # actual logic
    acc_session.count = actual_count
    acc_session.name = actual_name

In the example above:

  • The reservation with the accounting service happens when entering the context manager.
  • The usage is sent to the accounting service when exiting the context manager, unless an exception is raised, because in this case we suppose that the actual business logic to be charged didn't get executed.
  • The value of estimated_count is used for reservation, and it's used also for usage unless a new value is assigned to acc_session.count.

Accounting session can be also used without the context manager:

subtype: ServiceSubtype = ...
proj_id: UUID = ...
user_id: UUID = ...
name: str | None = ...
estimated_instances: int = ...
instance_type: str = ...
instances: int = ...
duration: int = ...
acc_session = accounting_session_factory.longrun_session(
    subtype=subtype,
    proj_id=proj_id,
    user_id=user_id,
    name=name,
    instance_type="FARGATE",
    instances=1,
    duration=5,
)

await acc_session.make_reservation()
await acc_session.start() # start method is required only for longrun sessions.

# Actual logic

await acc_session.finish()

[!TIP] The integration with the Accounting service can be disabled by setting the env variable ACCOUNTING_DISABLED=1 before initializing the AsyncAccountingSessionFactory or AccountingSessionFactory object.

Example

See the Demo app for a working example integrated in a simple FastAPI app.

If you installed tox, and if you have a running instance of the Accounting service, you can set the required env variables and run the demo with:

export ACCOUNTING_BASE_URL=http://127.0.0.1:8100
export UVICORN_PORT=8000
tox -e demo

and call the endpoint after setting a valid project-id and user-id with:

export PROJECT_ID=8eb248a8-672c-4158-9365-b95286cba796
export USER_ID=7ee00c6c-3f92-4ac0-b49e-9f690f76826e
curl -vs "http://127.0.0.1:$UVICORN_PORT/query" \
-H "content-type: application/json" \
-H "project-id: $PROJECT_ID" \
-H "user-id: $USER_ID" \
--data-binary @- <<EOF
{"input_text": "my query"}
EOF

Contribution Guidelines

See CONTRIBUTING.

Acknowledgment

The development of this software was supported by funding to the Blue Brain Project, a research center of the École polytechnique fédérale de Lausanne (EPFL), from the Swiss government’s ETH Board of the Swiss Federal Institutes of Technology.

For license and authors, see LICENSE and AUTHORS respectively.

Copyright © 2024 Blue Brain Project/EPFL

Copyright © 2025 Open Brain Institute

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

obp_accounting_sdk-0.6.1.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.

obp_accounting_sdk-0.6.1-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file obp_accounting_sdk-0.6.1.tar.gz.

File metadata

  • Download URL: obp_accounting_sdk-0.6.1.tar.gz
  • Upload date:
  • Size: 36.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for obp_accounting_sdk-0.6.1.tar.gz
Algorithm Hash digest
SHA256 70f895bc0cf126ebd28aed187eea6758e1bf8ee06d567c0ad9c9413a0cf8d403
MD5 0a42052babf59c429affcbc7c3e97b41
BLAKE2b-256 ab45ed7e5e5612f3fa321feabdad24b4916b4807f0c583c5c9b18ec61b5154e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for obp_accounting_sdk-0.6.1.tar.gz:

Publisher: publish-sdist.yml on openbraininstitute/accounting-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 obp_accounting_sdk-0.6.1-py3-none-any.whl.

File metadata

File hashes

Hashes for obp_accounting_sdk-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c8d0477ddc972a2374b688d54b955f9ffadf4c5ee8b57c6d9d39ae25b6af1f23
MD5 31e0ff936602af039045d04c0f7a0a99
BLAKE2b-256 5cddc90f6da98fac0d84f9e1af74b066caf4bcc6b0d41c0a1a0012d4d8880747

See more details on using hashes here.

Provenance

The following attestation bundles were made for obp_accounting_sdk-0.6.1-py3-none-any.whl:

Publisher: publish-sdist.yml on openbraininstitute/accounting-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