Metadata-Version: 2.4
Name: bssclient
Version: 0.2.0
Summary: Fully typed, async client library for Basic Supply Service (BSS)
Project-URL: Changelog, https://github.com/Hochfrequenz/bssclient.py/releases
Project-URL: Homepage, https://github.com/Hochfrequenz/bssclient.py
Author-email: Hochfreuqenz Unternehmensberatung GmbH <info+github@hochfrequenz.de>
License: MIT
License-File: LICENSE
Keywords: basic supply,bss
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.11
Requires-Dist: aioauth-client
Requires-Dist: aiohttp[speedups]>=3.9.3
Requires-Dist: more-itertools
Requires-Dist: pydantic>=2.0.0
Requires-Dist: pyjwt
Requires-Dist: pytz
Provides-Extra: coverage
Requires-Dist: coverage==7.6.10; extra == 'coverage'
Provides-Extra: formatting
Requires-Dist: black==24.10.0; extra == 'formatting'
Requires-Dist: isort==5.13.2; extra == 'formatting'
Provides-Extra: linting
Requires-Dist: pylint-pydantic==0.3.5; extra == 'linting'
Requires-Dist: pylint==3.3.3; extra == 'linting'
Provides-Extra: packaging
Requires-Dist: build==1.2.2.post1; extra == 'packaging'
Requires-Dist: twine==6.0.1; extra == 'packaging'
Provides-Extra: spellcheck
Requires-Dist: codespell==2.3.0; extra == 'spellcheck'
Provides-Extra: tests
Requires-Dist: aioresponses==0.7.7; extra == 'tests'
Requires-Dist: pytest-asyncio==0.25.2; extra == 'tests'
Requires-Dist: pytest==8.3.4; extra == 'tests'
Provides-Extra: type-check
Requires-Dist: mypy[pydantic]==1.14.1; extra == 'type-check'
Requires-Dist: types-pytz==2024.2.0.20241221; extra == 'type-check'
Description-Content-Type: text/markdown

# bssclient.py
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
![Python Versions (officially) supported](https://img.shields.io/pypi/pyversions/bssclient.svg)
![Pypi status badge](https://img.shields.io/pypi/v/bssclient)
![Unittests status badge](https://github.com/Hochfrequenz/bssclient.py/workflows/Unittests/badge.svg)
![Coverage status badge](https://github.com/Hochfrequenz/bssclient.py/workflows/Coverage/badge.svg)
![Linting status badge](https://github.com/Hochfrequenz/bssclient.py/workflows/Linting/badge.svg)
![Black status badge](https://github.com/Hochfrequenz/bssclient.py/workflows/Formatting/badge.svg)

This repository contains the package `bssclient`.
It is an async, fully typed Python client for the Basic Supply Service (BSS).

Its features are handwritten and extended as we need them.
So it is _not_ autogenerated from the BSS OpenAPI.

## Installation
Install it [from PyPI](https://pypi.org/project/bssclient/):
```bash
pip install bssclient
```

## Usage

```python
from yarl import URL
from bssclient import bssclient, BssConfig

bss_config = BssConfig(
    server_url=URL("https://my-bss.xtk-test.org/"),
    usr="my-usr",
    pwd="my-pwd",
)
client = bssclient(bss_config)
ermittlungsauftraege = await client.get_all_ermittlungsauftraege()
```

Even though we did not fully replicate the BSS data model,
we tried to make the client as flexible as possible.
You can use any unmapped field returned by TMDS by using the [`model_extra` property of pydantic](https://docs.pydantic.dev/latest/api/base_model/#pydantic.BaseModel.model_extra).

## Development
For development of this library, follow the instructions in our [Python Template Repository](https://github.com/Hochfrequenz/python_template_repository).
tl;dr: `tox -e dev` will set up a development environment for you.

### Release (CI/CD)

To release a new version of this library, [create a new release](https://github.com/Hochfrequenz/bssclient.py/releases/new) in GitHub.
Make sure its tag starts with `v` and the version number, e.g. `v1.2.3`.
Releases are not restricted to the main branch, but we prefer them to happen there.

## Contribute
You are very welcome to contribute to this template repository by opening a pull request against the main branch.
