# tmdsclient.py
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
![Python Versions (officially) supported](https://img.shields.io/pypi/pyversions/tmdsclient.svg)
![Pypi status badge](https://img.shields.io/pypi/v/tmdsclient)
![Unittests status badge](https://github.com/Hochfrequenz/tmdsclient.py/workflows/Unittests/badge.svg)
![Coverage status badge](https://github.com/Hochfrequenz/tmdsclient.py/workflows/Coverage/badge.svg)
![Linting status badge](https://github.com/Hochfrequenz/tmdsclient.py/workflows/Linting/badge.svg)
![Black status badge](https://github.com/Hochfrequenz/tmdsclient.py/workflows/Formatting/badge.svg)
This repository contains the package `tmdsclient`.
It is an async, fully typed Python client for the Technical Master Data Service (TMDS).
Its features are handwritten and extended as we need them.
So it is _not_ autogenerated from the TMDS OpenAPI.
## Installation
Install it [from PyPI](https://pypi.org/project/tmdsclient/):
```bash
pip install tmdsclient
```
## Usage
```python
from yarl import URL
from tmdsclient import BasicAuthTmdsClient, BasicAuthTmdsConfig
tmds_config = BasicAuthTmdsConfig(
server_url=URL("https://my-tmds.xtk-test.org/"),
usr="my-usr",
pwd="my-pwd",
)
client = BasicAuthTmdsClient(tmds_config)
netzvertrage = await client.get_netzvertraege_for_melo("DE1234567890123456789012345678901")
```
Even though we did not fully replicate the TMDS data model (mainly [BO4E.net](https://github.com/Hochfrequenz/BO4E-dotnet/) + some wrapper classes),
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/tmdsclient.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.
Raw data
{
"_id": null,
"home_page": null,
"name": "tmdsclient",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "technical master data, tmds",
"author": null,
"author_email": "Hochfreuqenz Unternehmensberatung GmbH <info+github@hochfrequenz.de>",
"download_url": "https://files.pythonhosted.org/packages/c7/2a/4706dd13bfb31282b6ee3474aea2c31fa8906a19220c3831544ae4b83ef1/tmdsclient-0.5.4.tar.gz",
"platform": null,
"description": "# tmdsclient.py\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n![Python Versions (officially) supported](https://img.shields.io/pypi/pyversions/tmdsclient.svg)\n![Pypi status badge](https://img.shields.io/pypi/v/tmdsclient)\n![Unittests status badge](https://github.com/Hochfrequenz/tmdsclient.py/workflows/Unittests/badge.svg)\n![Coverage status badge](https://github.com/Hochfrequenz/tmdsclient.py/workflows/Coverage/badge.svg)\n![Linting status badge](https://github.com/Hochfrequenz/tmdsclient.py/workflows/Linting/badge.svg)\n![Black status badge](https://github.com/Hochfrequenz/tmdsclient.py/workflows/Formatting/badge.svg)\n\nThis repository contains the package `tmdsclient`.\nIt is an async, fully typed Python client for the Technical Master Data Service (TMDS).\n\nIts features are handwritten and extended as we need them.\nSo it is _not_ autogenerated from the TMDS OpenAPI.\n\n## Installation\nInstall it [from PyPI](https://pypi.org/project/tmdsclient/):\n```bash\npip install tmdsclient\n```\n\n## Usage\n```python\nfrom yarl import URL\nfrom tmdsclient import BasicAuthTmdsClient, BasicAuthTmdsConfig\n\ntmds_config = BasicAuthTmdsConfig(\n server_url=URL(\"https://my-tmds.xtk-test.org/\"),\n usr=\"my-usr\",\n pwd=\"my-pwd\",\n)\nclient = BasicAuthTmdsClient(tmds_config)\nnetzvertrage = await client.get_netzvertraege_for_melo(\"DE1234567890123456789012345678901\")\n```\n\nEven though we did not fully replicate the TMDS data model (mainly [BO4E.net](https://github.com/Hochfrequenz/BO4E-dotnet/) + some wrapper classes),\nwe tried to make the client as flexible as possible.\nYou 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).\n\n## Development\nFor development of this library, follow the instructions in our [Python Template Repository](https://github.com/Hochfrequenz/python_template_repository).\ntl;dr: `tox -e dev` will set up a development environment for you.\n\n### Release (CI/CD)\n\nTo release a new version of this library, [create a new release](https://github.com/Hochfrequenz/tmdsclient.py/releases/new) in GitHub.\nMake sure its tag starts with `v` and the version number, e.g. `v1.2.3`.\nReleases are not restricted to the main branch, but we prefer them to happen there.\n\n## Contribute\nYou are very welcome to contribute to this template repository by opening a pull request against the main branch.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Fully typed, async client library for Technical Master Data Service (TMDS)",
"version": "0.5.4",
"project_urls": {
"Changelog": "https://github.com/Hochfrequenz/tmdsclient.py/releases",
"Homepage": "https://github.com/Hochfrequenz/tmdsclient.py"
},
"split_keywords": [
"technical master data",
" tmds"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "639b9f6cb3145c34d8bc969d6d0f22f5d99637f855815b2ef6686f90c6741279",
"md5": "8d290e7506018810825f03eb10ad7973",
"sha256": "49c856a66cb3e2ce822e9c5919b869f5bbcac34e12d0f700e954b7c0c83d86b6"
},
"downloads": -1,
"filename": "tmdsclient-0.5.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8d290e7506018810825f03eb10ad7973",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 25780,
"upload_time": "2024-10-29T06:42:31",
"upload_time_iso_8601": "2024-10-29T06:42:31.546453Z",
"url": "https://files.pythonhosted.org/packages/63/9b/9f6cb3145c34d8bc969d6d0f22f5d99637f855815b2ef6686f90c6741279/tmdsclient-0.5.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c72a4706dd13bfb31282b6ee3474aea2c31fa8906a19220c3831544ae4b83ef1",
"md5": "390696ed8a48f94a2d15ea23b0272730",
"sha256": "6c1f2f44dedd2583b5636e00f01d8cd6bc0dd7914fd3981d55bb786927525ad9"
},
"downloads": -1,
"filename": "tmdsclient-0.5.4.tar.gz",
"has_sig": false,
"md5_digest": "390696ed8a48f94a2d15ea23b0272730",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 24455,
"upload_time": "2024-10-29T06:42:33",
"upload_time_iso_8601": "2024-10-29T06:42:33.567621Z",
"url": "https://files.pythonhosted.org/packages/c7/2a/4706dd13bfb31282b6ee3474aea2c31fa8906a19220c3831544ae4b83ef1/tmdsclient-0.5.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-29 06:42:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Hochfrequenz",
"github_project": "tmdsclient.py",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "aioauth-client",
"specs": [
[
"==",
"0.28.1"
]
]
},
{
"name": "aiohappyeyeballs",
"specs": [
[
"==",
"2.4.3"
]
]
},
{
"name": "aiohttp",
"specs": [
[
"==",
"3.10.10"
]
]
},
{
"name": "aiosignal",
"specs": [
[
"==",
"1.3.1"
]
]
},
{
"name": "annotated-types",
"specs": [
[
"==",
"0.7.0"
]
]
},
{
"name": "anyio",
"specs": [
[
"==",
"4.6.2.post1"
]
]
},
{
"name": "attrs",
"specs": [
[
"==",
"24.2.0"
]
]
},
{
"name": "bo4e",
"specs": [
[
"==",
"202401.2.1"
]
]
},
{
"name": "brotli",
"specs": [
[
"==",
"1.1.0"
]
]
},
{
"name": "certifi",
"specs": [
[
"==",
"2024.8.30"
]
]
},
{
"name": "frozenlist",
"specs": [
[
"==",
"1.4.1"
]
]
},
{
"name": "h11",
"specs": [
[
"==",
"0.14.0"
]
]
},
{
"name": "httpcore",
"specs": [
[
"==",
"1.0.6"
]
]
},
{
"name": "httpx",
"specs": [
[
"==",
"0.27.2"
]
]
},
{
"name": "idna",
"specs": [
[
"==",
"3.10"
]
]
},
{
"name": "iso3166",
"specs": [
[
"==",
"2.1.1"
]
]
},
{
"name": "jsonpatch",
"specs": [
[
"==",
"1.33"
]
]
},
{
"name": "jsonpointer",
"specs": [
[
"==",
"3.0.0"
]
]
},
{
"name": "more-itertools",
"specs": [
[
"==",
"10.5.0"
]
]
},
{
"name": "multidict",
"specs": [
[
"==",
"6.0.5"
]
]
},
{
"name": "propcache",
"specs": [
[
"==",
"0.2.0"
]
]
},
{
"name": "pydantic",
"specs": [
[
"==",
"2.7.1"
]
]
},
{
"name": "pydantic-core",
"specs": [
[
"==",
"2.18.2"
]
]
},
{
"name": "pyhumps",
"specs": [
[
"==",
"3.8.0"
]
]
},
{
"name": "pyjwt",
"specs": [
[
"==",
"2.9.0"
]
]
},
{
"name": "sniffio",
"specs": [
[
"==",
"1.3.1"
]
]
},
{
"name": "typing-extensions",
"specs": [
[
"==",
"4.12.2"
]
]
},
{
"name": "yarl",
"specs": [
[
"==",
"1.16.0"
]
]
}
],
"tox": true,
"lcname": "tmdsclient"
}