From 3561b84ce90adb3dc2896127a7eb67b331f5714d Mon Sep 17 00:00:00 2001 From: ckunki Date: Sun, 15 Feb 2026 12:56:07 +0100 Subject: [PATCH 01/47] updated dependencies, adapted to PTB version 5 --- noxconfig.py | 22 +- noxfile.py | 2 +- poetry.lock | 1506 +++++++++++++++++++++++++++++------------------- pyproject.toml | 4 +- 4 files changed, 921 insertions(+), 613 deletions(-) diff --git a/noxconfig.py b/noxconfig.py index 6d2ae370..7b994594 100644 --- a/noxconfig.py +++ b/noxconfig.py @@ -1,19 +1,9 @@ -from collections.abc import Iterable -from dataclasses import dataclass from pathlib import Path -ROOT_DIR = Path(__file__).parent +from exasol.toolbox.config import BaseConfig - -@dataclass(frozen=True) -class Config: - root: Path = ROOT_DIR - doc: Path = ROOT_DIR / "doc" - source: Path = Path("exasol/saas") - version_file: Path = ROOT_DIR / "version.py" - path_filters: Iterable[str] = ("dist", ".eggs", "venv") - - python_versions = ["3.10"] - - -PROJECT_CONFIG = Config() +PROJECT_CONFIG = BaseConfig( + root_path=Path(__file__).parent, + project_name="saas", + python_versions=("3.10", "3.11", "3.12", "3.13"), +) diff --git a/noxfile.py b/noxfile.py index 96cb6164..3b11582b 100644 --- a/noxfile.py +++ b/noxfile.py @@ -22,7 +22,7 @@ from noxconfig import PROJECT_CONFIG # default actions to be run if nothing is explicitly specified with the -s option -nox.options.sessions = ["project:fix"] +nox.options.sessions = ["format:fix"] # destination folder for the generated open api client code DEST_DIR = "exasol/saas/client/openapi" diff --git a/poetry.lock b/poetry.lock index 21b54a8f..b8b2c8db 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.3.0 and should not be changed by hand. [[package]] name = "accessible-pygments" @@ -31,6 +31,18 @@ files = [ {file = "alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65"}, ] +[[package]] +name = "annotated-doc" +version = "0.0.4" +description = "Document parameters, class attributes, return types, and variables inline, with Annotated." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320"}, + {file = "annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4"}, +] + [[package]] name = "annotated-types" version = "0.7.0" @@ -45,24 +57,23 @@ files = [ [[package]] name = "anyio" -version = "4.11.0" +version = "4.12.1" description = "High-level concurrency and networking framework on top of asyncio or Trio" optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "anyio-4.11.0-py3-none-any.whl", hash = "sha256:0287e96f4d26d4149305414d4e3bc32f0dcd0862365a4bddea19d7a1ec38c4fc"}, - {file = "anyio-4.11.0.tar.gz", hash = "sha256:82a8d0b81e318cc5ce71a5f1f8b5c4e63619620b63141ef8c995fa0db95a57c4"}, + {file = "anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c"}, + {file = "anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703"}, ] [package.dependencies] exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" -sniffio = ">=1.1" typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] -trio = ["trio (>=0.31.0)"] +trio = ["trio (>=0.31.0) ; python_version < \"3.10\"", "trio (>=0.32.0) ; python_version >= \"3.10\""] [[package]] name = "apeye" @@ -119,14 +130,14 @@ test = ["coverage", "mypy", "pexpect", "ruff", "wheel"] [[package]] name = "astroid" -version = "4.0.2" +version = "4.0.4" description = "An abstract syntax tree for Python with inference support." optional = false python-versions = ">=3.10.0" groups = ["dev"] files = [ - {file = "astroid-4.0.2-py3-none-any.whl", hash = "sha256:d7546c00a12efc32650b19a2bb66a153883185d3179ab0d4868086f807338b9b"}, - {file = "astroid-4.0.2.tar.gz", hash = "sha256:ac8fb7ca1c08eb9afec91ccc23edbd8ac73bb22cbdd7da1d488d9fb8d6579070"}, + {file = "astroid-4.0.4-py3-none-any.whl", hash = "sha256:52f39653876c7dec3e3afd4c2696920e05c83832b9737afc21928f2d2eb7a753"}, + {file = "astroid-4.0.4.tar.gz", hash = "sha256:986fed8bcf79fb82c78b18a53352a0b287a73817d6dbcfba3162da36667c49a0"}, ] [package.dependencies] @@ -161,14 +172,14 @@ Sphinx = ">=4.0,<9.0" [[package]] name = "babel" -version = "2.17.0" +version = "2.18.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, - {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, + {file = "babel-2.18.0-py3-none-any.whl", hash = "sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35"}, + {file = "babel-2.18.0.tar.gz", hash = "sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d"}, ] [package.extras] @@ -193,14 +204,14 @@ testing = ["jaraco.test", "pytest (!=8.0.*)", "pytest (>=6,!=8.1.*)", "pytest-ch [[package]] name = "bandit" -version = "1.9.2" +version = "1.9.3" description = "Security oriented static analyser for python code." optional = false python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "bandit-1.9.2-py3-none-any.whl", hash = "sha256:bda8d68610fc33a6e10b7a8f1d61d92c8f6c004051d5e946406be1fb1b16a868"}, - {file = "bandit-1.9.2.tar.gz", hash = "sha256:32410415cd93bf9c8b91972159d5cf1e7f063a9146d70345641cd3877de348ce"}, + {file = "bandit-1.9.3-py3-none-any.whl", hash = "sha256:4745917c88d2246def79748bde5e08b9d5e9b92f877863d43fab70cd8814ce6a"}, + {file = "bandit-1.9.3.tar.gz", hash = "sha256:ade4b9b7786f89ef6fc7344a52b34558caec5da74cb90373aed01de88472f774"}, ] [package.dependencies] @@ -219,18 +230,18 @@ yaml = ["PyYAML"] [[package]] name = "beautifulsoup4" -version = "4.14.2" +version = "4.14.3" description = "Screen-scraping library" optional = false python-versions = ">=3.7.0" groups = ["dev"] files = [ - {file = "beautifulsoup4-4.14.2-py3-none-any.whl", hash = "sha256:5ef6fa3a8cbece8488d66985560f97ed091e22bbc4e9c2338508a9d5de6d4515"}, - {file = "beautifulsoup4-4.14.2.tar.gz", hash = "sha256:2a98ab9f944a11acee9cc848508ec28d9228abfd522ef0fad6a02a72e0ded69e"}, + {file = "beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb"}, + {file = "beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86"}, ] [package.dependencies] -soupsieve = ">1.2" +soupsieve = ">=1.6.1" typing-extensions = ">=4.0.0" [package.extras] @@ -242,38 +253,39 @@ lxml = ["lxml"] [[package]] name = "black" -version = "25.11.0" +version = "25.12.0" description = "The uncompromising code formatter." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "black-25.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ec311e22458eec32a807f029b2646f661e6859c3f61bc6d9ffb67958779f392e"}, - {file = "black-25.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1032639c90208c15711334d681de2e24821af0575573db2810b0763bcd62e0f0"}, - {file = "black-25.11.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0c0f7c461df55cf32929b002335883946a4893d759f2df343389c4396f3b6b37"}, - {file = "black-25.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:f9786c24d8e9bd5f20dc7a7f0cdd742644656987f6ea6947629306f937726c03"}, - {file = "black-25.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:895571922a35434a9d8ca67ef926da6bc9ad464522a5fe0db99b394ef1c0675a"}, - {file = "black-25.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cb4f4b65d717062191bdec8e4a442539a8ea065e6af1c4f4d36f0cdb5f71e170"}, - {file = "black-25.11.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d81a44cbc7e4f73a9d6ae449ec2317ad81512d1e7dce7d57f6333fd6259737bc"}, - {file = "black-25.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:7eebd4744dfe92ef1ee349dc532defbf012a88b087bb7ddd688ff59a447b080e"}, - {file = "black-25.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:80e7486ad3535636657aa180ad32a7d67d7c273a80e12f1b4bfa0823d54e8fac"}, - {file = "black-25.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6cced12b747c4c76bc09b4db057c319d8545307266f41aaee665540bc0e04e96"}, - {file = "black-25.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6cb2d54a39e0ef021d6c5eef442e10fd71fcb491be6413d083a320ee768329dd"}, - {file = "black-25.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae263af2f496940438e5be1a0c1020e13b09154f3af4df0835ea7f9fe7bfa409"}, - {file = "black-25.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0a1d40348b6621cc20d3d7530a5b8d67e9714906dfd7346338249ad9c6cedf2b"}, - {file = "black-25.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:51c65d7d60bb25429ea2bf0731c32b2a2442eb4bd3b2afcb47830f0b13e58bfd"}, - {file = "black-25.11.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:936c4dd07669269f40b497440159a221ee435e3fddcf668e0c05244a9be71993"}, - {file = "black-25.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:f42c0ea7f59994490f4dccd64e6b2dd49ac57c7c84f38b8faab50f8759db245c"}, - {file = "black-25.11.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:35690a383f22dd3e468c85dc4b915217f87667ad9cce781d7b42678ce63c4170"}, - {file = "black-25.11.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:dae49ef7369c6caa1a1833fd5efb7c3024bb7e4499bf64833f65ad27791b1545"}, - {file = "black-25.11.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bd4a22a0b37401c8e492e994bce79e614f91b14d9ea911f44f36e262195fdda"}, - {file = "black-25.11.0-cp314-cp314-win_amd64.whl", hash = "sha256:aa211411e94fdf86519996b7f5f05e71ba34835d8f0c0f03c00a26271da02664"}, - {file = "black-25.11.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a3bb5ce32daa9ff0605d73b6f19da0b0e6c1f8f2d75594db539fdfed722f2b06"}, - {file = "black-25.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9815ccee1e55717fe9a4b924cae1646ef7f54e0f990da39a34fc7b264fcf80a2"}, - {file = "black-25.11.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:92285c37b93a1698dcbc34581867b480f1ba3a7b92acf1fe0467b04d7a4da0dc"}, - {file = "black-25.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:43945853a31099c7c0ff8dface53b4de56c41294fa6783c0441a8b1d9bf668bc"}, - {file = "black-25.11.0-py3-none-any.whl", hash = "sha256:e3f562da087791e96cefcd9dda058380a442ab322a02e222add53736451f604b"}, - {file = "black-25.11.0.tar.gz", hash = "sha256:9a323ac32f5dc75ce7470501b887250be5005a01602e931a15e45593f70f6e08"}, + {file = "black-25.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f85ba1ad15d446756b4ab5f3044731bf68b777f8f9ac9cdabd2425b97cd9c4e8"}, + {file = "black-25.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:546eecfe9a3a6b46f9d69d8a642585a6eaf348bcbbc4d87a19635570e02d9f4a"}, + {file = "black-25.12.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:17dcc893da8d73d8f74a596f64b7c98ef5239c2cd2b053c0f25912c4494bf9ea"}, + {file = "black-25.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:09524b0e6af8ba7a3ffabdfc7a9922fb9adef60fed008c7cd2fc01f3048e6e6f"}, + {file = "black-25.12.0-cp310-cp310-win_arm64.whl", hash = "sha256:b162653ed89eb942758efeb29d5e333ca5bb90e5130216f8369857db5955a7da"}, + {file = "black-25.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d0cfa263e85caea2cff57d8f917f9f51adae8e20b610e2b23de35b5b11ce691a"}, + {file = "black-25.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1a2f578ae20c19c50a382286ba78bfbeafdf788579b053d8e4980afb079ab9be"}, + {file = "black-25.12.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3e1b65634b0e471d07ff86ec338819e2ef860689859ef4501ab7ac290431f9b"}, + {file = "black-25.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a3fa71e3b8dd9f7c6ac4d818345237dfb4175ed3bf37cd5a581dbc4c034f1ec5"}, + {file = "black-25.12.0-cp311-cp311-win_arm64.whl", hash = "sha256:51e267458f7e650afed8445dc7edb3187143003d52a1b710c7321aef22aa9655"}, + {file = "black-25.12.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:31f96b7c98c1ddaeb07dc0f56c652e25bdedaac76d5b68a059d998b57c55594a"}, + {file = "black-25.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:05dd459a19e218078a1f98178c13f861fe6a9a5f88fc969ca4d9b49eb1809783"}, + {file = "black-25.12.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1f68c5eff61f226934be6b5b80296cf6939e5d2f0c2f7d543ea08b204bfaf59"}, + {file = "black-25.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:274f940c147ddab4442d316b27f9e332ca586d39c85ecf59ebdea82cc9ee8892"}, + {file = "black-25.12.0-cp312-cp312-win_arm64.whl", hash = "sha256:169506ba91ef21e2e0591563deda7f00030cb466e747c4b09cb0a9dae5db2f43"}, + {file = "black-25.12.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a05ddeb656534c3e27a05a29196c962877c83fa5503db89e68857d1161ad08a5"}, + {file = "black-25.12.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9ec77439ef3e34896995503865a85732c94396edcc739f302c5673a2315e1e7f"}, + {file = "black-25.12.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e509c858adf63aa61d908061b52e580c40eae0dfa72415fa47ac01b12e29baf"}, + {file = "black-25.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:252678f07f5bac4ff0d0e9b261fbb029fa530cfa206d0a636a34ab445ef8ca9d"}, + {file = "black-25.12.0-cp313-cp313-win_arm64.whl", hash = "sha256:bc5b1c09fe3c931ddd20ee548511c64ebf964ada7e6f0763d443947fd1c603ce"}, + {file = "black-25.12.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:0a0953b134f9335c2434864a643c842c44fba562155c738a2a37a4d61f00cad5"}, + {file = "black-25.12.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2355bbb6c3b76062870942d8cc450d4f8ac71f9c93c40122762c8784df49543f"}, + {file = "black-25.12.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9678bd991cc793e81d19aeeae57966ee02909877cb65838ccffef24c3ebac08f"}, + {file = "black-25.12.0-cp314-cp314-win_amd64.whl", hash = "sha256:97596189949a8aad13ad12fcbb4ae89330039b96ad6742e6f6b45e75ad5cfd83"}, + {file = "black-25.12.0-cp314-cp314-win_arm64.whl", hash = "sha256:778285d9ea197f34704e3791ea9404cd6d07595745907dd2ce3da7a13627b29b"}, + {file = "black-25.12.0-py3-none-any.whl", hash = "sha256:48ceb36c16dbc84062740049eef990bb2ce07598272e673c17d1a7720c71c828"}, + {file = "black-25.12.0.tar.gz", hash = "sha256:8d3dd9cea14bff7ddc0eb243c811cdb1a011ebb4800a5f0335a01a68654796a7"}, ] [package.dependencies] @@ -334,14 +346,14 @@ redis = ["redis (>=2.10.5)"] [[package]] name = "certifi" -version = "2025.11.12" +version = "2026.1.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" groups = ["main", "dev"] files = [ - {file = "certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b"}, - {file = "certifi-2025.11.12.tar.gz", hash = "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316"}, + {file = "certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c"}, + {file = "certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120"}, ] [[package]] @@ -625,104 +637,118 @@ development = ["black", "flake8", "mypy", "pytest", "types-colorama"] [[package]] name = "coverage" -version = "7.12.0" +version = "7.13.4" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "coverage-7.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:32b75c2ba3f324ee37af3ccee5b30458038c50b349ad9b88cee85096132a575b"}, - {file = "coverage-7.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cb2a1b6ab9fe833714a483a915de350abc624a37149649297624c8d57add089c"}, - {file = "coverage-7.12.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5734b5d913c3755e72f70bf6cc37a0518d4f4745cde760c5d8e12005e62f9832"}, - {file = "coverage-7.12.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b527a08cdf15753279b7afb2339a12073620b761d79b81cbe2cdebdb43d90daa"}, - {file = "coverage-7.12.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9bb44c889fb68004e94cab71f6a021ec83eac9aeabdbb5a5a88821ec46e1da73"}, - {file = "coverage-7.12.0-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4b59b501455535e2e5dde5881739897967b272ba25988c89145c12d772810ccb"}, - {file = "coverage-7.12.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d8842f17095b9868a05837b7b1b73495293091bed870e099521ada176aa3e00e"}, - {file = "coverage-7.12.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c5a6f20bf48b8866095c6820641e7ffbe23f2ac84a2efc218d91235e404c7777"}, - {file = "coverage-7.12.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:5f3738279524e988d9da2893f307c2093815c623f8d05a8f79e3eff3a7a9e553"}, - {file = "coverage-7.12.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0d68c1f7eabbc8abe582d11fa393ea483caf4f44b0af86881174769f185c94d"}, - {file = "coverage-7.12.0-cp310-cp310-win32.whl", hash = "sha256:7670d860e18b1e3ee5930b17a7d55ae6287ec6e55d9799982aa103a2cc1fa2ef"}, - {file = "coverage-7.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:f999813dddeb2a56aab5841e687b68169da0d3f6fc78ccf50952fa2463746022"}, - {file = "coverage-7.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aa124a3683d2af98bd9d9c2bfa7a5076ca7e5ab09fdb96b81fa7d89376ae928f"}, - {file = "coverage-7.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d93fbf446c31c0140208dcd07c5d882029832e8ed7891a39d6d44bd65f2316c3"}, - {file = "coverage-7.12.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:52ca620260bd8cd6027317bdd8b8ba929be1d741764ee765b42c4d79a408601e"}, - {file = "coverage-7.12.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f3433ffd541380f3a0e423cff0f4926d55b0cc8c1d160fdc3be24a4c03aa65f7"}, - {file = "coverage-7.12.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f7bbb321d4adc9f65e402c677cd1c8e4c2d0105d3ce285b51b4d87f1d5db5245"}, - {file = "coverage-7.12.0-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:22a7aade354a72dff3b59c577bfd18d6945c61f97393bc5fb7bd293a4237024b"}, - {file = "coverage-7.12.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3ff651dcd36d2fea66877cd4a82de478004c59b849945446acb5baf9379a1b64"}, - {file = "coverage-7.12.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:31b8b2e38391a56e3cea39d22a23faaa7c3fc911751756ef6d2621d2a9daf742"}, - {file = "coverage-7.12.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:297bc2da28440f5ae51c845a47c8175a4db0553a53827886e4fb25c66633000c"}, - {file = "coverage-7.12.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6ff7651cc01a246908eac162a6a86fc0dbab6de1ad165dfb9a1e2ec660b44984"}, - {file = "coverage-7.12.0-cp311-cp311-win32.whl", hash = "sha256:313672140638b6ddb2c6455ddeda41c6a0b208298034544cfca138978c6baed6"}, - {file = "coverage-7.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1783ed5bd0d5938d4435014626568dc7f93e3cb99bc59188cc18857c47aa3c4"}, - {file = "coverage-7.12.0-cp311-cp311-win_arm64.whl", hash = "sha256:4648158fd8dd9381b5847622df1c90ff314efbfc1df4550092ab6013c238a5fc"}, - {file = "coverage-7.12.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:29644c928772c78512b48e14156b81255000dcfd4817574ff69def189bcb3647"}, - {file = "coverage-7.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8638cbb002eaa5d7c8d04da667813ce1067080b9a91099801a0053086e52b736"}, - {file = "coverage-7.12.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:083631eeff5eb9992c923e14b810a179798bb598e6a0dd60586819fc23be6e60"}, - {file = "coverage-7.12.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:99d5415c73ca12d558e07776bd957c4222c687b9f1d26fa0e1b57e3598bdcde8"}, - {file = "coverage-7.12.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e949ebf60c717c3df63adb4a1a366c096c8d7fd8472608cd09359e1bd48ef59f"}, - {file = "coverage-7.12.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6d907ddccbca819afa2cd014bc69983b146cca2735a0b1e6259b2a6c10be1e70"}, - {file = "coverage-7.12.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b1518ecbad4e6173f4c6e6c4a46e49555ea5679bf3feda5edb1b935c7c44e8a0"}, - {file = "coverage-7.12.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:51777647a749abdf6f6fd8c7cffab12de68ab93aab15efc72fbbb83036c2a068"}, - {file = "coverage-7.12.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:42435d46d6461a3b305cdfcad7cdd3248787771f53fe18305548cba474e6523b"}, - {file = "coverage-7.12.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5bcead88c8423e1855e64b8057d0544e33e4080b95b240c2a355334bb7ced937"}, - {file = "coverage-7.12.0-cp312-cp312-win32.whl", hash = "sha256:dcbb630ab034e86d2a0f79aefd2be07e583202f41e037602d438c80044957baa"}, - {file = "coverage-7.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:2fd8354ed5d69775ac42986a691fbf68b4084278710cee9d7c3eaa0c28fa982a"}, - {file = "coverage-7.12.0-cp312-cp312-win_arm64.whl", hash = "sha256:737c3814903be30695b2de20d22bcc5428fdae305c61ba44cdc8b3252984c49c"}, - {file = "coverage-7.12.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:47324fffca8d8eae7e185b5bb20c14645f23350f870c1649003618ea91a78941"}, - {file = "coverage-7.12.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ccf3b2ede91decd2fb53ec73c1f949c3e034129d1e0b07798ff1d02ea0c8fa4a"}, - {file = "coverage-7.12.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:b365adc70a6936c6b0582dc38746b33b2454148c02349345412c6e743efb646d"}, - {file = "coverage-7.12.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bc13baf85cd8a4cfcf4a35c7bc9d795837ad809775f782f697bf630b7e200211"}, - {file = "coverage-7.12.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:099d11698385d572ceafb3288a5b80fe1fc58bf665b3f9d362389de488361d3d"}, - {file = "coverage-7.12.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:473dc45d69694069adb7680c405fb1e81f60b2aff42c81e2f2c3feaf544d878c"}, - {file = "coverage-7.12.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:583f9adbefd278e9de33c33d6846aa8f5d164fa49b47144180a0e037f0688bb9"}, - {file = "coverage-7.12.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2089cc445f2dc0af6f801f0d1355c025b76c24481935303cf1af28f636688f0"}, - {file = "coverage-7.12.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:950411f1eb5d579999c5f66c62a40961f126fc71e5e14419f004471957b51508"}, - {file = "coverage-7.12.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b1aab7302a87bafebfe76b12af681b56ff446dc6f32ed178ff9c092ca776e6bc"}, - {file = "coverage-7.12.0-cp313-cp313-win32.whl", hash = "sha256:d7e0d0303c13b54db495eb636bc2465b2fb8475d4c8bcec8fe4b5ca454dfbae8"}, - {file = "coverage-7.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:ce61969812d6a98a981d147d9ac583a36ac7db7766f2e64a9d4d059c2fe29d07"}, - {file = "coverage-7.12.0-cp313-cp313-win_arm64.whl", hash = "sha256:bcec6f47e4cb8a4c2dc91ce507f6eefc6a1b10f58df32cdc61dff65455031dfc"}, - {file = "coverage-7.12.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:459443346509476170d553035e4a3eed7b860f4fe5242f02de1010501956ce87"}, - {file = "coverage-7.12.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:04a79245ab2b7a61688958f7a855275997134bc84f4a03bc240cf64ff132abf6"}, - {file = "coverage-7.12.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:09a86acaaa8455f13d6a99221d9654df249b33937b4e212b4e5a822065f12aa7"}, - {file = "coverage-7.12.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:907e0df1b71ba77463687a74149c6122c3f6aac56c2510a5d906b2f368208560"}, - {file = "coverage-7.12.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9b57e2d0ddd5f0582bae5437c04ee71c46cd908e7bc5d4d0391f9a41e812dd12"}, - {file = "coverage-7.12.0-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:58c1c6aa677f3a1411fe6fb28ec3a942e4f665df036a3608816e0847fad23296"}, - {file = "coverage-7.12.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4c589361263ab2953e3c4cd2a94db94c4ad4a8e572776ecfbad2389c626e4507"}, - {file = "coverage-7.12.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:91b810a163ccad2e43b1faa11d70d3cf4b6f3d83f9fd5f2df82a32d47b648e0d"}, - {file = "coverage-7.12.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:40c867af715f22592e0d0fb533a33a71ec9e0f73a6945f722a0c85c8c1cbe3a2"}, - {file = "coverage-7.12.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:68b0d0a2d84f333de875666259dadf28cc67858bc8fd8b3f1eae84d3c2bec455"}, - {file = "coverage-7.12.0-cp313-cp313t-win32.whl", hash = "sha256:73f9e7fbd51a221818fd11b7090eaa835a353ddd59c236c57b2199486b116c6d"}, - {file = "coverage-7.12.0-cp313-cp313t-win_amd64.whl", hash = "sha256:24cff9d1f5743f67db7ba46ff284018a6e9aeb649b67aa1e70c396aa1b7cb23c"}, - {file = "coverage-7.12.0-cp313-cp313t-win_arm64.whl", hash = "sha256:c87395744f5c77c866d0f5a43d97cc39e17c7f1cb0115e54a2fe67ca75c5d14d"}, - {file = "coverage-7.12.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:a1c59b7dc169809a88b21a936eccf71c3895a78f5592051b1af8f4d59c2b4f92"}, - {file = "coverage-7.12.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8787b0f982e020adb732b9f051f3e49dd5054cebbc3f3432061278512a2b1360"}, - {file = "coverage-7.12.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5ea5a9f7dc8877455b13dd1effd3202e0bca72f6f3ab09f9036b1bcf728f69ac"}, - {file = "coverage-7.12.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fdba9f15849534594f60b47c9a30bc70409b54947319a7c4fd0e8e3d8d2f355d"}, - {file = "coverage-7.12.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a00594770eb715854fb1c57e0dea08cce6720cfbc531accdb9850d7c7770396c"}, - {file = "coverage-7.12.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5560c7e0d82b42eb1951e4f68f071f8017c824ebfd5a6ebe42c60ac16c6c2434"}, - {file = "coverage-7.12.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d6c2e26b481c9159c2773a37947a9718cfdc58893029cdfb177531793e375cfc"}, - {file = "coverage-7.12.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:6e1a8c066dabcde56d5d9fed6a66bc19a2883a3fe051f0c397a41fc42aedd4cc"}, - {file = "coverage-7.12.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:f7ba9da4726e446d8dd8aae5a6cd872511184a5d861de80a86ef970b5dacce3e"}, - {file = "coverage-7.12.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e0f483ab4f749039894abaf80c2f9e7ed77bbf3c737517fb88c8e8e305896a17"}, - {file = "coverage-7.12.0-cp314-cp314-win32.whl", hash = "sha256:76336c19a9ef4a94b2f8dc79f8ac2da3f193f625bb5d6f51a328cd19bfc19933"}, - {file = "coverage-7.12.0-cp314-cp314-win_amd64.whl", hash = "sha256:7c1059b600aec6ef090721f8f633f60ed70afaffe8ecab85b59df748f24b31fe"}, - {file = "coverage-7.12.0-cp314-cp314-win_arm64.whl", hash = "sha256:172cf3a34bfef42611963e2b661302a8931f44df31629e5b1050567d6b90287d"}, - {file = "coverage-7.12.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:aa7d48520a32cb21c7a9b31f81799e8eaec7239db36c3b670be0fa2403828d1d"}, - {file = "coverage-7.12.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:90d58ac63bc85e0fb919f14d09d6caa63f35a5512a2205284b7816cafd21bb03"}, - {file = "coverage-7.12.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ca8ecfa283764fdda3eae1bdb6afe58bf78c2c3ec2b2edcb05a671f0bba7b3f9"}, - {file = "coverage-7.12.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:874fe69a0785d96bd066059cd4368022cebbec1a8958f224f0016979183916e6"}, - {file = "coverage-7.12.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5b3c889c0b8b283a24d721a9eabc8ccafcfc3aebf167e4cd0d0e23bf8ec4e339"}, - {file = "coverage-7.12.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8bb5b894b3ec09dcd6d3743229dc7f2c42ef7787dc40596ae04c0edda487371e"}, - {file = "coverage-7.12.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:79a44421cd5fba96aa57b5e3b5a4d3274c449d4c622e8f76882d76635501fd13"}, - {file = "coverage-7.12.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:33baadc0efd5c7294f436a632566ccc1f72c867f82833eb59820ee37dc811c6f"}, - {file = "coverage-7.12.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:c406a71f544800ef7e9e0000af706b88465f3573ae8b8de37e5f96c59f689ad1"}, - {file = "coverage-7.12.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e71bba6a40883b00c6d571599b4627f50c360b3d0d02bfc658168936be74027b"}, - {file = "coverage-7.12.0-cp314-cp314t-win32.whl", hash = "sha256:9157a5e233c40ce6613dead4c131a006adfda70e557b6856b97aceed01b0e27a"}, - {file = "coverage-7.12.0-cp314-cp314t-win_amd64.whl", hash = "sha256:e84da3a0fd233aeec797b981c51af1cabac74f9bd67be42458365b30d11b5291"}, - {file = "coverage-7.12.0-cp314-cp314t-win_arm64.whl", hash = "sha256:01d24af36fedda51c2b1aca56e4330a3710f83b02a5ff3743a6b015ffa7c9384"}, - {file = "coverage-7.12.0-py3-none-any.whl", hash = "sha256:159d50c0b12e060b15ed3d39f87ed43d4f7f7ad40b8a534f4dd331adbb51104a"}, - {file = "coverage-7.12.0.tar.gz", hash = "sha256:fc11e0a4e372cb5f282f16ef90d4a585034050ccda536451901abfb19a57f40c"}, + {file = "coverage-7.13.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fc31c787a84f8cd6027eba44010517020e0d18487064cd3d8968941856d1415"}, + {file = "coverage-7.13.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a32ebc02a1805adf637fc8dec324b5cdacd2e493515424f70ee33799573d661b"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e24f9156097ff9dc286f2f913df3a7f63c0e333dcafa3c196f2c18b4175ca09a"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8041b6c5bfdc03257666e9881d33b1abc88daccaf73f7b6340fb7946655cd10f"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a09cfa6a5862bc2fc6ca7c3def5b2926194a56b8ab78ffcf617d28911123012"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:296f8b0af861d3970c2a4d8c91d48eb4dd4771bcef9baedec6a9b515d7de3def"}, + {file = "coverage-7.13.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e101609bcbbfb04605ea1027b10dc3735c094d12d40826a60f897b98b1c30256"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aa3feb8db2e87ff5e6d00d7e1480ae241876286691265657b500886c98f38bda"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4fc7fa81bbaf5a02801b65346c8b3e657f1d93763e58c0abdf7c992addd81a92"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:33901f604424145c6e9c2398684b92e176c0b12df77d52db81c20abd48c3794c"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:bb28c0f2cf2782508a40cec377935829d5fcc3ad9a3681375af4e84eb34b6b58"}, + {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d107aff57a83222ddbd8d9ee705ede2af2cc926608b57abed8ef96b50b7e8f9"}, + {file = "coverage-7.13.4-cp310-cp310-win32.whl", hash = "sha256:a6f94a7d00eb18f1b6d403c91a88fd58cfc92d4b16080dfdb774afc8294469bf"}, + {file = "coverage-7.13.4-cp310-cp310-win_amd64.whl", hash = "sha256:2cb0f1e000ebc419632bbe04366a8990b6e32c4e0b51543a6484ffe15eaeda95"}, + {file = "coverage-7.13.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d490ba50c3f35dd7c17953c68f3270e7ccd1c6642e2d2afe2d8e720b98f5a053"}, + {file = "coverage-7.13.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:19bc3c88078789f8ef36acb014d7241961dbf883fd2533d18cb1e7a5b4e28b11"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3998e5a32e62fdf410c0dbd3115df86297995d6e3429af80b8798aad894ca7aa"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8e264226ec98e01a8e1054314af91ee6cde0eacac4f465cc93b03dbe0bce2fd7"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a3aa4e7b9e416774b21797365b358a6e827ffadaaca81b69ee02946852449f00"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:71ca20079dd8f27fcf808817e281e90220475cd75115162218d0e27549f95fef"}, + {file = "coverage-7.13.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e2f25215f1a359ab17320b47bcdaca3e6e6356652e8256f2441e4ef972052903"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d65b2d373032411e86960604dc4edac91fdfb5dca539461cf2cbe78327d1e64f"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94eb63f9b363180aff17de3e7c8760c3ba94664ea2695c52f10111244d16a299"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e856bf6616714c3a9fbc270ab54103f4e685ba236fa98c054e8f87f266c93505"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:65dfcbe305c3dfe658492df2d85259e0d79ead4177f9ae724b6fb245198f55d6"}, + {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b507778ae8a4c915436ed5c2e05b4a6cecfa70f734e19c22a005152a11c7b6a9"}, + {file = "coverage-7.13.4-cp311-cp311-win32.whl", hash = "sha256:784fc3cf8be001197b652d51d3fd259b1e2262888693a4636e18879f613a62a9"}, + {file = "coverage-7.13.4-cp311-cp311-win_amd64.whl", hash = "sha256:2421d591f8ca05b308cf0092807308b2facbefe54af7c02ac22548b88b95c98f"}, + {file = "coverage-7.13.4-cp311-cp311-win_arm64.whl", hash = "sha256:79e73a76b854d9c6088fe5d8b2ebe745f8681c55f7397c3c0a016192d681045f"}, + {file = "coverage-7.13.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:02231499b08dabbe2b96612993e5fc34217cdae907a51b906ac7fca8027a4459"}, + {file = "coverage-7.13.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40aa8808140e55dc022b15d8aa7f651b6b3d68b365ea0398f1441e0b04d859c3"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5b856a8ccf749480024ff3bd7310adaef57bf31fd17e1bfc404b7940b6986634"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c048ea43875fbf8b45d476ad79f179809c590ec7b79e2035c662e7afa3192e3"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b7b38448866e83176e28086674fe7368ab8590e4610fb662b44e345b86d63ffa"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:de6defc1c9badbf8b9e67ae90fd00519186d6ab64e5cc5f3d21359c2a9b2c1d3"}, + {file = "coverage-7.13.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7eda778067ad7ffccd23ecffce537dface96212576a07924cbf0d8799d2ded5a"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e87f6c587c3f34356c3759f0420693e35e7eb0e2e41e4c011cb6ec6ecbbf1db7"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8248977c2e33aecb2ced42fef99f2d319e9904a36e55a8a68b69207fb7e43edc"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:25381386e80ae727608e662474db537d4df1ecd42379b5ba33c84633a2b36d47"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:ee756f00726693e5ba94d6df2bdfd64d4852d23b09bb0bc700e3b30e6f333985"}, + {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fdfc1e28e7c7cdce44985b3043bc13bbd9c747520f94a4d7164af8260b3d91f0"}, + {file = "coverage-7.13.4-cp312-cp312-win32.whl", hash = "sha256:01d4cbc3c283a17fc1e42d614a119f7f438eabb593391283adca8dc86eff1246"}, + {file = "coverage-7.13.4-cp312-cp312-win_amd64.whl", hash = "sha256:9401ebc7ef522f01d01d45532c68c5ac40fb27113019b6b7d8b208f6e9baa126"}, + {file = "coverage-7.13.4-cp312-cp312-win_arm64.whl", hash = "sha256:b1ec7b6b6e93255f952e27ab58fbc68dcc468844b16ecbee881aeb29b6ab4d8d"}, + {file = "coverage-7.13.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b66a2da594b6068b48b2692f043f35d4d3693fb639d5ea8b39533c2ad9ac3ab9"}, + {file = "coverage-7.13.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3599eb3992d814d23b35c536c28df1a882caa950f8f507cef23d1cbf334995ac"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:93550784d9281e374fb5a12bf1324cc8a963fd63b2d2f223503ef0fd4aa339ea"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b720ce6a88a2755f7c697c23268ddc47a571b88052e6b155224347389fdf6a3b"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7b322db1284a2ed3aa28ffd8ebe3db91c929b7a333c0820abec3d838ef5b3525"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f4594c67d8a7c89cf922d9df0438c7c7bb022ad506eddb0fdb2863359ff78242"}, + {file = "coverage-7.13.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:53d133df809c743eb8bce33b24bcababb371f4441340578cd406e084d94a6148"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76451d1978b95ba6507a039090ba076105c87cc76fc3efd5d35d72093964d49a"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7f57b33491e281e962021de110b451ab8a24182589be17e12a22c79047935e23"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1731dc33dc276dafc410a885cbf5992f1ff171393e48a21453b78727d090de80"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:bd60d4fe2f6fa7dff9223ca1bbc9f05d2b6697bc5961072e5d3b952d46e1b1ea"}, + {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9181a3ccead280b828fae232df12b16652702b49d41e99d657f46cc7b1f6ec7a"}, + {file = "coverage-7.13.4-cp313-cp313-win32.whl", hash = "sha256:f53d492307962561ac7de4cd1de3e363589b000ab69617c6156a16ba7237998d"}, + {file = "coverage-7.13.4-cp313-cp313-win_amd64.whl", hash = "sha256:e6f70dec1cc557e52df5306d051ef56003f74d56e9c4dd7ddb07e07ef32a84dd"}, + {file = "coverage-7.13.4-cp313-cp313-win_arm64.whl", hash = "sha256:fb07dc5da7e849e2ad31a5d74e9bece81f30ecf5a42909d0a695f8bd1874d6af"}, + {file = "coverage-7.13.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:40d74da8e6c4b9ac18b15331c4b5ebc35a17069410cad462ad4f40dcd2d50c0d"}, + {file = "coverage-7.13.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4223b4230a376138939a9173f1bdd6521994f2aff8047fae100d6d94d50c5a12"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1d4be36a5114c499f9f1f9195e95ebf979460dbe2d88e6816ea202010ba1c34b"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:200dea7d1e8095cc6e98cdabe3fd1d21ab17d3cee6dab00cadbb2fe35d9c15b9"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8eb931ee8e6d8243e253e5ed7336deea6904369d2fd8ae6e43f68abbf167092"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:75eab1ebe4f2f64d9509b984f9314d4aa788540368218b858dad56dc8f3e5eb9"}, + {file = "coverage-7.13.4-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c35eb28c1d085eb7d8c9b3296567a1bebe03ce72962e932431b9a61f28facf26"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb88b316ec33760714a4720feb2816a3a59180fd58c1985012054fa7aebee4c2"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7d41eead3cc673cbd38a4417deb7fd0b4ca26954ff7dc6078e33f6ff97bed940"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:fb26a934946a6afe0e326aebe0730cdff393a8bc0bbb65a2f41e30feddca399c"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:dae88bc0fc77edaa65c14be099bd57ee140cf507e6bfdeea7938457ab387efb0"}, + {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:845f352911777a8e722bfce168958214951e07e47e5d5d9744109fa5fe77f79b"}, + {file = "coverage-7.13.4-cp313-cp313t-win32.whl", hash = "sha256:2fa8d5f8de70688a28240de9e139fa16b153cc3cbb01c5f16d88d6505ebdadf9"}, + {file = "coverage-7.13.4-cp313-cp313t-win_amd64.whl", hash = "sha256:9351229c8c8407645840edcc277f4a2d44814d1bc34a2128c11c2a031d45a5dd"}, + {file = "coverage-7.13.4-cp313-cp313t-win_arm64.whl", hash = "sha256:30b8d0512f2dc8c8747557e8fb459d6176a2c9e5731e2b74d311c03b78451997"}, + {file = "coverage-7.13.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:300deaee342f90696ed186e3a00c71b5b3d27bffe9e827677954f4ee56969601"}, + {file = "coverage-7.13.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:29e3220258d682b6226a9b0925bc563ed9a1ebcff3cad30f043eceea7eaf2689"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:391ee8f19bef69210978363ca930f7328081c6a0152f1166c91f0b5fdd2a773c"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0dd7ab8278f0d58a0128ba2fca25824321f05d059c1441800e934ff2efa52129"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:78cdf0d578b15148b009ccf18c686aa4f719d887e76e6b40c38ffb61d264a552"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:48685fee12c2eb3b27c62f2658e7ea21e9c3239cba5a8a242801a0a3f6a8c62a"}, + {file = "coverage-7.13.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4e83efc079eb39480e6346a15a1bcb3e9b04759c5202d157e1dd4303cd619356"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ecae9737b72408d6a950f7e525f30aca12d4bd8dd95e37342e5beb3a2a8c4f71"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ae4578f8528569d3cf303fef2ea569c7f4c4059a38c8667ccef15c6e1f118aa5"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:6fdef321fdfbb30a197efa02d48fcd9981f0d8ad2ae8903ac318adc653f5df98"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b0f6ccf3dbe577170bebfce1318707d0e8c3650003cb4b3a9dd744575daa8b5"}, + {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75fcd519f2a5765db3f0e391eb3b7d150cce1a771bf4c9f861aeab86c767a3c0"}, + {file = "coverage-7.13.4-cp314-cp314-win32.whl", hash = "sha256:8e798c266c378da2bd819b0677df41ab46d78065fb2a399558f3f6cae78b2fbb"}, + {file = "coverage-7.13.4-cp314-cp314-win_amd64.whl", hash = "sha256:245e37f664d89861cf2329c9afa2c1fe9e6d4e1a09d872c947e70718aeeac505"}, + {file = "coverage-7.13.4-cp314-cp314-win_arm64.whl", hash = "sha256:ad27098a189e5838900ce4c2a99f2fe42a0bf0c2093c17c69b45a71579e8d4a2"}, + {file = "coverage-7.13.4-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:85480adfb35ffc32d40918aad81b89c69c9cc5661a9b8a81476d3e645321a056"}, + {file = "coverage-7.13.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:79be69cf7f3bf9b0deeeb062eab7ac7f36cd4cc4c4dd694bd28921ba4d8596cc"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:caa421e2684e382c5d8973ac55e4f36bed6821a9bad5c953494de960c74595c9"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:14375934243ee05f56c45393fe2ce81fe5cc503c07cee2bdf1725fb8bef3ffaf"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25a41c3104d08edb094d9db0d905ca54d0cd41c928bb6be3c4c799a54753af55"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6f01afcff62bf9a08fb32b2c1d6e924236c0383c02c790732b6537269e466a72"}, + {file = "coverage-7.13.4-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:eb9078108fbf0bcdde37c3f4779303673c2fa1fe8f7956e68d447d0dd426d38a"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0e086334e8537ddd17e5f16a344777c1ab8194986ec533711cbe6c41cde841b6"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:725d985c5ab621268b2edb8e50dfe57633dc69bda071abc470fed55a14935fd3"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:3c06f0f1337c667b971ca2f975523347e63ec5e500b9aa5882d91931cd3ef750"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:590c0ed4bf8e85f745e6b805b2e1c457b2e33d5255dd9729743165253bc9ad39"}, + {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:eb30bf180de3f632cd043322dad5751390e5385108b2807368997d1a92a509d0"}, + {file = "coverage-7.13.4-cp314-cp314t-win32.whl", hash = "sha256:c4240e7eded42d131a2d2c4dec70374b781b043ddc79a9de4d55ca71f8e98aea"}, + {file = "coverage-7.13.4-cp314-cp314t-win_amd64.whl", hash = "sha256:4c7d3cc01e7350f2f0f6f7036caaf5673fb56b6998889ccfe9e1c1fe75a9c932"}, + {file = "coverage-7.13.4-cp314-cp314t-win_arm64.whl", hash = "sha256:23e3f687cf945070d1c90f85db66d11e3025665d8dafa831301a0e0038f3db9b"}, + {file = "coverage-7.13.4-py3-none-any.whl", hash = "sha256:1af1641e57cf7ba1bd67d677c9abdbcd6cc2ab7da3bca7fa1e2b7e50e65f2ad0"}, + {file = "coverage-7.13.4.tar.gz", hash = "sha256:e5c8f6ed1e61a8b2dcdf31eb0b9bbf0130750ca79c1c49eb898e2ad86f5ccc91"}, ] [package.extras] @@ -730,66 +756,61 @@ toml = ["tomli ; python_full_version <= \"3.11.0a6\""] [[package]] name = "cryptography" -version = "46.0.3" +version = "46.0.5" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = "!=3.9.0,!=3.9.1,>=3.8" groups = ["dev"] files = [ - {file = "cryptography-46.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a"}, - {file = "cryptography-46.0.3-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:09859af8466b69bc3c27bdf4f5d84a665e0f7ab5088412e9e2ec49758eca5cbc"}, - {file = "cryptography-46.0.3-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:01ca9ff2885f3acc98c29f1860552e37f6d7c7d013d7334ff2a9de43a449315d"}, - {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6eae65d4c3d33da080cff9c4ab1f711b15c1d9760809dad6ea763f3812d254cb"}, - {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5bf0ed4490068a2e72ac03d786693adeb909981cc596425d09032d372bcc849"}, - {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:5ecfccd2329e37e9b7112a888e76d9feca2347f12f37918facbb893d7bb88ee8"}, - {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec"}, - {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91"}, - {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:c0a7bb1a68a5d3471880e264621346c48665b3bf1c3759d682fc0864c540bd9e"}, - {file = "cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926"}, - {file = "cryptography-46.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0abf1ffd6e57c67e92af68330d05760b7b7efb243aab8377e583284dbab72c71"}, - {file = "cryptography-46.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a04bee9ab6a4da801eb9b51f1b708a1b5b5c9eb48c03f74198464c66f0d344ac"}, - {file = "cryptography-46.0.3-cp311-abi3-win32.whl", hash = "sha256:f260d0d41e9b4da1ed1e0f1ce571f97fe370b152ab18778e9e8f67d6af432018"}, - {file = "cryptography-46.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:a9a3008438615669153eb86b26b61e09993921ebdd75385ddd748702c5adfddb"}, - {file = "cryptography-46.0.3-cp311-abi3-win_arm64.whl", hash = "sha256:5d7f93296ee28f68447397bf5198428c9aeeab45705a55d53a6343455dcb2c3c"}, - {file = "cryptography-46.0.3-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:00a5e7e87938e5ff9ff5447ab086a5706a957137e6e433841e9d24f38a065217"}, - {file = "cryptography-46.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c8daeb2d2174beb4575b77482320303f3d39b8e81153da4f0fb08eb5fe86a6c5"}, - {file = "cryptography-46.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39b6755623145ad5eff1dab323f4eae2a32a77a7abef2c5089a04a3d04366715"}, - {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:db391fa7c66df6762ee3f00c95a89e6d428f4d60e7abc8328f4fe155b5ac6e54"}, - {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:78a97cf6a8839a48c49271cdcbd5cf37ca2c1d6b7fdd86cc864f302b5e9bf459"}, - {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:dfb781ff7eaa91a6f7fd41776ec37c5853c795d3b358d4896fdbb5df168af422"}, - {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:6f61efb26e76c45c4a227835ddeae96d83624fb0d29eb5df5b96e14ed1a0afb7"}, - {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:23b1a8f26e43f47ceb6d6a43115f33a5a37d57df4ea0ca295b780ae8546e8044"}, - {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b419ae593c86b87014b9be7396b385491ad7f320bde96826d0dd174459e54665"}, - {file = "cryptography-46.0.3-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:50fc3343ac490c6b08c0cf0d704e881d0d660be923fd3076db3e932007e726e3"}, - {file = "cryptography-46.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:22d7e97932f511d6b0b04f2bfd818d73dcd5928db509460aaf48384778eb6d20"}, - {file = "cryptography-46.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d55f3dffadd674514ad19451161118fd010988540cee43d8bc20675e775925de"}, - {file = "cryptography-46.0.3-cp314-cp314t-win32.whl", hash = "sha256:8a6e050cb6164d3f830453754094c086ff2d0b2f3a897a1d9820f6139a1f0914"}, - {file = "cryptography-46.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:760f83faa07f8b64e9c33fc963d790a2edb24efb479e3520c14a45741cd9b2db"}, - {file = "cryptography-46.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:516ea134e703e9fe26bcd1277a4b59ad30586ea90c365a87781d7887a646fe21"}, - {file = "cryptography-46.0.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:cb3d760a6117f621261d662bccc8ef5bc32ca673e037c83fbe565324f5c46936"}, - {file = "cryptography-46.0.3-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4b7387121ac7d15e550f5cb4a43aef2559ed759c35df7336c402bb8275ac9683"}, - {file = "cryptography-46.0.3-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:15ab9b093e8f09daab0f2159bb7e47532596075139dd74365da52ecc9cb46c5d"}, - {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:46acf53b40ea38f9c6c229599a4a13f0d46a6c3fa9ef19fc1a124d62e338dfa0"}, - {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10ca84c4668d066a9878890047f03546f3ae0a6b8b39b697457b7757aaf18dbc"}, - {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:36e627112085bb3b81b19fed209c05ce2a52ee8b15d161b7c643a7d5a88491f3"}, - {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1000713389b75c449a6e979ffc7dcc8ac90b437048766cef052d4d30b8220971"}, - {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:b02cf04496f6576afffef5ddd04a0cb7d49cf6be16a9059d793a30b035f6b6ac"}, - {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:71e842ec9bc7abf543b47cf86b9a743baa95f4677d22baa4c7d5c69e49e9bc04"}, - {file = "cryptography-46.0.3-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:402b58fc32614f00980b66d6e56a5b4118e6cb362ae8f3fda141ba4689bd4506"}, - {file = "cryptography-46.0.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ef639cb3372f69ec44915fafcd6698b6cc78fbe0c2ea41be867f6ed612811963"}, - {file = "cryptography-46.0.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b51b8ca4f1c6453d8829e1eb7299499ca7f313900dd4d89a24b8b87c0a780d4"}, - {file = "cryptography-46.0.3-cp38-abi3-win32.whl", hash = "sha256:6276eb85ef938dc035d59b87c8a7dc559a232f954962520137529d77b18ff1df"}, - {file = "cryptography-46.0.3-cp38-abi3-win_amd64.whl", hash = "sha256:416260257577718c05135c55958b674000baef9a1c7d9e8f306ec60d71db850f"}, - {file = "cryptography-46.0.3-cp38-abi3-win_arm64.whl", hash = "sha256:d89c3468de4cdc4f08a57e214384d0471911a3830fcdaf7a8cc587e42a866372"}, - {file = "cryptography-46.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a23582810fedb8c0bc47524558fb6c56aac3fc252cb306072fd2815da2a47c32"}, - {file = "cryptography-46.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e7aec276d68421f9574040c26e2a7c3771060bc0cff408bae1dcb19d3ab1e63c"}, - {file = "cryptography-46.0.3-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7ce938a99998ed3c8aa7e7272dca1a610401ede816d36d0693907d863b10d9ea"}, - {file = "cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:191bb60a7be5e6f54e30ba16fdfae78ad3a342a0599eb4193ba88e3f3d6e185b"}, - {file = "cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c70cc23f12726be8f8bc72e41d5065d77e4515efae3690326764ea1b07845cfb"}, - {file = "cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:9394673a9f4de09e28b5356e7fff97d778f8abad85c9d5ac4a4b7e25a0de7717"}, - {file = "cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:94cd0549accc38d1494e1f8de71eca837d0509d0d44bf11d158524b0e12cebf9"}, - {file = "cryptography-46.0.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6b5063083824e5509fdba180721d55909ffacccc8adbec85268b48439423d78c"}, - {file = "cryptography-46.0.3.tar.gz", hash = "sha256:a8b17438104fed022ce745b362294d9ce35b4c2e45c1d958ad4a4b019285f4a1"}, + {file = "cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad"}, + {file = "cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b"}, + {file = "cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b"}, + {file = "cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263"}, + {file = "cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d"}, + {file = "cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed"}, + {file = "cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2"}, + {file = "cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2"}, + {file = "cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0"}, + {file = "cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731"}, + {file = "cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82"}, + {file = "cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1"}, + {file = "cryptography-46.0.5-cp311-abi3-win32.whl", hash = "sha256:60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48"}, + {file = "cryptography-46.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4"}, + {file = "cryptography-46.0.5-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:94a76daa32eb78d61339aff7952ea819b1734b46f73646a07decb40e5b3448e2"}, + {file = "cryptography-46.0.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5be7bf2fb40769e05739dd0046e7b26f9d4670badc7b032d6ce4db64dddc0678"}, + {file = "cryptography-46.0.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe346b143ff9685e40192a4960938545c699054ba11d4f9029f94751e3f71d87"}, + {file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:c69fd885df7d089548a42d5ec05be26050ebcd2283d89b3d30676eb32ff87dee"}, + {file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:8293f3dea7fc929ef7240796ba231413afa7b68ce38fd21da2995549f5961981"}, + {file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:1abfdb89b41c3be0365328a410baa9df3ff8a9110fb75e7b52e66803ddabc9a9"}, + {file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:d66e421495fdb797610a08f43b05269e0a5ea7f5e652a89bfd5a7d3c1dee3648"}, + {file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:4e817a8920bfbcff8940ecfd60f23d01836408242b30f1a708d93198393a80b4"}, + {file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:68f68d13f2e1cb95163fa3b4db4bf9a159a418f5f6e7242564fc75fcae667fd0"}, + {file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:a3d1fae9863299076f05cb8a778c467578262fae09f9dc0ee9b12eb4268ce663"}, + {file = "cryptography-46.0.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4143987a42a2397f2fc3b4d7e3a7d313fbe684f67ff443999e803dd75a76826"}, + {file = "cryptography-46.0.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:7d731d4b107030987fd61a7f8ab512b25b53cef8f233a97379ede116f30eb67d"}, + {file = "cryptography-46.0.5-cp314-cp314t-win32.whl", hash = "sha256:c3bcce8521d785d510b2aad26ae2c966092b7daa8f45dd8f44734a104dc0bc1a"}, + {file = "cryptography-46.0.5-cp314-cp314t-win_amd64.whl", hash = "sha256:4d8ae8659ab18c65ced284993c2265910f6c9e650189d4e3f68445ef82a810e4"}, + {file = "cryptography-46.0.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31"}, + {file = "cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18"}, + {file = "cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235"}, + {file = "cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a"}, + {file = "cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76"}, + {file = "cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614"}, + {file = "cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229"}, + {file = "cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1"}, + {file = "cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d"}, + {file = "cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c"}, + {file = "cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4"}, + {file = "cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9"}, + {file = "cryptography-46.0.5-cp38-abi3-win32.whl", hash = "sha256:02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72"}, + {file = "cryptography-46.0.5-cp38-abi3-win_amd64.whl", hash = "sha256:556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595"}, + {file = "cryptography-46.0.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:3b4995dc971c9fb83c25aa44cf45f02ba86f71ee600d81091c2f0cbae116b06c"}, + {file = "cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bc84e875994c3b445871ea7181d424588171efec3e185dced958dad9e001950a"}, + {file = "cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2ae6971afd6246710480e3f15824ed3029a60fc16991db250034efd0b9fb4356"}, + {file = "cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d861ee9e76ace6cf36a6a89b959ec08e7bc2493ee39d07ffe5acb23ef46d27da"}, + {file = "cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:2b7a67c9cd56372f3249b39699f2ad479f6991e62ea15800973b956f4b73e257"}, + {file = "cryptography-46.0.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8456928655f856c6e1533ff59d5be76578a7157224dbd9ce6872f25055ab9ab7"}, + {file = "cryptography-46.0.5.tar.gz", hash = "sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d"}, ] [package.dependencies] @@ -803,7 +824,7 @@ nox = ["nox[uv] (>=2024.4.15)"] pep8test = ["check-sdist", "click (>=8.0.1)", "mypy (>=1.14)", "ruff (>=0.11.11)"] sdist = ["build (>=1.0.0)"] ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi (>=2024)", "cryptography-vectors (==46.0.3)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"] +test = ["certifi (>=2024)", "cryptography-vectors (==46.0.5)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"] test-randomorder = ["pytest-randomly"] [[package]] @@ -827,26 +848,27 @@ test = ["cssselect", "importlib-resources ; python_version < \"3.9\"", "jaraco.t [[package]] name = "cyclonedx-python-lib" -version = "9.1.0" +version = "11.6.0" description = "Python library for CycloneDX" optional = false -python-versions = "<4.0,>=3.8" +python-versions = "<4.0,>=3.9" groups = ["dev"] files = [ - {file = "cyclonedx_python_lib-9.1.0-py3-none-any.whl", hash = "sha256:55693fca8edaecc3363b24af14e82cc6e659eb1e8353e58b587c42652ce0fb52"}, - {file = "cyclonedx_python_lib-9.1.0.tar.gz", hash = "sha256:86935f2c88a7b47a529b93c724dbd3e903bc573f6f8bd977628a7ca1b5dadea1"}, + {file = "cyclonedx_python_lib-11.6.0-py3-none-any.whl", hash = "sha256:94f4aae97db42a452134dafdddcfab9745324198201c4777ed131e64c8380759"}, + {file = "cyclonedx_python_lib-11.6.0.tar.gz", hash = "sha256:7fb85a4371fa3a203e5be577ac22b7e9a7157f8b0058b7448731474d6dea7bf0"}, ] [package.dependencies] license-expression = ">=30,<31" packageurl-python = ">=0.11,<2" -py-serializable = ">=2.0.0,<3.0.0" +py-serializable = ">=2.1.0,<3.0.0" sortedcontainers = ">=2.4.0,<3.0.0" +typing_extensions = {version = ">=4.6,<5.0", markers = "python_version < \"3.13\""} [package.extras] -json-validation = ["jsonschema[format] (>=4.18,<5.0)"] -validation = ["jsonschema[format] (>=4.18,<5.0)", "lxml (>=4,<6)"] -xml-validation = ["lxml (>=4,<6)"] +json-validation = ["jsonschema[format-nongpl] (>=4.25,<5.0)", "referencing (>=0.28.4)"] +validation = ["jsonschema[format-nongpl] (>=4.25,<5.0)", "lxml (>=4,<7)", "referencing (>=0.28.4)"] +xml-validation = ["lxml (>=4,<7)"] [[package]] name = "defusedxml" @@ -897,14 +919,14 @@ domdf-python-tools = ">=2.2.0" [[package]] name = "dill" -version = "0.4.0" +version = "0.4.1" description = "serialize all of Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "dill-0.4.0-py3-none-any.whl", hash = "sha256:44f54bf6412c2c8464c14e8243eb163690a9800dbe2c367330883b19c7561049"}, - {file = "dill-0.4.0.tar.gz", hash = "sha256:0633f1d2df477324f53a895b02c901fb961bdbf65a17122586ea7019292cbcf0"}, + {file = "dill-0.4.1-py3-none-any.whl", hash = "sha256:1e1ce33e978ae97fcfcff5638477032b801c46c7c65cf717f95fbc2248f79a9d"}, + {file = "dill-0.4.1.tar.gz", hash = "sha256:423092df4182177d4d8ba8290c8a5b640c66ab35ec7da59ccfa00f6fa3eea5fa"}, ] [package.extras] @@ -957,44 +979,47 @@ dates = ["pytz (>=2019.1)"] [[package]] name = "exasol-toolbox" -version = "1.13.0" +version = "5.1.1" description = "Your one-stop solution for managing all standard tasks and core workflows of your Python project." optional = false -python-versions = "<4.0,>=3.9.2" +python-versions = "<4.0,>=3.10" groups = ["dev"] files = [ - {file = "exasol_toolbox-1.13.0-py3-none-any.whl", hash = "sha256:bcc228149695a439948956645c0e1eb8894847f7ee303072ae4533e9db6220dd"}, - {file = "exasol_toolbox-1.13.0.tar.gz", hash = "sha256:3ddec24123a9e8a00d3f90df3e6d14c5a1919f5d741b100f730106359bb27b1d"}, + {file = "exasol_toolbox-5.1.1-py3-none-any.whl", hash = "sha256:0640240b32679163a0eea5f32fafb98f149e9a7e37944b9f7b24865a842a8cee"}, + {file = "exasol_toolbox-5.1.1.tar.gz", hash = "sha256:bbef30c7c8a26c6621761edccce31146153e1e78dc2a883dbda5527a4637aab8"}, ] [package.dependencies] -bandit = {version = ">=1.7.9,<2.0.0", extras = ["toml"]} +bandit = {version = ">=1.7.9,<2", extras = ["toml"]} black = ">=24.1.0,<26" coverage = ">=6.4.4,<8.0.0" furo = ">=2022.9.15" -import-linter = ">=2.0,<3.0" +import-linter = ">=2.0,<3" importlib-resources = ">=5.12.0" -isort = ">=6.0.1,<7.0.0" -jinja2 = ">=3.1.6,<4.0.0" +isort = ">=7.0.0,<8" +jinja2 = ">=3.1.6,<4" mypy = ">=0.971" myst-parser = ">=2.0.0,<4" nox = ">=2022.8.7" -pip-audit = ">=2.7.3,<3.0.0" -pip-licenses = ">=5.0.0,<6.0.0" -pluggy = ">=1.5.0,<2.0.0" +pip-audit = ">=2.7.3,<3" +pip-licenses = ">=5.0.0,<6" +pluggy = ">=1.5.0,<2" pre-commit = ">=4,<5" -pydantic = ">=2.11.5,<3.0.0" +pydantic = ">=2.11.5,<3" pylint = ">=2.15.4" -pysonar = ">=1.0.1.1548,<2.0.0.0" -pytest = ">=7.2.2,<9" +pysonar = ">=1.0.1.1548,<2" +pytest = ">=7.2.2,<10" pyupgrade = ">=2.38.2,<4.0.0" +ruamel-yaml = ">=0.18.0,<=0.18.16" +ruff = ">=0.14.5,<0.15" shibuya = ">=2024.5.14" sphinx = ">=5.3,<8" -sphinx-copybutton = ">=0.5.0,<0.6.0" +sphinx-copybutton = ">=0.5.0,<0.6" sphinx-design = ">=0.5.0,<1" -sphinx-inline-tabs = ">=2023.4.21,<2024.0.0" -sphinx-toolbox = ">=4.0.0,<5.0.0" -twine = ">=6.1.0,<7.0.0" +sphinx-inline-tabs = ">=2023.4.21,<2024" +sphinx-toolbox = ">=4.0.0,<5" +sphinxcontrib-mermaid = ">=2.0.0,<3.0.0" +twine = ">=6.1.0,<7" typer = {version = ">=0.7.0", extras = ["all"]} [[package]] @@ -1016,156 +1041,174 @@ typing-extensions = {version = ">=4.6.0", markers = "python_version < \"3.13\""} [package.extras] test = ["pytest (>=6)"] +[[package]] +name = "fastapi" +version = "0.129.0" +description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +optional = false +python-versions = ">=3.10" +groups = ["dev"] +files = [ + {file = "fastapi-0.129.0-py3-none-any.whl", hash = "sha256:b4946880e48f462692b31c083be0432275cbfb6e2274566b1be91479cc1a84ec"}, + {file = "fastapi-0.129.0.tar.gz", hash = "sha256:61315cebd2e65df5f97ec298c888f9de30430dd0612d59d6480beafbc10655af"}, +] + +[package.dependencies] +annotated-doc = ">=0.0.2" +pydantic = ">=2.7.0" +starlette = ">=0.40.0,<1.0.0" +typing-extensions = ">=4.8.0" +typing-inspection = ">=0.4.2" + +[package.extras] +all = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.8)", "httpx (>=0.23.0,<1.0.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=3.1.5)", "orjson (>=3.9.3)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.18)", "pyyaml (>=5.3.1)", "ujson (>=5.8.0)", "uvicorn[standard] (>=0.12.0)"] +standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.8)", "httpx (>=0.23.0,<1.0.0)", "jinja2 (>=3.1.5)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.18)", "uvicorn[standard] (>=0.12.0)"] +standard-no-fastapi-cloud-cli = ["email-validator (>=2.0.0)", "fastapi-cli[standard-no-fastapi-cloud-cli] (>=0.0.8)", "httpx (>=0.23.0,<1.0.0)", "jinja2 (>=3.1.5)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.18)", "uvicorn[standard] (>=0.12.0)"] + [[package]] name = "filelock" -version = "3.20.0" +version = "3.24.0" description = "A platform independent file lock." optional = false python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "filelock-3.20.0-py3-none-any.whl", hash = "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2"}, - {file = "filelock-3.20.0.tar.gz", hash = "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4"}, + {file = "filelock-3.24.0-py3-none-any.whl", hash = "sha256:eebebb403d78363ef7be8e236b63cc6760b0004c7464dceaba3fd0afbd637ced"}, + {file = "filelock-3.24.0.tar.gz", hash = "sha256:aeeab479339ddf463a1cdd1f15a6e6894db976071e5883efc94d22ed5139044b"}, ] [[package]] name = "furo" -version = "2025.9.25" +version = "2025.12.19" description = "A clean customisable Sphinx documentation theme." optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "furo-2025.9.25-py3-none-any.whl", hash = "sha256:2937f68e823b8e37b410c972c371bc2b1d88026709534927158e0cb3fac95afe"}, - {file = "furo-2025.9.25.tar.gz", hash = "sha256:3eac05582768fdbbc2bdfa1cdbcdd5d33cfc8b4bd2051729ff4e026a1d7e0a98"}, + {file = "furo-2025.12.19-py3-none-any.whl", hash = "sha256:bb0ead5309f9500130665a26bee87693c41ce4dbdff864dbfb6b0dae4673d24f"}, + {file = "furo-2025.12.19.tar.gz", hash = "sha256:188d1f942037d8b37cd3985b955839fea62baa1730087dc29d157677c857e2a7"}, ] [package.dependencies] accessible-pygments = ">=0.0.5" beautifulsoup4 = "*" pygments = ">=2.7" -sphinx = ">=6.0,<9.0" -sphinx-basic-ng = ">=1.0.0.beta2" +sphinx = ">=7.0,<10.0" +sphinx-basic-ng = ">=1.0.0b2" [[package]] name = "grimp" -version = "3.13" +version = "3.14" description = "Builds a queryable graph of the imports within one or more Python packages." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "grimp-3.13-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:0ad0b51c8216cdffd60c68b54f6f3c803a0729dbe476fe9cd81642f6f0a3008e"}, - {file = "grimp-3.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c4b5382964055e2fbae38a9e67c1d805bd4368c87341eff09a2ef29a095f39e"}, - {file = "grimp-3.13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87673986e66c0cfe5280744a5c28613453def1ddb849338c76a425f2eeab4460"}, - {file = "grimp-3.13-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cbc8d42013036ce3cba4c919d8f2a10309f33e80dbbbc5b280814c7bb159a459"}, - {file = "grimp-3.13-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3b9a1ba890854b457a3df82f9c341c1f131e9617ee7ed8058e8016c57b963f8"}, - {file = "grimp-3.13-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50c6025df388d004dd34cbb3c4a914c8e933b0bdfeb44a5598b9126f27fc164e"}, - {file = "grimp-3.13-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c9b89b62b6381dc8de1ca524c0764df00bd7f1d823892c8ac1e9c10a8e87ab4"}, - {file = "grimp-3.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2dc76e193ff53cd9722148bde0fc327781ae4b58080316e900b6b29be2b62bd"}, - {file = "grimp-3.13-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b5884d0f94fd24b4ab6a51a81a830f4f0752e4c73f44dc579ac2ef5de186b599"}, - {file = "grimp-3.13-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4523c7d4eaff96a37104cd9d2bedc0c805421144d81dac38ec975720eca5eded"}, - {file = "grimp-3.13-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e5be25e3bd5c2029ae8016a8baefcc4842baa7e49a613b91b45881673f1f7a6e"}, - {file = "grimp-3.13-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:876f6e5cfc8e92eef6b626cf9df1779be10cf84003363a9170322114688b24e5"}, - {file = "grimp-3.13-cp310-cp310-win32.whl", hash = "sha256:fcb36fcf0a4756d9ce8fbcc3cf2bf6a7cfda83bf5a6c26e7e727b0cd9766a0a2"}, - {file = "grimp-3.13-cp310-cp310-win_amd64.whl", hash = "sha256:cc8dc66768e903ca40b70691a8a9335045e622747ee94f11c8a413a7dbe52a46"}, - {file = "grimp-3.13-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:57745996698932768274a2ed9ba3e5c424f60996c53ecaf1c82b75be9e819ee9"}, - {file = "grimp-3.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ca29f09710342b94fa6441f4d1102a0e49f0b463b1d91e43223baa949c5e9337"}, - {file = "grimp-3.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:adda25aa158e11d96dd27166300b955c8ec0c76ce2fd1a13597e9af012aada06"}, - {file = "grimp-3.13-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03e17029d75500a5282b40cb15cdae030bf14df9dfaa6a2b983f08898dfe74b6"}, - {file = "grimp-3.13-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6cbfc9d2d0ebc0631fb4012a002f3d8f4e3acb8325be34db525c0392674433b8"}, - {file = "grimp-3.13-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:161449751a085484608c5b9f863e41e8fb2a98e93f7312ead5d831e487a94518"}, - {file = "grimp-3.13-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:119628fbe7f941d1e784edac98e8ced7e78a0b966a4ff2c449e436ee860bd507"}, - {file = "grimp-3.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ca1ac776baf1fa105342b23c72f2e7fdd6771d4cce8d2903d28f92fd34a9e8f"}, - {file = "grimp-3.13-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:941ff414cc66458f56e6af93c618266091ea70bfdabe7a84039be31d937051ee"}, - {file = "grimp-3.13-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:87ad9bcd1caaa2f77c369d61a04b9f2f1b87f4c3b23ae6891b2c943193c4ec62"}, - {file = "grimp-3.13-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:751fe37104a4f023d5c6556558b723d843d44361245c20f51a5d196de00e4774"}, - {file = "grimp-3.13-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9b561f79ec0b3a4156937709737191ad57520f2d58fa1fc43cd79f67839a3cd7"}, - {file = "grimp-3.13-cp311-cp311-win32.whl", hash = "sha256:52405ea8c8f20cf5d2d1866c80ee3f0243a38af82bd49d1464c5e254bf2e1f8f"}, - {file = "grimp-3.13-cp311-cp311-win_amd64.whl", hash = "sha256:6a45d1d3beeefad69717b3718e53680fb3579fe67696b86349d6f39b75e850bf"}, - {file = "grimp-3.13-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3e715c56ffdd055e5c84d27b4c02d83369b733e6a24579d42bbbc284bd0664a9"}, - {file = "grimp-3.13-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f794dea35a4728b948ab8fec970ffbdf2589b34209f3ab902cf8a9148cf1eaad"}, - {file = "grimp-3.13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69571270f2c27e8a64b968195aa7ecc126797112a9bf1e804ff39ba9f42d6f6d"}, - {file = "grimp-3.13-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8f7b226398ae476762ef0afb5ef8f838d39c8e0e2f6d1a4378ce47059b221a4a"}, - {file = "grimp-3.13-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5498aeac4df0131a1787fcbe9bb460b52fc9b781ec6bba607fd6a7d6d3ea6fce"}, - {file = "grimp-3.13-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4be702bb2b5c001a6baf709c452358470881e15e3e074cfc5308903603485dcb"}, - {file = "grimp-3.13-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fcf988f3e3d272a88f7be68f0c1d3719fee8624d902e9c0346b9015a0ea6a65"}, - {file = "grimp-3.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ede36d104ff88c208140f978de3345f439345f35b8ef2b4390c59ef6984deba"}, - {file = "grimp-3.13-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b35e44bb8dc80e0bd909a64387f722395453593a1884caca9dc0748efea33764"}, - {file = "grimp-3.13-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:becb88e9405fc40896acd6e2b9bbf6f242a5ae2fd43a1ec0a32319ab6c10a227"}, - {file = "grimp-3.13-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a66585b4af46c3fbadbef495483514bee037e8c3075ed179ba4f13e494eb7899"}, - {file = "grimp-3.13-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:29f68c6e2ff70d782ca0e989ec4ec44df73ba847937bcbb6191499224a2f84e2"}, - {file = "grimp-3.13-cp312-cp312-win32.whl", hash = "sha256:cc996dcd1a44ae52d257b9a3e98838f8ecfdc42f7c62c8c82c2fcd3828155c98"}, - {file = "grimp-3.13-cp312-cp312-win_amd64.whl", hash = "sha256:e2966435947e45b11568f04a65863dcf836343c11ae44aeefdaa7f07eb1a0576"}, - {file = "grimp-3.13-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1dd9be203e856b8c725b9af4100c6619c82672e6e0c5101e1154b3c8bffde2df"}, - {file = "grimp-3.13-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:921222b6ba969fb292f5014f8ab3da9068427ebc3d6ff7f79bf46a07958529fe"}, - {file = "grimp-3.13-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56f1128efd6e222990d3fbc0cf911096272bd333a086f3b485950bc022e767d9"}, - {file = "grimp-3.13-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7742743183f3a2676774a341f460f34c80c3c80f6cbf9e9e421769dc69c170a0"}, - {file = "grimp-3.13-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88bbaa0305f4ed3d7ee3e12eced83ede249eb2690cf9b623bde75c6650f39c13"}, - {file = "grimp-3.13-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f0c0ffbc579a42281ac54af446b4c2e35e5be9a7f64171de8b806c8c3e624919"}, - {file = "grimp-3.13-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e07fb97ac153c01ecd5790b27c47b8cc4a5a70ab2f6618ec8f9b69ade31d5f81"}, - {file = "grimp-3.13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c3d8f5fd5a962793c4cd9e4089a8ae8edcaf1ebabc28b151d4015a5736ca79"}, - {file = "grimp-3.13-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a5b323710e586b5db37d962d2b948eca47ceb70713c7aacb5cff01e7e7fc1b30"}, - {file = "grimp-3.13-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:fc9933269b4b390d5d256fbee065eeea549e837ad43daf8f9cce832bd692cd5f"}, - {file = "grimp-3.13-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c683645a4f61e62f8c99f3f643500b8660136666e44151b7491989e41407c86b"}, - {file = "grimp-3.13-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:cd07ab467fd6ed44db8cef047269ebc18e2b1811d30e25c54fc5818c573c3542"}, - {file = "grimp-3.13-cp313-cp313-win32.whl", hash = "sha256:ab88dfb6a2df6e362b75be19e803c71b02f5cb22ee5fb0459dce5b180cef0b7f"}, - {file = "grimp-3.13-cp313-cp313-win_amd64.whl", hash = "sha256:79a48b88b9b13de4ebe93a7d32e47e1155e85d4f67baef4b92bb34a65ea2bdb3"}, - {file = "grimp-3.13-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70094984cef4de1d59dad1a073a2e3e3e9cfd9874bd4c53146b3c66144800d39"}, - {file = "grimp-3.13-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a62b8f2073277a051d59a5973695b7e571a8225c433278777d9500070150a138"}, - {file = "grimp-3.13-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:13d1c158bae4cc0d24107389bf526ee02088df6f0a3caa413dd4e35c83d76f63"}, - {file = "grimp-3.13-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a77d900c13d32c4aed91f6aab7ceb485f7bd0e3d2f88ca6c190ec5dc9143703b"}, - {file = "grimp-3.13-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:21aeef8f1b7fc5f74e5513358f7774bd5bbb3159bd83eab7fe908c058fec3836"}, - {file = "grimp-3.13-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:0eef1697f5b608e8b615a72957474e76231105cdd79a8a546390045ba904a654"}, - {file = "grimp-3.13-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3f733a57be87b772cc21f63b062566cde4c90db6f3f338774a1567b11f7cb569"}, - {file = "grimp-3.13-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d00b611249f0370f811433c1d81173be27a34ecb588364a371e00f182e4fe88b"}, - {file = "grimp-3.13-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:db63d787ac9665374a09a6cc00f7adb3f63c3f462c68ea87d5efe186db9c9ad7"}, - {file = "grimp-3.13-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ba6f46658b5cf48b902f054a29e09b3af62893cf24df2951e300a0cf13cb2e71"}, - {file = "grimp-3.13-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:472aa20a42b8486a5bf46720fdb21c58f81a86646057f727afab39c0d6f5e6aa"}, - {file = "grimp-3.13-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f54bafaebc94db0a6e38a6c9a58fa9a8339d88acca99095d326104ee2747335"}, - {file = "grimp-3.13-cp314-cp314-win32.whl", hash = "sha256:b8b7450e1ad2494540ac39bc97b9f8f0a38ff1b0588b7722d93468e6ac1c9473"}, - {file = "grimp-3.13-cp314-cp314-win_amd64.whl", hash = "sha256:b70ca87be9e2df7212b7e3ebf65310051def6d2bb037a9b6a799397f56ac68df"}, - {file = "grimp-3.13-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:82eeb220124f22fc145685b34430a98143f994844d0f0899ec1e8ff82e5c48cf"}, - {file = "grimp-3.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1bf47f43b9cd35d50c4777e56ccf7a0a9703dfca262da5c25b7fcc1a0007545d"}, - {file = "grimp-3.13-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64dab41b6da5bbd2ca3c5ece4dcb0470981925664f3e1a310f1e57e78b777318"}, - {file = "grimp-3.13-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de1cdf18d35f6d1c3f63f480c7a9d1d0abef61cc35f4dd5fe22731a38ee35fa4"}, - {file = "grimp-3.13-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb1d58b57c99a020b961dc07391b567b20ffd13e5a6aec44e4ed22ad260964c6"}, - {file = "grimp-3.13-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:88d70179ddd4e2e9acaebf04239f45468189c9cbe14893e1958b48409eea572f"}, - {file = "grimp-3.13-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8e8272214e3af42316d85f7938cb5ffbdb653041490c7f6db3cd99285eb150d3"}, - {file = "grimp-3.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e75333974b1a7318251314b650ffa8c5a250e8dc2ae45f94bd51418d0c3764d"}, - {file = "grimp-3.13-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a4d8308e404517a68429b34749f8d44bc0f46ef04dad16998105c60033f90951"}, - {file = "grimp-3.13-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4d20e54075f337637d4ddc4e4f174db1530bc257a0cc3991ff8b38b39372f1b8"}, - {file = "grimp-3.13-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:02b329cdb6beb4159db4c74bf7e89ab0a0964524f56e463a2a3564a9e9ce25f5"}, - {file = "grimp-3.13-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c3a5e13f4b3619375b203a617ad377c2d099abb05a42f2792f2634bc24bfae1d"}, - {file = "grimp-3.13-cp39-cp39-win32.whl", hash = "sha256:cdb6e793bb83c901db8664ec3f6741786fb884a8dcac1d064592f083ab12f643"}, - {file = "grimp-3.13-cp39-cp39-win_amd64.whl", hash = "sha256:f27219649bb2610ce4a1db0761ce4a0651373d38b138b9fea4cfae77872f52e8"}, - {file = "grimp-3.13-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cbf5bdf82dd076c08583d689b1f40a042430401caa1e234b76198fe7333b91"}, - {file = "grimp-3.13-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c98f23be5c5c9a0d882bb5c58f190c7ac787fda00082618181b2b3b35181064"}, - {file = "grimp-3.13-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5738fad8fd82800564daab85d484b3dfc59bb38e5bc2879b96c906592d05aa97"}, - {file = "grimp-3.13-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e997676334afc838a2403efb633f271e52a76b1e50f970e7cfe367a1a9394550"}, - {file = "grimp-3.13-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b2f5ed0b657b41b99dd47dcafcb2af2d135aaacbb030be541aff7bd8df4ea61d"}, - {file = "grimp-3.13-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:99c8dd4c93a55554f66d388553e928f302d68f04f2d1dff6375a27d9c01e2b18"}, - {file = "grimp-3.13-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:2af34b44c1a8b6ead1a74e63cfb3b3ee299d31e71780031d43ae807bec145f18"}, - {file = "grimp-3.13-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ca96c2b2fac81ec2c518ae45986f122a388167ea93e89f71e851a508d3c92575"}, - {file = "grimp-3.13-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a6a3c76525b018c85c0e3a632d94d72be02225f8ada56670f3f213cf0762be4"}, - {file = "grimp-3.13-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:239e9b347af4da4cf69465bfa7b2901127f6057bc73416ba8187fb1eabafc6ea"}, - {file = "grimp-3.13-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6db85ce2dc2f804a2edd1c1e9eaa46d282e1f0051752a83ca08ca8b87f87376"}, - {file = "grimp-3.13-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e000f3590bcc6ff7c781ebbc1ac4eb919f97180f13cc4002c868822167bd9aed"}, - {file = "grimp-3.13-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2374c217c862c1af933a430192d6a7c6723ed1d90303f1abbc26f709bbb9263"}, - {file = "grimp-3.13-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ed0ff17d559ff2e7fa1be8ae086bc4fedcace5d7b12017f60164db8d9a8d806"}, - {file = "grimp-3.13-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:43960234aabce018c8d796ec8b77c484a1c9cbb6a3bc036a0d307c8dade9874c"}, - {file = "grimp-3.13-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:44420b638b3e303f32314bd4d309f15de1666629035acd1cdd3720c15917ac85"}, - {file = "grimp-3.13-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:f6127fdb982cf135612504d34aa16b841f421e54751fcd54f80b9531decb2b3f"}, - {file = "grimp-3.13-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:69893a9ef1edea25226ed17e8e8981e32900c59703972e0780c0e927ce624f75"}, - {file = "grimp-3.13-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c522d4ee6e921c040b7f932343d983b5a9521aab07685eedc49a6fc9001bd8c1"}, - {file = "grimp-3.13-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:32f4d60aa056640b0a3547521363329b6a5292df4ce4bc67a355d841303587dd"}, - {file = "grimp-3.13-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3e1b558ac78f82fa44a1c3b6b4fa1ad04ab41b4445353b6aebaff8cca4a9245c"}, - {file = "grimp-3.13-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27644460a503aea1df0f2e39d683395d45def73ebd5d61efc43e4dc8ad0cd4e0"}, - {file = "grimp-3.13-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:20b56bbf2ff00ea97701bf2ef48e79aed61790f01a0465a065787ca300057d74"}, - {file = "grimp-3.13-pp39-pypy39_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:fce5f24e792f8bb3dbe32e3329df53b54c0facd8181fa219ce0874ae4af7febd"}, - {file = "grimp-3.13-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:71e100238833264cbd1408e1e8636c16574ede09b9840fabed58ac2f4754d4e3"}, - {file = "grimp-3.13-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:7cbfde149e00986270b3c3552c67fefa101282f4ec9c5bfd08e7fd1878596629"}, - {file = "grimp-3.13.tar.gz", hash = "sha256:759bf6e05186e6473ee71af4119ec181855b2b324f4fcdd78dee9e5b59d87874"}, + {file = "grimp-3.14-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:17364365c27c111514fd9d17844f275ed074ec9feca0d6cf9bd5bf9218db2412"}, + {file = "grimp-3.14-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:25273ea53ac1492e7343bd9d9d9b60445f707bc0d162eca85288c7325579ee47"}, + {file = "grimp-3.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53b8f69bdf070fddbbc13f60a5cdb42efb102516770b34f076456ec4ce960627"}, + {file = "grimp-3.14-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1aa397596bb6d616200be1fd6570e87ddc225c192845c649d4f6015175b77bc6"}, + {file = "grimp-3.14-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2892ca934fc19c6d51d6c0a609d4db7e97c4721cc9a609f2bab8fe8e1ec1821"}, + {file = "grimp-3.14-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7e9367b9fa9c97cb8d1974a164d5981852b498977a097ad7335fc012ab96498b"}, + {file = "grimp-3.14-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87f398915c716c13736460a54f8dc5d70494d7d616039f547c0093f252307109"}, + {file = "grimp-3.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5551a825b14e52642428ef7c4a5790819bfaee0fdae94f89ce248cff3d7109bb"}, + {file = "grimp-3.14-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6ee7a2fab52ce0c6ae81fa1f2319bad5bd361110994567477f26be018043d63d"}, + {file = "grimp-3.14-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:6d1434172a02cd97425126260dec80a8fd0491d9467b822d871498199c296c91"}, + {file = "grimp-3.14-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9a85bf0a8c4b58db12184fe53a469a7189b4c63397a2eaca0d9efe410f6f68e7"}, + {file = "grimp-3.14-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:53d9ed23fb7da4c886affeb6b8bce7c19d8b09f2e1631a482c9446a20d504bdf"}, + {file = "grimp-3.14-cp310-cp310-win32.whl", hash = "sha256:d05110b9afda361ff8d90740a8344ccfd2d59a5a1977d517b9bce178738ed34f"}, + {file = "grimp-3.14-cp310-cp310-win_amd64.whl", hash = "sha256:fad2a819756b5c0441b8841c2e6f541960b13edd09b672e6e199232dcf9bcb7a"}, + {file = "grimp-3.14-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f1c91e3fa48c2196bf62e3c71492140d227b2bfcd6d15e735cbc0b3e2d5308e0"}, + {file = "grimp-3.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c6291c8f1690a9fe21b70923c60b075f4a89676541999e3d33084cbc69ac06a1"}, + {file = "grimp-3.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ec312383935c2d09e4085c8435780ada2e13ebef14e105609c2988a02a5b2ce"}, + {file = "grimp-3.14-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f43cbf640e73ee703ad91639591046828d20103a1c363a02516e77a66a4ac07"}, + {file = "grimp-3.14-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a93c9fddccb9ff16f5c6b5fca44227f5f86cba7cffc145d2176119603d2d7c7"}, + {file = "grimp-3.14-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5653a2769fdc062cb7598d12200352069c9c6559b6643af6ada3639edb98fcc3"}, + {file = "grimp-3.14-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:071c7ddf5e5bb7b2fdf79aefdf6e1c237cd81c095d6d0a19620e777e85bf103c"}, + {file = "grimp-3.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e01b7a4419f535b667dfdcb556d3815b52981474f791fb40d72607228389a31"}, + {file = "grimp-3.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c29682f336151d1d018d0c3aa9eeaa35734b970e4593fa396b901edca7ef5c79"}, + {file = "grimp-3.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:a5c4fd71f363ea39e8aab0630010ced77a8de9789f27c0acdd0d7e6269d4a8ef"}, + {file = "grimp-3.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:766911e3ba0b13d833fdd03ad1f217523a8a2b2527b5507335f71dca1153183d"}, + {file = "grimp-3.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:154e84a2053e9f858ae48743de23a5ad4eb994007518c29371276f59b8419036"}, + {file = "grimp-3.14-cp311-cp311-win32.whl", hash = "sha256:3189c86c3e73016a1907ee3ba9f7a6ca037e3601ad09e60ce9bf12b88877f812"}, + {file = "grimp-3.14-cp311-cp311-win_amd64.whl", hash = "sha256:201f46a6a4e5ee9dfba4a2f7d043f7deab080d1d84233f4a1aee812678c25307"}, + {file = "grimp-3.14-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ffabc6940301214753bad89ec0bfe275892fa1f64b999e9a101f6cebfc777133"}, + {file = "grimp-3.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:075d9a1c78d607792d0ed8d4d3d7754a621ef04c8a95eaebf634930dc9232bb2"}, + {file = "grimp-3.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06ff52addeb20955a4d6aa097bee910573ffc9ef0d3c8a860844f267ad958156"}, + {file = "grimp-3.14-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d10e0663e961fcbe8d0f54608854af31f911f164c96a44112d5173050132701f"}, + {file = "grimp-3.14-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ab874d7ddddc7a1291259cf7c31a4e7b5c612e9da2e24c67c0eb1a44a624e67"}, + {file = "grimp-3.14-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:54fec672ec83355636a852177f5a470c964bede0f6730f9ba3c7b5c8419c9eab"}, + {file = "grimp-3.14-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9e221b5e8070a916c780e88c877fee2a61c95a76a76a2a076396e459511b0bb"}, + {file = "grimp-3.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eea6b495f9b4a8d82f5ce544921e76d0d12017f5d1ac3a3bd2f5ac88ab055b1c"}, + {file = "grimp-3.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:655e8d3f79cd99bb859e09c9dd633515150e9d850879ca71417d5ac31809b745"}, + {file = "grimp-3.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a14f10b1b71c6c37647a76e6a49c226509648107abc0f48c1e3ecd158ba05531"}, + {file = "grimp-3.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:81685111ee24d3e25f8ed9e77ed00b92b58b2414e1a1c2937236026900972744"}, + {file = "grimp-3.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce8352a8ea0e27b143136ea086582fc6653419aa8a7c15e28ed08c898c42b185"}, + {file = "grimp-3.14-cp312-cp312-win32.whl", hash = "sha256:3fc0f98b3c60d88e9ffa08faff3200f36604930972f8b29155f323b76ea25a06"}, + {file = "grimp-3.14-cp312-cp312-win_amd64.whl", hash = "sha256:6bca77d1d50c8dc402c96af21f4e28e2f1e9938eeabd7417592a22bd83cde3c3"}, + {file = "grimp-3.14-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:af8a625554beea84530b98cc471902155b5fc042b42dc47ec846fa3e32b0c615"}, + {file = "grimp-3.14-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0dd1942ffb419ad342f76b0c3d3d2d7f312b264ddc578179d13ce8d5acec1167"}, + {file = "grimp-3.14-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:537f784ce9b4acf8657f0b9714ab69a6c72ffa752eccc38a5a85506103b1a194"}, + {file = "grimp-3.14-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:78ab18c08770aa005bef67b873bc3946d33f65727e9f3e508155093db5fa57d6"}, + {file = "grimp-3.14-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:28ca58728c27e7292c99f964e6ece9295c2f9cfdefc37c18dea0679c783ffb6f"}, + {file = "grimp-3.14-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9b5577de29c6c5ae6e08d4ca0ac361b45dba323aa145796e6b320a6ea35414b7"}, + {file = "grimp-3.14-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d7d1f9f42306f455abcec34db877e4887ff15f2777a43491f7ccbd6936c449b"}, + {file = "grimp-3.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39bd5c9b7cef59ee30a05535e9cb4cbf45a3c503f22edce34d0aa79362a311a9"}, + {file = "grimp-3.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7fec3116b4f780a1bc54176b19e6b9f2e36e2ef3164b8fc840660566af35df88"}, + {file = "grimp-3.14-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:0233a35a5bbb23688d63e1736b54415fa9994ace8dfeb7de8514ed9dee212968"}, + {file = "grimp-3.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e46b2fef0f1da7e7e2f8129eb93c7e79db716ff7810140a22ce5504e10ed86df"}, + {file = "grimp-3.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3e6d9b50623ee1c3d2a1927ec3f5d408995ea1f92f3e91ed996c908bb40e856f"}, + {file = "grimp-3.14-cp313-cp313-win32.whl", hash = "sha256:fd57c56f5833c99320ec77e8ba5508d56f6fb48ec8032a942f7931cc6ebb80ce"}, + {file = "grimp-3.14-cp313-cp313-win_amd64.whl", hash = "sha256:173307cf881a126fe5120b7bbec7d54384002e3c83dcd8c4df6ce7f0fee07c53"}, + {file = "grimp-3.14-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebe29f8f13fbd7c314908ed535183a36e6db71839355b04869b27f23c58fa082"}, + {file = "grimp-3.14-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:073d285b00100153fd86064c7726bb1b6d610df1356d33bb42d3fd8809cb6e72"}, + {file = "grimp-3.14-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6d6efc37e1728bbfcd881b89467be5f7b046292597b3ebe5f8e44e89ea8b6cb"}, + {file = "grimp-3.14-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5337d65d81960b712574c41e85b480d4480bbb5c6f547c94e634f6c60d730889"}, + {file = "grimp-3.14-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:84a7fea63e352b325daa89b0b7297db411b7f0036f8d710c32f8e5090e1fc3ca"}, + {file = "grimp-3.14-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:d0b19a3726377165fe1f7184a8af317734d80d32b371b6c5578747867ab53c0b"}, + {file = "grimp-3.14-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9caa4991f530750f88474a3f5ecf6ef9f0d064034889d92db00cfb4ecb78aa24"}, + {file = "grimp-3.14-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1876efc119b99332a5cc2b08a6bdaada2f0ad94b596f0372a497e2aa8bda4d94"}, + {file = "grimp-3.14-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3ccf03e65864d6bc7bf1c003c319f5330a7627b3677f31143f11691a088464c2"}, + {file = "grimp-3.14-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9ecd58fa58a270e7523f8bec9e6452f4fdb9c21e4cd370640829f1e43fa87a69"}, + {file = "grimp-3.14-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d75d1f8f7944978b39b08d870315174f1ffcd5123be6ccff8ce90467ace648a"}, + {file = "grimp-3.14-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6f70bbb1dd6055d08d29e39a78a11c4118c1778b39d17cd8271e18e213524ca7"}, + {file = "grimp-3.14-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f21b7c003626c902669dc26ede83a91220cf0a81b51b27128370998c2f247b4"}, + {file = "grimp-3.14-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80d9f056415c936b45561310296374c4319b5df0003da802c84d2830a103792a"}, + {file = "grimp-3.14-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0332963cd63a45863775d4237e59dedf95455e0a1ea50c356be23100c5fc1d7c"}, + {file = "grimp-3.14-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f4144350d074f2058fe7c89230a26b34296b161f085b0471a692cb2fe27036f"}, + {file = "grimp-3.14-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e148e67975e92f90a8435b1b4c02180b9a3f3d725b7a188ba63793f1b1e445a0"}, + {file = "grimp-3.14-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:1093f7770cb5f3ca6f99fb152f9c949381cc0b078dfdfe598c8ab99abaccda3b"}, + {file = "grimp-3.14-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:a213f45ec69e9c2b28ffd3ba5ab12cc9859da17083ba4dc39317f2083b618111"}, + {file = "grimp-3.14-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5f003ac3f226d2437a49af0b6036f26edba57f8a32d329275dbde1b2b2a00a56"}, + {file = "grimp-3.14-cp314-cp314-win32.whl", hash = "sha256:eec81be65a18f4b2af014b1e97296cc9ee20d1115529bf70dd7e06f457eac30b"}, + {file = "grimp-3.14-cp314-cp314-win_amd64.whl", hash = "sha256:cd3bab6164f1d5e313678f0ab4bf45955afe7f5bdb0f2f481014aa9cca7e81ba"}, + {file = "grimp-3.14-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b1df33de479be4d620f69633d1876858a8e64a79c07907d47cf3aaf896af057"}, + {file = "grimp-3.14-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07096d4402e9d5a2c59c402ea3d601f4b7f99025f5e32f077468846fc8d3821b"}, + {file = "grimp-3.14-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:712bc28f46b354316af50c469c77953ba3d6cb4166a62b8fb086436a8b05d301"}, + {file = "grimp-3.14-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abe2bbef1cf8e27df636c02f60184319f138dee4f3a949405c21a4b491980397"}, + {file = "grimp-3.14-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2f9ae3fabb7a7a8468ddc96acc84ecabd84f168e7ca508ee94d8f32ea9bd5de2"}, + {file = "grimp-3.14-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:efaf11ea73f7f12d847c54a5d6edcbe919e0369dce2d1aabae6c50792e16f816"}, + {file = "grimp-3.14-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e089c9ab8aa755ff5af88c55891727783b4eb6b228e7bdf278e17209d954aa1e"}, + {file = "grimp-3.14-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a424ad14d5deb56721ac24ab939747f72ab3d378d42e7d1f038317d33b052b77"}, + {file = "grimp-3.14-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1d4f96c0159b33647295ad36683fe7be55fa620de6e54e970c913cb88d0a5a6"}, + {file = "grimp-3.14-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e715f78fda0019b493459f97efc48462912b4c5b5d261215d94c05115511d311"}, + {file = "grimp-3.14-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d0a885b04edbe908cd6f2f8cb0999dd2a348091d241bd9842f9ea593fabdce5"}, + {file = "grimp-3.14-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6995b20574313ba66b73d288f431af24b9d23d60c861e8f5cbf0d0e26ad9c49"}, + {file = "grimp-3.14-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:d2a170deb9f4790221dcde8c47e60be7fcd52999062241ac944ce556efa1d24d"}, + {file = "grimp-3.14-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:1d4a28e2545a83c853a6357ccf4a5105e3f74419a75312b5ebaf0435085cd938"}, + {file = "grimp-3.14-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:9aa74d848c083725add12e0e6d42a01ddfd8ee84e9504ad7254204985e3c5c92"}, + {file = "grimp-3.14-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:acf0acedaf105c8d3747abf073c6a2dd1379bafcb5807926fd6d5fe4b0980698"}, + {file = "grimp-3.14-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c8a8aab9b4310a7e69d7d845cac21cf14563aa0520ea322b948eadeae56d303"}, + {file = "grimp-3.14-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d781943b27e5875a41c8f9cfc80f8f0a349f864379192b8c3faa0e6a22593313"}, + {file = "grimp-3.14-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9630d4633607aff94d0ac84b9c64fef1382cdb05b00d9acbde47f8745e264871"}, + {file = "grimp-3.14-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cb00e1bcca583668554a8e9e1e4229a1d11b0620969310aae40148829ff6a32"}, + {file = "grimp-3.14-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3389da4ceaaa7f7de24a668c0afc307a9f95997bd90f81ec359a828a9bd1d270"}, + {file = "grimp-3.14-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd7a32970ef97e42d4e7369397c7795287d84a736d788ccb90b6c14f0561d975"}, + {file = "grimp-3.14-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:fd1278623fa09f62abc0fd8a6500f31b421a1fd479980f44c2926020a0becf02"}, + {file = "grimp-3.14-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:9cfa52c89333d3d8fe9dc782529e888270d060231c3783e036d424044671dde0"}, + {file = "grimp-3.14-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:48a5be4a12fca6587e6885b4fc13b9e242ab8bf874519292f0f13814aecf52cc"}, + {file = "grimp-3.14-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:3fcc332466783a12a42cd317fd344c30fe734ba4fa2362efff132dc3f8d36da7"}, + {file = "grimp-3.14.tar.gz", hash = "sha256:645fbd835983901042dae4e1b24fde3a89bf7ac152f9272dd17a97e55cb4f871"}, ] [package.dependencies] @@ -1254,14 +1297,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "humanize" -version = "4.14.0" +version = "4.15.0" description = "Python humanize utilities" optional = false python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "humanize-4.14.0-py3-none-any.whl", hash = "sha256:d57701248d040ad456092820e6fde56c930f17749956ac47f4f655c0c547bfff"}, - {file = "humanize-4.14.0.tar.gz", hash = "sha256:2fa092705ea640d605c435b1ca82b2866a1b601cdf96f076d70b79a855eba90d"}, + {file = "humanize-4.15.0-py3-none-any.whl", hash = "sha256:b1186eb9f5a9749cd9cb8565aee77919dd7c8d076161cf44d70e59e3301e1769"}, + {file = "humanize-4.15.0.tar.gz", hash = "sha256:1dd098483eb1c7ee8e32eb2e99ad1910baefa4b75c3aff3a82f4d78688993b10"}, ] [package.extras] @@ -1269,34 +1312,34 @@ tests = ["freezegun", "pytest", "pytest-cov"] [[package]] name = "id" -version = "1.5.0" +version = "1.6.1" description = "A tool for generating OIDC identities" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "id-1.5.0-py3-none-any.whl", hash = "sha256:f1434e1cef91f2cbb8a4ec64663d5a23b9ed43ef44c4c957d02583d61714c658"}, - {file = "id-1.5.0.tar.gz", hash = "sha256:292cb8a49eacbbdbce97244f47a97b4c62540169c976552e497fd57df0734c1d"}, + {file = "id-1.6.1-py3-none-any.whl", hash = "sha256:f5ec41ed2629a508f5d0988eda142e190c9c6da971100612c4de9ad9f9b237ca"}, + {file = "id-1.6.1.tar.gz", hash = "sha256:d0732d624fb46fd4e7bc4e5152f00214450953b9e772c182c1c22964def1a069"}, ] [package.dependencies] -requests = "*" +urllib3 = ">=2,<3" [package.extras] dev = ["build", "bump (>=1.3.2)", "id[lint,test]"] -lint = ["bandit", "interrogate", "mypy", "ruff (<0.8.2)", "types-requests"] +lint = ["bandit", "interrogate", "mypy", "ruff (<0.14.15)"] test = ["coverage[toml]", "pretend", "pytest", "pytest-cov"] [[package]] name = "identify" -version = "2.6.15" +version = "2.6.16" description = "File identification library for Python" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "identify-2.6.15-py2.py3-none-any.whl", hash = "sha256:1181ef7608e00704db228516541eb83a88a9f94433a8c80bb9b5bd54b1d81757"}, - {file = "identify-2.6.15.tar.gz", hash = "sha256:e4f4864b96c6557ef2a1e1c951771838f4edc9df3a72ec7118b338801b11c7bf"}, + {file = "identify-2.6.16-py2.py3-none-any.whl", hash = "sha256:391ee4d77741d994189522896270b787aed8670389bfd60f326d677d64a6dfb0"}, + {file = "identify-2.6.16.tar.gz", hash = "sha256:846857203b5511bbe94d5a352a48ef2359532bc8f6727b5544077a0dcfb24980"}, ] [package.extras] @@ -1343,34 +1386,36 @@ files = [ [[package]] name = "import-linter" -version = "2.7" -description = "Enforces rules for the imports within and between Python packages." +version = "2.10" +description = "Lint your Python architecture" optional = false python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "import_linter-2.7-py3-none-any.whl", hash = "sha256:be03bbd467b3f0b4535fb3ee12e07995d9837864b307df2e78888364e0ba012d"}, - {file = "import_linter-2.7.tar.gz", hash = "sha256:7bea754fac9cde54182c81eeb48f649eea20b865219c39f7ac2abd23775d07d2"}, + {file = "import_linter-2.10-py3-none-any.whl", hash = "sha256:cc2ddd7ec0145cbf83f3b25391d2a5dbbf138382aaf80708612497fa6ebc8f60"}, + {file = "import_linter-2.10.tar.gz", hash = "sha256:c6a5057d2dbd32e1854c4d6b60e90dfad459b7ab5356230486d8521f25872963"}, ] [package.dependencies] click = ">=6" -grimp = "3.13" +fastapi = "*" +grimp = ">=3.14" rich = ">=14.2.0" tomli = {version = ">=1.2.1", markers = "python_version < \"3.11\""} typing-extensions = ">=3.10.0.0" +uvicorn = "*" [[package]] name = "importlib-metadata" -version = "8.7.0" +version = "8.7.1" description = "Read metadata from Python packages" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and python_version <= \"3.11\"" files = [ - {file = "importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd"}, - {file = "importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000"}, + {file = "importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151"}, + {file = "importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb"}, ] [package.dependencies] @@ -1380,10 +1425,10 @@ zipp = ">=3.20" check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] +enabler = ["pytest-enabler (>=3.4)"] perf = ["ipython"] -test = ["flufl.flake8", "importlib_resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] -type = ["pytest-mypy"] +test = ["flufl.flake8", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-mypy (>=1.0.1)"] [[package]] name = "importlib-resources" @@ -1419,14 +1464,14 @@ files = [ [[package]] name = "isort" -version = "6.1.0" +version = "7.0.0" description = "A Python utility / library to sort Python imports." optional = false -python-versions = ">=3.9.0" +python-versions = ">=3.10.0" groups = ["dev"] files = [ - {file = "isort-6.1.0-py3-none-any.whl", hash = "sha256:58d8927ecce74e5087aef019f778d4081a3b6c98f15a80ba35782ca8a2097784"}, - {file = "isort-6.1.0.tar.gz", hash = "sha256:9b8f96a14cfee0677e78e941ff62f03769a06d412aabb9e2a90487b3b7e8d481"}, + {file = "isort-7.0.0-py3-none-any.whl", hash = "sha256:1bcabac8bc3c36c7fb7b98a76c8abb18e0f841a3ba81decac7691008592499c1"}, + {file = "isort-7.0.0.tar.gz", hash = "sha256:5513527951aadb3ac4292a41a16cbc50dd1642432f5e8c20057d414bdafb4187"}, ] [package.extras] @@ -1455,35 +1500,39 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-ena [[package]] name = "jaraco-context" -version = "6.0.1" +version = "6.1.0" description = "Useful decorators and context managers" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ - {file = "jaraco.context-6.0.1-py3-none-any.whl", hash = "sha256:f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4"}, - {file = "jaraco_context-6.0.1.tar.gz", hash = "sha256:9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3"}, + {file = "jaraco_context-6.1.0-py3-none-any.whl", hash = "sha256:a43b5ed85815223d0d3cfdb6d7ca0d2bc8946f28f30b6f3216bda070f68badda"}, + {file = "jaraco_context-6.1.0.tar.gz", hash = "sha256:129a341b0a85a7db7879e22acd66902fda67882db771754574338898b2d5d86f"}, ] [package.dependencies] "backports.tarfile" = {version = "*", markers = "python_version < \"3.12\""} [package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -test = ["portend", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +enabler = ["pytest-enabler (>=3.4)"] +test = ["jaraco.test (>=5.6.0)", "portend", "pytest (>=6,!=8.1.*)"] +type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-mypy (>=1.0.1)"] [[package]] name = "jaraco-functools" -version = "4.3.0" +version = "4.4.0" description = "Functools like those found in stdlib" optional = false python-versions = ">=3.9" groups = ["dev"] markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\"" files = [ - {file = "jaraco_functools-4.3.0-py3-none-any.whl", hash = "sha256:227ff8ed6f7b8f62c56deff101545fa7543cf2c8e7b82a7c2116e672f29c26e8"}, - {file = "jaraco_functools-4.3.0.tar.gz", hash = "sha256:cfd13ad0dd2c47a3600b439ef72d8615d482cedcff1632930d6f28924d92f294"}, + {file = "jaraco_functools-4.4.0-py3-none-any.whl", hash = "sha256:9eec1e36f45c818d9bf307c8948eb03b2b56cd44087b3cdc989abca1f20b9176"}, + {file = "jaraco_functools-4.4.0.tar.gz", hash = "sha256:da21933b0417b89515562656547a77b4931f98176eb173644c0d35032a33d6bb"}, ] [package.dependencies] @@ -1493,9 +1542,9 @@ more_itertools = "*" check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] +enabler = ["pytest-enabler (>=3.4)"] test = ["jaraco.classes", "pytest (>=6,!=8.1.*)"] -type = ["pytest-mypy"] +type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-mypy (>=1.0.1)"] [[package]] name = "jeepney" @@ -1578,6 +1627,107 @@ enabler = ["pytest-enabler (>=3.4)"] test = ["pyfakefs", "pytest (>=6,!=8.1.*)"] type = ["pygobject-stubs", "pytest-mypy (>=1.0.1)", "shtab", "types-pywin32"] +[[package]] +name = "librt" +version = "0.8.0" +description = "Mypyc runtime library" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +markers = "platform_python_implementation != \"PyPy\"" +files = [ + {file = "librt-0.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db63cf3586a24241e89ca1ce0b56baaec9d371a328bd186c529b27c914c9a1ef"}, + {file = "librt-0.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ba9d9e60651615bc614be5e21a82cdb7b1769a029369cf4b4d861e4f19686fb6"}, + {file = "librt-0.8.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cb4b3ad543084ed79f186741470b251b9d269cd8b03556f15a8d1a99a64b7de5"}, + {file = "librt-0.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3d2720335020219197380ccfa5c895f079ac364b4c429e96952cd6509934d8eb"}, + {file = "librt-0.8.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9726305d3e53419d27fc8cdfcd3f9571f0ceae22fa6b5ea1b3662c2e538f833e"}, + {file = "librt-0.8.0-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cc3d107f603b5ee7a79b6aa6f166551b99b32fb4a5303c4dfcb4222fc6a0335e"}, + {file = "librt-0.8.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:41064a0c07b4cc7a81355ccc305cb097d6027002209ffca51306e65ee8293630"}, + {file = "librt-0.8.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c6e4c10761ddbc0d67d2f6e2753daf99908db85d8b901729bf2bf5eaa60e0567"}, + {file = "librt-0.8.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:ba581acad5ac8f33e2ff1746e8a57e001b47c6721873121bf8bbcf7ba8bd3aa4"}, + {file = "librt-0.8.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bdab762e2c0b48bab76f1a08acb3f4c77afd2123bedac59446aeaaeed3d086cf"}, + {file = "librt-0.8.0-cp310-cp310-win32.whl", hash = "sha256:6a3146c63220d814c4a2c7d6a1eacc8d5c14aed0ff85115c1dfea868080cd18f"}, + {file = "librt-0.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:bbebd2bba5c6ae02907df49150e55870fdd7440d727b6192c46b6f754723dde9"}, + {file = "librt-0.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ce33a9778e294507f3a0e3468eccb6a698b5166df7db85661543eca1cfc5369"}, + {file = "librt-0.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8070aa3368559de81061ef752770d03ca1f5fc9467d4d512d405bd0483bfffe6"}, + {file = "librt-0.8.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:20f73d4fecba969efc15cdefd030e382502d56bb6f1fc66b580cce582836c9fa"}, + {file = "librt-0.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a512c88900bdb1d448882f5623a0b1ad27ba81a9bd75dacfe17080b72272ca1f"}, + {file = "librt-0.8.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:015e2dde6e096d27c10238bf9f6492ba6c65822dfb69d2bf74c41a8e88b7ddef"}, + {file = "librt-0.8.0-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1c25a131013eadd3c600686a0c0333eb2896483cbc7f65baa6a7ee761017aef9"}, + {file = "librt-0.8.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:21b14464bee0b604d80a638cf1ee3148d84ca4cc163dcdcecb46060c1b3605e4"}, + {file = "librt-0.8.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:05a3dd3f116747f7e1a2b475ccdc6fb637fd4987126d109e03013a79d40bf9e6"}, + {file = "librt-0.8.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:fa37f99bff354ff191c6bcdffbc9d7cdd4fc37faccfc9be0ef3a4fd5613977da"}, + {file = "librt-0.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1566dbb9d1eb0987264c9b9460d212e809ba908d2f4a3999383a84d765f2f3f1"}, + {file = "librt-0.8.0-cp311-cp311-win32.whl", hash = "sha256:70defb797c4d5402166787a6b3c66dfb3fa7f93d118c0509ffafa35a392f4258"}, + {file = "librt-0.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:db953b675079884ffda33d1dca7189fb961b6d372153750beb81880384300817"}, + {file = "librt-0.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:75d1a8cab20b2043f03f7aab730551e9e440adc034d776f15f6f8d582b0a5ad4"}, + {file = "librt-0.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:17269dd2745dbe8e42475acb28e419ad92dfa38214224b1b01020b8cac70b645"}, + {file = "librt-0.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f4617cef654fca552f00ce5ffdf4f4b68770f18950e4246ce94629b789b92467"}, + {file = "librt-0.8.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5cb11061a736a9db45e3c1293cfcb1e3caf205912dfa085734ba750f2197ff9a"}, + {file = "librt-0.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4bb00bd71b448f16749909b08a0ff16f58b079e2261c2e1000f2bbb2a4f0a45"}, + {file = "librt-0.8.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95a719a049f0eefaf1952673223cf00d442952273cbd20cf2ed7ec423a0ef58d"}, + {file = "librt-0.8.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bd32add59b58fba3439d48d6f36ac695830388e3da3e92e4fc26d2d02670d19c"}, + {file = "librt-0.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4f764b2424cb04524ff7a486b9c391e93f93dc1bd8305b2136d25e582e99aa2f"}, + {file = "librt-0.8.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f04ca50e847abc486fa8f4107250566441e693779a5374ba211e96e238f298b9"}, + {file = "librt-0.8.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:9ab3a3475a55b89b87ffd7e6665838e8458e0b596c22e0177e0f961434ec474a"}, + {file = "librt-0.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3e36a8da17134ffc29373775d88c04832f9ecfab1880470661813e6c7991ef79"}, + {file = "librt-0.8.0-cp312-cp312-win32.whl", hash = "sha256:4eb5e06ebcc668677ed6389164f52f13f71737fc8be471101fa8b4ce77baeb0c"}, + {file = "librt-0.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:0a33335eb59921e77c9acc05d0e654e4e32e45b014a4d61517897c11591094f8"}, + {file = "librt-0.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:24a01c13a2a9bdad20997a4443ebe6e329df063d1978bbe2ebbf637878a46d1e"}, + {file = "librt-0.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7f820210e21e3a8bf8fde2ae3c3d10106d4de9ead28cbfdf6d0f0f41f5b12fa1"}, + {file = "librt-0.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4831c44b8919e75ca0dfb52052897c1ef59fdae19d3589893fbd068f1e41afbf"}, + {file = "librt-0.8.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:88c6e75540f1f10f5e0fc5e87b4b6c290f0e90d1db8c6734f670840494764af8"}, + {file = "librt-0.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9646178cd794704d722306c2c920c221abbf080fede3ba539d5afdec16c46dad"}, + {file = "librt-0.8.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e1af31a710e17891d9adf0dbd9a5fcd94901a3922a96499abdbf7ce658f4e01"}, + {file = "librt-0.8.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:507e94f4bec00b2f590fbe55f48cd518a208e2474a3b90a60aa8f29136ddbada"}, + {file = "librt-0.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f1178e0de0c271231a660fbef9be6acdfa1d596803464706862bef6644cc1cae"}, + {file = "librt-0.8.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:71fc517efc14f75c2f74b1f0a5d5eb4a8e06aa135c34d18eaf3522f4a53cd62d"}, + {file = "librt-0.8.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:0583aef7e9a720dd40f26a2ad5a1bf2ccbb90059dac2b32ac516df232c701db3"}, + {file = "librt-0.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5d0f76fc73480d42285c609c0ea74d79856c160fa828ff9aceab574ea4ecfd7b"}, + {file = "librt-0.8.0-cp313-cp313-win32.whl", hash = "sha256:e79dbc8f57de360f0ed987dc7de7be814b4803ef0e8fc6d3ff86e16798c99935"}, + {file = "librt-0.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:25b3e667cbfc9000c4740b282df599ebd91dbdcc1aa6785050e4c1d6be5329ab"}, + {file = "librt-0.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:e9a3a38eb4134ad33122a6d575e6324831f930a771d951a15ce232e0237412c2"}, + {file = "librt-0.8.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:421765e8c6b18e64d21c8ead315708a56fc24f44075059702e421d164575fdda"}, + {file = "librt-0.8.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:48f84830a8f8ad7918afd743fd7c4eb558728bceab7b0e38fd5a5cf78206a556"}, + {file = "librt-0.8.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:9f09d4884f882baa39a7e36bbf3eae124c4ca2a223efb91e567381d1c55c6b06"}, + {file = "librt-0.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:693697133c3b32aa9b27f040e3691be210e9ac4d905061859a9ed519b1d5a376"}, + {file = "librt-0.8.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5512aae4648152abaf4d48b59890503fcbe86e85abc12fb9b096fe948bdd816"}, + {file = "librt-0.8.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:995d24caa6bbb34bcdd4a41df98ac6d1af637cfa8975cb0790e47d6623e70e3e"}, + {file = "librt-0.8.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b9aef96d7593584e31ef6ac1eb9775355b0099fee7651fae3a15bc8657b67b52"}, + {file = "librt-0.8.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:4f6e975377fbc4c9567cb33ea9ab826031b6c7ec0515bfae66a4fb110d40d6da"}, + {file = "librt-0.8.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:daae5e955764be8fd70a93e9e5133c75297f8bce1e802e1d3683b98f77e1c5ab"}, + {file = "librt-0.8.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7bd68cebf3131bb920d5984f75fe302d758db33264e44b45ad139385662d7bc3"}, + {file = "librt-0.8.0-cp314-cp314-win32.whl", hash = "sha256:1e6811cac1dcb27ca4c74e0ca4a5917a8e06db0d8408d30daee3a41724bfde7a"}, + {file = "librt-0.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:178707cda89d910c3b28bf5aa5f69d3d4734e0f6ae102f753ad79edef83a83c7"}, + {file = "librt-0.8.0-cp314-cp314-win_arm64.whl", hash = "sha256:3e8b77b5f54d0937b26512774916041756c9eb3e66f1031971e626eea49d0bf4"}, + {file = "librt-0.8.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:789911e8fa40a2e82f41120c936b1965f3213c67f5a483fc5a41f5839a05dcbb"}, + {file = "librt-0.8.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2b37437e7e4ef5e15a297b36ba9e577f73e29564131d86dd75875705e97402b5"}, + {file = "librt-0.8.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:671a6152edf3b924d98a5ed5e6982ec9cb30894085482acadce0975f031d4c5c"}, + {file = "librt-0.8.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8992ca186a1678107b0af3d0c9303d8c7305981b9914989b9788319ed4d89546"}, + {file = "librt-0.8.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:001e5330093d887b8b9165823eca6c5c4db183fe4edea4fdc0680bbac5f46944"}, + {file = "librt-0.8.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d920789eca7ef71df7f31fd547ec0d3002e04d77f30ba6881e08a630e7b2c30e"}, + {file = "librt-0.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:82fb4602d1b3e303a58bfe6165992b5a78d823ec646445356c332cd5f5bbaa61"}, + {file = "librt-0.8.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:4d3e38797eb482485b486898f89415a6ab163bc291476bd95712e42cf4383c05"}, + {file = "librt-0.8.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:a905091a13e0884701226860836d0386b88c72ce5c2fdfba6618e14c72be9f25"}, + {file = "librt-0.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:375eda7acfce1f15f5ed56cfc960669eefa1ec8732e3e9087c3c4c3f2066759c"}, + {file = "librt-0.8.0-cp314-cp314t-win32.whl", hash = "sha256:2ccdd20d9a72c562ffb73098ac411de351b53a6fbb3390903b2d33078ef90447"}, + {file = "librt-0.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:25e82d920d4d62ad741592fcf8d0f3bda0e3fc388a184cb7d2f566c681c5f7b9"}, + {file = "librt-0.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:92249938ab744a5890580d3cb2b22042f0dce71cdaa7c1369823df62bedf7cbc"}, + {file = "librt-0.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4b705f85311ee76acec5ee70806990a51f0deb519ea0c29c1d1652d79127604d"}, + {file = "librt-0.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7ce0a8cb67e702dcb06342b2aaaa3da9fb0ddc670417879adfa088b44cf7b3b6"}, + {file = "librt-0.8.0-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:aaadec87f45a3612b6818d1db5fbfe93630669b7ee5d6bdb6427ae08a1aa2141"}, + {file = "librt-0.8.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56901f1eec031396f230db71c59a01d450715cbbef9856bf636726994331195d"}, + {file = "librt-0.8.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b055bb3abaf69abed25743d8fc1ab691e4f51a912ee0a6f9a6c84f4bbddb283d"}, + {file = "librt-0.8.0-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1ef3bd856373cf8e7382402731f43bfe978a8613b4039e49e166e1e0dc590216"}, + {file = "librt-0.8.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2e0ffe88ebb5962f8fb0ddcbaaff30f1ea06a79501069310e1e030eafb1ad787"}, + {file = "librt-0.8.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:82e61cd1c563745ad495387c3b65806bfd453badb4adbc019df3389dddee1bf6"}, + {file = "librt-0.8.0-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:667e2513cf69bfd1e1ed9a00d6c736d5108714ec071192afb737987955888a25"}, + {file = "librt-0.8.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b6caff69e25d80c269b1952be8493b4d94ef745f438fa619d7931066bdd26de"}, + {file = "librt-0.8.0-cp39-cp39-win32.whl", hash = "sha256:02a9fe85410cc9bef045e7cb7fd26fdde6669e6d173f99df659aa7f6335961e9"}, + {file = "librt-0.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:de076eaba208d16efb5962f99539867f8e2c73480988cb513fcf1b5dbb0c9dcf"}, + {file = "librt-0.8.0.tar.gz", hash = "sha256:cb74cdcbc0103fc988e04e5c58b0b31e8e5dd2babb9182b6f9490488eb36324b"}, +] + [[package]] name = "license-expression" version = "30.4.4" @@ -1850,53 +2000,54 @@ files = [ [[package]] name = "mypy" -version = "1.18.2" +version = "1.19.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "mypy-1.18.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c1eab0cf6294dafe397c261a75f96dc2c31bffe3b944faa24db5def4e2b0f77c"}, - {file = "mypy-1.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a780ca61fc239e4865968ebc5240bb3bf610ef59ac398de9a7421b54e4a207e"}, - {file = "mypy-1.18.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:448acd386266989ef11662ce3c8011fd2a7b632e0ec7d61a98edd8e27472225b"}, - {file = "mypy-1.18.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f9e171c465ad3901dc652643ee4bffa8e9fef4d7d0eece23b428908c77a76a66"}, - {file = "mypy-1.18.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:592ec214750bc00741af1f80cbf96b5013d81486b7bb24cb052382c19e40b428"}, - {file = "mypy-1.18.2-cp310-cp310-win_amd64.whl", hash = "sha256:7fb95f97199ea11769ebe3638c29b550b5221e997c63b14ef93d2e971606ebed"}, - {file = "mypy-1.18.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:807d9315ab9d464125aa9fcf6d84fde6e1dc67da0b6f80e7405506b8ac72bc7f"}, - {file = "mypy-1.18.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:776bb00de1778caf4db739c6e83919c1d85a448f71979b6a0edd774ea8399341"}, - {file = "mypy-1.18.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1379451880512ffce14505493bd9fe469e0697543717298242574882cf8cdb8d"}, - {file = "mypy-1.18.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1331eb7fd110d60c24999893320967594ff84c38ac6d19e0a76c5fd809a84c86"}, - {file = "mypy-1.18.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3ca30b50a51e7ba93b00422e486cbb124f1c56a535e20eff7b2d6ab72b3b2e37"}, - {file = "mypy-1.18.2-cp311-cp311-win_amd64.whl", hash = "sha256:664dc726e67fa54e14536f6e1224bcfce1d9e5ac02426d2326e2bb4e081d1ce8"}, - {file = "mypy-1.18.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33eca32dd124b29400c31d7cf784e795b050ace0e1f91b8dc035672725617e34"}, - {file = "mypy-1.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3c47adf30d65e89b2dcd2fa32f3aeb5e94ca970d2c15fcb25e297871c8e4764"}, - {file = "mypy-1.18.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d6c838e831a062f5f29d11c9057c6009f60cb294fea33a98422688181fe2893"}, - {file = "mypy-1.18.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01199871b6110a2ce984bde85acd481232d17413868c9807e95c1b0739a58914"}, - {file = "mypy-1.18.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a2afc0fa0b0e91b4599ddfe0f91e2c26c2b5a5ab263737e998d6817874c5f7c8"}, - {file = "mypy-1.18.2-cp312-cp312-win_amd64.whl", hash = "sha256:d8068d0afe682c7c4897c0f7ce84ea77f6de953262b12d07038f4d296d547074"}, - {file = "mypy-1.18.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:07b8b0f580ca6d289e69209ec9d3911b4a26e5abfde32228a288eb79df129fcc"}, - {file = "mypy-1.18.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ed4482847168439651d3feee5833ccedbf6657e964572706a2adb1f7fa4dfe2e"}, - {file = "mypy-1.18.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3ad2afadd1e9fea5cf99a45a822346971ede8685cc581ed9cd4d42eaf940986"}, - {file = "mypy-1.18.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a431a6f1ef14cf8c144c6b14793a23ec4eae3db28277c358136e79d7d062f62d"}, - {file = "mypy-1.18.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7ab28cc197f1dd77a67e1c6f35cd1f8e8b73ed2217e4fc005f9e6a504e46e7ba"}, - {file = "mypy-1.18.2-cp313-cp313-win_amd64.whl", hash = "sha256:0e2785a84b34a72ba55fb5daf079a1003a34c05b22238da94fcae2bbe46f3544"}, - {file = "mypy-1.18.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:62f0e1e988ad41c2a110edde6c398383a889d95b36b3e60bcf155f5164c4fdce"}, - {file = "mypy-1.18.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8795a039bab805ff0c1dfdb8cd3344642c2b99b8e439d057aba30850b8d3423d"}, - {file = "mypy-1.18.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ca1e64b24a700ab5ce10133f7ccd956a04715463d30498e64ea8715236f9c9c"}, - {file = "mypy-1.18.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d924eef3795cc89fecf6bedc6ed32b33ac13e8321344f6ddbf8ee89f706c05cb"}, - {file = "mypy-1.18.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20c02215a080e3a2be3aa50506c67242df1c151eaba0dcbc1e4e557922a26075"}, - {file = "mypy-1.18.2-cp314-cp314-win_amd64.whl", hash = "sha256:749b5f83198f1ca64345603118a6f01a4e99ad4bf9d103ddc5a3200cc4614adf"}, - {file = "mypy-1.18.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:25a9c8fb67b00599f839cf472713f54249a62efd53a54b565eb61956a7e3296b"}, - {file = "mypy-1.18.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2b9c7e284ee20e7598d6f42e13ca40b4928e6957ed6813d1ab6348aa3f47133"}, - {file = "mypy-1.18.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d6985ed057513e344e43a26cc1cd815c7a94602fb6a3130a34798625bc2f07b6"}, - {file = "mypy-1.18.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22f27105f1525ec024b5c630c0b9f36d5c1cc4d447d61fe51ff4bd60633f47ac"}, - {file = "mypy-1.18.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:030c52d0ea8144e721e49b1f68391e39553d7451f0c3f8a7565b59e19fcb608b"}, - {file = "mypy-1.18.2-cp39-cp39-win_amd64.whl", hash = "sha256:aa5e07ac1a60a253445797e42b8b2963c9675563a94f11291ab40718b016a7a0"}, - {file = "mypy-1.18.2-py3-none-any.whl", hash = "sha256:22a1748707dd62b58d2ae53562ffc4d7f8bcc727e8ac7cbc69c053ddc874d47e"}, - {file = "mypy-1.18.2.tar.gz", hash = "sha256:06a398102a5f203d7477b2923dda3634c36727fa5c237d8f859ef90c42a9924b"}, + {file = "mypy-1.19.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f05aa3d375b385734388e844bc01733bd33c644ab48e9684faa54e5389775ec"}, + {file = "mypy-1.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:022ea7279374af1a5d78dfcab853fe6a536eebfda4b59deab53cd21f6cd9f00b"}, + {file = "mypy-1.19.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee4c11e460685c3e0c64a4c5de82ae143622410950d6be863303a1c4ba0e36d6"}, + {file = "mypy-1.19.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de759aafbae8763283b2ee5869c7255391fbc4de3ff171f8f030b5ec48381b74"}, + {file = "mypy-1.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ab43590f9cd5108f41aacf9fca31841142c786827a74ab7cc8a2eacb634e09a1"}, + {file = "mypy-1.19.1-cp310-cp310-win_amd64.whl", hash = "sha256:2899753e2f61e571b3971747e302d5f420c3fd09650e1951e99f823bc3089dac"}, + {file = "mypy-1.19.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d8dfc6ab58ca7dda47d9237349157500468e404b17213d44fc1cb77bce532288"}, + {file = "mypy-1.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e3f276d8493c3c97930e354b2595a44a21348b320d859fb4a2b9f66da9ed27ab"}, + {file = "mypy-1.19.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2abb24cf3f17864770d18d673c85235ba52456b36a06b6afc1e07c1fdcd3d0e6"}, + {file = "mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a009ffa5a621762d0c926a078c2d639104becab69e79538a494bcccb62cc0331"}, + {file = "mypy-1.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7cee03c9a2e2ee26ec07479f38ea9c884e301d42c6d43a19d20fb014e3ba925"}, + {file = "mypy-1.19.1-cp311-cp311-win_amd64.whl", hash = "sha256:4b84a7a18f41e167f7995200a1d07a4a6810e89d29859df936f1c3923d263042"}, + {file = "mypy-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8174a03289288c1f6c46d55cef02379b478bfbc8e358e02047487cad44c6ca1"}, + {file = "mypy-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffcebe56eb09ff0c0885e750036a095e23793ba6c2e894e7e63f6d89ad51f22e"}, + {file = "mypy-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b64d987153888790bcdb03a6473d321820597ab8dd9243b27a92153c4fa50fd2"}, + {file = "mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8"}, + {file = "mypy-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34c81968774648ab5ac09c29a375fdede03ba253f8f8287847bd480782f73a6a"}, + {file = "mypy-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13"}, + {file = "mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3157c7594ff2ef1634ee058aafc56a82db665c9438fd41b390f3bde1ab12250"}, + {file = "mypy-1.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdb12f69bcc02700c2b47e070238f42cb87f18c0bc1fc4cdb4fb2bc5fd7a3b8b"}, + {file = "mypy-1.19.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f859fb09d9583a985be9a493d5cfc5515b56b08f7447759a0c5deaf68d80506e"}, + {file = "mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9a6538e0415310aad77cb94004ca6482330fece18036b5f360b62c45814c4ef"}, + {file = "mypy-1.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:da4869fc5e7f62a88f3fe0b5c919d1d9f7ea3cef92d3689de2823fd27e40aa75"}, + {file = "mypy-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:016f2246209095e8eda7538944daa1d60e1e8134d98983b9fc1e92c1fc0cb8dd"}, + {file = "mypy-1.19.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06e6170bd5836770e8104c8fdd58e5e725cfeb309f0a6c681a811f557e97eac1"}, + {file = "mypy-1.19.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:804bd67b8054a85447c8954215a906d6eff9cabeabe493fb6334b24f4bfff718"}, + {file = "mypy-1.19.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21761006a7f497cb0d4de3d8ef4ca70532256688b0523eee02baf9eec895e27b"}, + {file = "mypy-1.19.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28902ee51f12e0f19e1e16fbe2f8f06b6637f482c459dd393efddd0ec7f82045"}, + {file = "mypy-1.19.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:481daf36a4c443332e2ae9c137dfee878fcea781a2e3f895d54bd3002a900957"}, + {file = "mypy-1.19.1-cp314-cp314-win_amd64.whl", hash = "sha256:8bb5c6f6d043655e055be9b542aa5f3bdd30e4f3589163e85f93f3640060509f"}, + {file = "mypy-1.19.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7bcfc336a03a1aaa26dfce9fff3e287a3ba99872a157561cbfcebe67c13308e3"}, + {file = "mypy-1.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b7951a701c07ea584c4fe327834b92a30825514c868b1f69c30445093fdd9d5a"}, + {file = "mypy-1.19.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b13cfdd6c87fc3efb69ea4ec18ef79c74c3f98b4e5498ca9b85ab3b2c2329a67"}, + {file = "mypy-1.19.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f28f99c824ecebcdaa2e55d82953e38ff60ee5ec938476796636b86afa3956e"}, + {file = "mypy-1.19.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c608937067d2fc5a4dd1a5ce92fd9e1398691b8c5d012d66e1ddd430e9244376"}, + {file = "mypy-1.19.1-cp39-cp39-win_amd64.whl", hash = "sha256:409088884802d511ee52ca067707b90c883426bd95514e8cfda8281dc2effe24"}, + {file = "mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247"}, + {file = "mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba"}, ] [package.dependencies] +librt = {version = ">=0.6.2", markers = "platform_python_implementation != \"PyPy\""} mypy_extensions = ">=1.0.0" pathspec = ">=0.9.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} @@ -1966,62 +2117,63 @@ icu = ["PyICU (>=1.0.0)"] [[package]] name = "nh3" -version = "0.3.2" +version = "0.3.3" description = "Python binding to Ammonia HTML sanitizer Rust crate" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "nh3-0.3.2-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:d18957a90806d943d141cc5e4a0fefa1d77cf0d7a156878bf9a66eed52c9cc7d"}, - {file = "nh3-0.3.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45c953e57028c31d473d6b648552d9cab1efe20a42ad139d78e11d8f42a36130"}, - {file = "nh3-0.3.2-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c9850041b77a9147d6bbd6dbbf13eeec7009eb60b44e83f07fcb2910075bf9b"}, - {file = "nh3-0.3.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:403c11563e50b915d0efdb622866d1d9e4506bce590ef7da57789bf71dd148b5"}, - {file = "nh3-0.3.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:0dca4365db62b2d71ff1620ee4f800c4729849906c5dd504ee1a7b2389558e31"}, - {file = "nh3-0.3.2-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:0fe7ee035dd7b2290715baf29cb27167dddd2ff70ea7d052c958dbd80d323c99"}, - {file = "nh3-0.3.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a40202fd58e49129764f025bbaae77028e420f1d5b3c8e6f6fd3a6490d513868"}, - {file = "nh3-0.3.2-cp314-cp314t-win32.whl", hash = "sha256:1f9ba555a797dbdcd844b89523f29cdc90973d8bd2e836ea6b962cf567cadd93"}, - {file = "nh3-0.3.2-cp314-cp314t-win_amd64.whl", hash = "sha256:dce4248edc427c9b79261f3e6e2b3ecbdd9b88c267012168b4a7b3fc6fd41d13"}, - {file = "nh3-0.3.2-cp314-cp314t-win_arm64.whl", hash = "sha256:019ecbd007536b67fdf76fab411b648fb64e2257ca3262ec80c3425c24028c80"}, - {file = "nh3-0.3.2-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7064ccf5ace75825bd7bf57859daaaf16ed28660c1c6b306b649a9eda4b54b1e"}, - {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8745454cdd28bbbc90861b80a0111a195b0e3961b9fa2e672be89eb199fa5d8"}, - {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72d67c25a84579f4a432c065e8b4274e53b7cf1df8f792cf846abfe2c3090866"}, - {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:13398e676a14d6233f372c75f52d5ae74f98210172991f7a3142a736bd92b131"}, - {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03d617e5c8aa7331bd2659c654e021caf9bba704b109e7b2b28b039a00949fe5"}, - {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2f55c4d2d5a207e74eefe4d828067bbb01300e06e2a7436142f915c5928de07"}, - {file = "nh3-0.3.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bb18403f02b655a1bbe4e3a4696c2ae1d6ae8f5991f7cacb684b1ae27e6c9f7"}, - {file = "nh3-0.3.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6d66f41672eb4060cf87c037f760bdbc6847852ca9ef8e9c5a5da18f090abf87"}, - {file = "nh3-0.3.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f97f8b25cb2681d25e2338148159447e4d689aafdccfcf19e61ff7db3905768a"}, - {file = "nh3-0.3.2-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:2ab70e8c6c7d2ce953d2a58102eefa90c2d0a5ed7aa40c7e29a487bc5e613131"}, - {file = "nh3-0.3.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:1710f3901cd6440ca92494ba2eb6dc260f829fa8d9196b659fa10de825610ce0"}, - {file = "nh3-0.3.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:91e9b001101fb4500a2aafe3e7c92928d85242d38bf5ac0aba0b7480da0a4cd6"}, - {file = "nh3-0.3.2-cp38-abi3-win32.whl", hash = "sha256:169db03df90da63286e0560ea0efa9b6f3b59844a9735514a1d47e6bb2c8c61b"}, - {file = "nh3-0.3.2-cp38-abi3-win_amd64.whl", hash = "sha256:562da3dca7a17f9077593214a9781a94b8d76de4f158f8c895e62f09573945fe"}, - {file = "nh3-0.3.2-cp38-abi3-win_arm64.whl", hash = "sha256:cf5964d54edd405e68583114a7cba929468bcd7db5e676ae38ee954de1cfc104"}, - {file = "nh3-0.3.2.tar.gz", hash = "sha256:f394759a06df8b685a4ebfb1874fb67a9cbfd58c64fc5ed587a663c0e63ec376"}, + {file = "nh3-0.3.3-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:21b058cd20d9f0919421a820a2843fdb5e1749c0bf57a6247ab8f4ba6723c9fc"}, + {file = "nh3-0.3.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4400a73c2a62859e769f9d36d1b5a7a5c65c4179d1dddd2f6f3095b2db0cbfc"}, + {file = "nh3-0.3.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1ef87f8e916321a88b45f2d597f29bd56e560ed4568a50f0f1305afab86b7189"}, + {file = "nh3-0.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:a446eae598987f49ee97ac2f18eafcce4e62e7574bd1eb23782e4702e54e217d"}, + {file = "nh3-0.3.3-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:0d5eb734a78ac364af1797fef718340a373f626a9ff6b4fb0b4badf7927e7b81"}, + {file = "nh3-0.3.3-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:92a958e6f6d0100e025a5686aafd67e3c98eac67495728f8bb64fbeb3e474493"}, + {file = "nh3-0.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9ed40cf8449a59a03aa465114fedce1ff7ac52561688811d047917cc878b19ca"}, + {file = "nh3-0.3.3-cp314-cp314t-win32.whl", hash = "sha256:b50c3770299fb2a7c1113751501e8878d525d15160a4c05194d7fe62b758aad8"}, + {file = "nh3-0.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:21a63ccb18ddad3f784bb775955839b8b80e347e597726f01e43ca1abcc5c808"}, + {file = "nh3-0.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:f508ddd4e2433fdcb78c790fc2d24e3a349ba775e5fa904af89891321d4844a3"}, + {file = "nh3-0.3.3-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:e8ee96156f7dfc6e30ecda650e480c5ae0a7d38f0c6fafc3c1c655e2500421d9"}, + {file = "nh3-0.3.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45fe0d6a607264910daec30360c8a3b5b1500fd832d21b2da608256287bcb92d"}, + {file = "nh3-0.3.3-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5bc1d4b30ba1ba896669d944b6003630592665974bd11a3dc2f661bde92798a7"}, + {file = "nh3-0.3.3-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f433a2dd66545aad4a720ad1b2150edcdca75bfff6f4e6f378ade1ec138d5e77"}, + {file = "nh3-0.3.3-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52e973cb742e95b9ae1b35822ce23992428750f4b46b619fe86eba4205255b30"}, + {file = "nh3-0.3.3-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c730617bdc15d7092dcc0469dc2826b914c8f874996d105b4bc3842a41c1cd9"}, + {file = "nh3-0.3.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e98fa3dbfd54e25487e36ba500bc29bca3a4cab4ffba18cfb1a35a2d02624297"}, + {file = "nh3-0.3.3-cp38-abi3-manylinux_2_31_riscv64.whl", hash = "sha256:3a62b8ae7c235481715055222e54c682422d0495a5c73326807d4e44c5d14691"}, + {file = "nh3-0.3.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc305a2264868ec8fa16548296f803d8fd9c1fa66cd28b88b605b1bd06667c0b"}, + {file = "nh3-0.3.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:90126a834c18af03bfd6ff9a027bfa6bbf0e238527bc780a24de6bd7cc1041e2"}, + {file = "nh3-0.3.3-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:24769a428e9e971e4ccfb24628f83aaa7dc3c8b41b130c8ddc1835fa1c924489"}, + {file = "nh3-0.3.3-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:b7a18ee057761e455d58b9d31445c3e4b2594cff4ddb84d2e331c011ef46f462"}, + {file = "nh3-0.3.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5a4b2c1f3e6f3cbe7048e17f4fefad3f8d3e14cc0fd08fb8599e0d5653f6b181"}, + {file = "nh3-0.3.3-cp38-abi3-win32.whl", hash = "sha256:e974850b131fdffa75e7ad8e0d9c7a855b96227b093417fdf1bd61656e530f37"}, + {file = "nh3-0.3.3-cp38-abi3-win_amd64.whl", hash = "sha256:2efd17c0355d04d39e6d79122b42662277ac10a17ea48831d90b46e5ef7e4fc0"}, + {file = "nh3-0.3.3-cp38-abi3-win_arm64.whl", hash = "sha256:b838e619f483531483d26d889438e53a880510e832d2aafe73f93b7b1ac2bce2"}, + {file = "nh3-0.3.3.tar.gz", hash = "sha256:185ed41b88c910b9ca8edc89ca3b4be688a12cb9de129d84befa2f74a0039fee"}, ] [[package]] name = "nodeenv" -version = "1.9.1" +version = "1.10.0" description = "Node.js virtual environment builder" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" groups = ["dev"] files = [ - {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, - {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, + {file = "nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827"}, + {file = "nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb"}, ] [[package]] name = "nox" -version = "2025.11.12" +version = "2026.2.9" description = "Flexible test automation." optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "nox-2025.11.12-py3-none-any.whl", hash = "sha256:707171f9f63bc685da9d00edd8c2ceec8405b8e38b5fb4e46114a860070ef0ff"}, - {file = "nox-2025.11.12.tar.gz", hash = "sha256:3d317f9e61f49d6bde39cf2f59695bb4e1722960457eee3ae19dacfe03c07259"}, + {file = "nox-2026.2.9-py3-none-any.whl", hash = "sha256:1b7143bc8ecdf25f2353201326152c5303ae4ae56ca097b1fb6179ad75164c47"}, + {file = "nox-2026.2.9.tar.gz", hash = "sha256:1bc8a202ee8cd69be7aaada63b2a7019126899a06fc930a7aee75585bf8ee41b"}, ] [package.dependencies] @@ -2030,7 +2182,7 @@ attrs = ">=24.1" colorlog = ">=2.6.1,<7" dependency-groups = ">=1.1" humanize = ">=4" -packaging = {version = ">=21", markers = "python_version >= \"3.10\""} +packaging = ">=22" tomli = {version = ">=1.1", markers = "python_version < \"3.11\""} virtualenv = {version = ">=20.15", markers = "python_version >= \"3.10\""} @@ -2041,14 +2193,14 @@ uv = ["uv (>=0.1.6)"] [[package]] name = "openapi-python-client" -version = "0.25.3" +version = "0.28.2" description = "Generate modern Python clients from OpenAPI" optional = false -python-versions = "<4.0,>=3.9" +python-versions = "<4.0,>=3.10" groups = ["dev"] files = [ - {file = "openapi_python_client-0.25.3-py3-none-any.whl", hash = "sha256:008e4c5f3079f312c135b55b142eb9616eafbd739ad6d5f8e95add726d1a02f2"}, - {file = "openapi_python_client-0.25.3.tar.gz", hash = "sha256:cafc6b5aebd0c55fe7be4d400b24d3b107f7ec64923b8117ef8aa7ceb2a918a4"}, + {file = "openapi_python_client-0.28.2-py3-none-any.whl", hash = "sha256:0b6b84114af49ca672a57ae4421db9b2b09f55304a525731b91cf9d80e9313e5"}, + {file = "openapi_python_client-0.28.2.tar.gz", hash = "sha256:3699a7138fae3d89ce7f27922a985562e88fe790171db5626bfc7b4ae4cd4c31"}, ] [package.dependencies] @@ -2058,11 +2210,10 @@ httpx = ">=0.23.0,<0.29.0" jinja2 = ">=3.0.0,<4.0.0" pydantic = ">=2.10,<3.0.0" python-dateutil = ">=2.8.1,<3.0.0" -ruamel-yaml = ">=0.18.6,<0.19.0" -ruff = ">=0.2,<0.13" +ruamel-yaml = ">=0.18.6,<0.20.0" +ruff = ">=0.2" shellingham = ">=1.3.2,<2.0.0" -typer = ">0.6,<0.17" -typing-extensions = ">=4.8.0,<5.0.0" +typer = ">0.16,<0.24" [[package]] name = "packageurl-python" @@ -2084,38 +2235,44 @@ test = ["pytest"] [[package]] name = "packaging" -version = "25.0" +version = "26.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, - {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, + {file = "packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529"}, + {file = "packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4"}, ] [[package]] name = "pathspec" -version = "0.12.1" +version = "1.0.4" description = "Utility library for gitignore style pattern matching of file paths." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, + {file = "pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723"}, + {file = "pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645"}, ] +[package.extras] +hyperscan = ["hyperscan (>=0.7)"] +optional = ["typing-extensions (>=4)"] +re2 = ["google-re2 (>=1.1)"] +tests = ["pytest (>=9)", "typing-extensions (>=4.15)"] + [[package]] name = "pip" -version = "25.3" +version = "26.0.1" description = "The PyPA recommended tool for installing Python packages." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pip-25.3-py3-none-any.whl", hash = "sha256:9655943313a94722b7774661c21049070f6bbb0a1516bf02f7c8d5d9201514cd"}, - {file = "pip-25.3.tar.gz", hash = "sha256:8d0538dbbd7babbd207f261ed969c65de439f6bc9e5dbd3b3b9a77f25d95f343"}, + {file = "pip-26.0.1-py3-none-any.whl", hash = "sha256:bdb1b08f4274833d62c1aa29e20907365a2ceb950410df15fc9521bad440122b"}, + {file = "pip-26.0.1.tar.gz", hash = "sha256:c4037d8a277c89b320abe636d59f91e6d0922d08a05b60e85e53b296613346d8"}, ] [[package]] @@ -2135,43 +2292,45 @@ pip = "*" [[package]] name = "pip-audit" -version = "2.9.0" +version = "2.10.0" description = "A tool for scanning Python environments for known vulnerabilities" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "pip_audit-2.9.0-py3-none-any.whl", hash = "sha256:348b16e60895749a0839875d7cc27ebd692e1584ebe5d5cb145941c8e25a80bd"}, - {file = "pip_audit-2.9.0.tar.gz", hash = "sha256:0b998410b58339d7a231e5aa004326a294e4c7c6295289cdc9d5e1ef07b1f44d"}, + {file = "pip_audit-2.10.0-py3-none-any.whl", hash = "sha256:16e02093872fac97580303f0848fa3ad64f7ecf600736ea7835a2b24de49613f"}, + {file = "pip_audit-2.10.0.tar.gz", hash = "sha256:427ea5bf61d1d06b98b1ae29b7feacc00288a2eced52c9c58ceed5253ef6c2a4"}, ] [package.dependencies] CacheControl = {version = ">=0.13.0", extras = ["filecache"]} -cyclonedx-python-lib = ">=5,<10" +cyclonedx-python-lib = ">=5,<12" packaging = ">=23.0.0" pip-api = ">=0.0.28" pip-requirements-parser = ">=32.0.0" platformdirs = ">=4.2.0" requests = ">=2.31.0" rich = ">=12.4" -toml = ">=0.10" +tomli = ">=2.2.1" +tomli-w = ">=1.2.0" [package.extras] +cov = ["coverage[toml] (>=7.0,!=7.3.3,<8.0)"] dev = ["build", "pip-audit[doc,lint,test]"] doc = ["pdoc"] -lint = ["interrogate (>=1.6,<2.0)", "mypy", "ruff (>=0.9,<1.0)", "types-requests", "types-toml"] -test = ["coverage[toml] (>=7.0,!=7.3.3,<8.0)", "pretend", "pytest", "pytest-cov"] +lint = ["interrogate (>=1.6,<2.0)", "mypy", "ruff (>=0.11)", "types-requests", "types-toml"] +test = ["pip-audit[cov]", "pretend", "pytest"] [[package]] name = "pip-licenses" -version = "5.5.0" +version = "5.5.1" description = "Dump the software license list of Python packages installed with pip." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pip_licenses-5.5.0-py3-none-any.whl", hash = "sha256:ae1869436d13ee487088d29e71fc5821950062ad25ec28b6a1a443e0add6d8e8"}, - {file = "pip_licenses-5.5.0.tar.gz", hash = "sha256:2473e7afd02a0c21460758f70fd2bb3b3c080c5150713dd33baa9493dc1563a5"}, + {file = "pip_licenses-5.5.1-py3-none-any.whl", hash = "sha256:ed5e229a93760e529cfa7edaec6630b5a2cd3874c1bddb8019e5f18a723fdead"}, + {file = "pip_licenses-5.5.1.tar.gz", hash = "sha256:7df370e6e5024a3f7449abf8e4321ef868ba9a795698ad24ab6851f3e7fc65a7"}, ] [package.dependencies] @@ -2203,21 +2362,16 @@ testing = ["aboutcode-toolkit (>=6.0.0)", "black", "pytest (>=6,!=7.0.0)", "pyte [[package]] name = "platformdirs" -version = "4.5.0" +version = "4.9.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3"}, - {file = "platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312"}, + {file = "platformdirs-4.9.1-py3-none-any.whl", hash = "sha256:61d8b967d34791c162d30d60737369cbbd77debad5b981c4bfda1842e71e0d66"}, + {file = "platformdirs-4.9.1.tar.gz", hash = "sha256:f310f16e89c4e29117805d8328f7c10876eeff36c94eac879532812110f7d39f"}, ] -[package.extras] -docs = ["furo (>=2025.9.25)", "proselint (>=0.14)", "sphinx (>=8.2.3)", "sphinx-autodoc-typehints (>=3.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.4.2)", "pytest-cov (>=7)", "pytest-mock (>=3.15.1)"] -type = ["mypy (>=1.18.2)"] - [[package]] name = "pluggy" version = "1.6.0" @@ -2236,14 +2390,14 @@ testing = ["coverage", "pytest", "pytest-benchmark"] [[package]] name = "pre-commit" -version = "4.5.0" +version = "4.5.1" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "pre_commit-4.5.0-py2.py3-none-any.whl", hash = "sha256:25e2ce09595174d9c97860a95609f9f852c0614ba602de3561e267547f2335e1"}, - {file = "pre_commit-4.5.0.tar.gz", hash = "sha256:dc5a065e932b19fc1d4c653c6939068fe54325af8e741e74e88db4d28a4dd66b"}, + {file = "pre_commit-4.5.1-py2.py3-none-any.whl", hash = "sha256:3b3afd891e97337708c1674210f8eba659b52a38ea5f822ff142d10786221f77"}, + {file = "pre_commit-4.5.1.tar.gz", hash = "sha256:eb545fcff725875197837263e977ea257a402056661f09dae08e4b149b030a61"}, ] [package.dependencies] @@ -2288,27 +2442,27 @@ defusedxml = ">=0.7.1,<0.8.0" [[package]] name = "pyasn1" -version = "0.6.1" +version = "0.6.2" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629"}, - {file = "pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034"}, + {file = "pyasn1-0.6.2-py3-none-any.whl", hash = "sha256:1eb26d860996a18e9b6ed05e7aae0e9fc21619fcee6af91cca9bad4fbea224bf"}, + {file = "pyasn1-0.6.2.tar.gz", hash = "sha256:9b59a2b25ba7e4f8197db7686c09fb33e658b98339fadb826e9512629017833b"}, ] [[package]] name = "pycparser" -version = "2.23" +version = "3.0" description = "C parser in Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["dev"] markers = "platform_python_implementation != \"PyPy\" and implementation_name != \"PyPy\"" files = [ - {file = "pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934"}, - {file = "pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2"}, + {file = "pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992"}, + {file = "pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29"}, ] [[package]] @@ -2539,14 +2693,14 @@ pygments = "*" [[package]] name = "pylint" -version = "4.0.3" +version = "4.0.4" description = "python code static checker" optional = false python-versions = ">=3.10.0" groups = ["dev"] files = [ - {file = "pylint-4.0.3-py3-none-any.whl", hash = "sha256:896d09afb0e78bbf2e030cd1f3d8dc92771a51f7e46828cbc3948a89cd03433a"}, - {file = "pylint-4.0.3.tar.gz", hash = "sha256:a427fe76e0e5355e9fb9b604fd106c419cafb395886ba7f3cebebb03f30e081d"}, + {file = "pylint-4.0.4-py3-none-any.whl", hash = "sha256:63e06a37d5922555ee2c20963eb42559918c20bd2b21244e4ef426e7c43b92e0"}, + {file = "pylint-4.0.4.tar.gz", hash = "sha256:d9b71674e19b1c36d79265b5887bf8e55278cbe236c9e95d22dc82cf044fdbd2"}, ] [package.dependencies] @@ -2569,14 +2723,14 @@ testutils = ["gitpython (>3)"] [[package]] name = "pyparsing" -version = "3.2.5" +version = "3.3.2" description = "pyparsing - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e"}, - {file = "pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6"}, + {file = "pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d"}, + {file = "pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc"}, ] [package.extras] @@ -2584,14 +2738,14 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pysonar" -version = "1.2.1.3951" +version = "1.3.0.4086" description = "Sonar Scanner for the Python Ecosystem" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pysonar-1.2.1.3951-py3-none-any.whl", hash = "sha256:d157f53faa3d589de176e98413568a69062c20f135adb8475af29566fbc334d9"}, - {file = "pysonar-1.2.1.3951.tar.gz", hash = "sha256:13dde0358f3a8db00e0bfca1955314f2f8c8a532567bf8bd38d91d4d27afb5e4"}, + {file = "pysonar-1.3.0.4086-py3-none-any.whl", hash = "sha256:64428c7d534c48066fcf6a13f9076a2477e717a930325fb18ad7375e10b0adee"}, + {file = "pysonar-1.3.0.4086.tar.gz", hash = "sha256:b05f887503de37d13bfec799a3b1d52fea084a4fd2ff06fdd2d2c8f9b73a4634"}, ] [package.dependencies] @@ -2659,14 +2813,54 @@ six = ">=1.5" [[package]] name = "pytokens" -version = "0.3.0" +version = "0.4.1" description = "A Fast, spec compliant Python 3.14+ tokenizer that runs on older Pythons." optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "pytokens-0.3.0-py3-none-any.whl", hash = "sha256:95b2b5eaf832e469d141a378872480ede3f251a5a5041b8ec6e581d3ac71bbf3"}, - {file = "pytokens-0.3.0.tar.gz", hash = "sha256:2f932b14ed08de5fcf0b391ace2642f858f1394c0857202959000b68ed7a458a"}, + {file = "pytokens-0.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a44ed93ea23415c54f3face3b65ef2b844d96aeb3455b8a69b3df6beab6acc5"}, + {file = "pytokens-0.4.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:add8bf86b71a5d9fb5b89f023a80b791e04fba57960aa790cc6125f7f1d39dfe"}, + {file = "pytokens-0.4.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:670d286910b531c7b7e3c0b453fd8156f250adb140146d234a82219459b9640c"}, + {file = "pytokens-0.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4e691d7f5186bd2842c14813f79f8884bb03f5995f0575272009982c5ac6c0f7"}, + {file = "pytokens-0.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:27b83ad28825978742beef057bfe406ad6ed524b2d28c252c5de7b4a6dd48fa2"}, + {file = "pytokens-0.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d70e77c55ae8380c91c0c18dea05951482e263982911fc7410b1ffd1dadd3440"}, + {file = "pytokens-0.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a58d057208cb9075c144950d789511220b07636dd2e4708d5645d24de666bdc"}, + {file = "pytokens-0.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b49750419d300e2b5a3813cf229d4e5a4c728dae470bcc89867a9ad6f25a722d"}, + {file = "pytokens-0.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9907d61f15bf7261d7e775bd5d7ee4d2930e04424bab1972591918497623a16"}, + {file = "pytokens-0.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:ee44d0f85b803321710f9239f335aafe16553b39106384cef8e6de40cb4ef2f6"}, + {file = "pytokens-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:140709331e846b728475786df8aeb27d24f48cbcf7bcd449f8de75cae7a45083"}, + {file = "pytokens-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d6c4268598f762bc8e91f5dbf2ab2f61f7b95bdc07953b602db879b3c8c18e1"}, + {file = "pytokens-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24afde1f53d95348b5a0eb19488661147285ca4dd7ed752bbc3e1c6242a304d1"}, + {file = "pytokens-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5ad948d085ed6c16413eb5fec6b3e02fa00dc29a2534f088d3302c47eb59adf9"}, + {file = "pytokens-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:3f901fe783e06e48e8cbdc82d631fca8f118333798193e026a50ce1b3757ea68"}, + {file = "pytokens-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8bdb9d0ce90cbf99c525e75a2fa415144fd570a1ba987380190e8b786bc6ef9b"}, + {file = "pytokens-0.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5502408cab1cb18e128570f8d598981c68a50d0cbd7c61312a90507cd3a1276f"}, + {file = "pytokens-0.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29d1d8fb1030af4d231789959f21821ab6325e463f0503a61d204343c9b355d1"}, + {file = "pytokens-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:970b08dd6b86058b6dc07efe9e98414f5102974716232d10f32ff39701e841c4"}, + {file = "pytokens-0.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:9bd7d7f544d362576be74f9d5901a22f317efc20046efe2034dced238cbbfe78"}, + {file = "pytokens-0.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4a14d5f5fc78ce85e426aa159489e2d5961acf0e47575e08f35584009178e321"}, + {file = "pytokens-0.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f50fd18543be72da51dd505e2ed20d2228c74e0464e4262e4899797803d7fa"}, + {file = "pytokens-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc74c035f9bfca0255c1af77ddd2d6ae8419012805453e4b0e7513e17904545d"}, + {file = "pytokens-0.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f66a6bbe741bd431f6d741e617e0f39ec7257ca1f89089593479347cc4d13324"}, + {file = "pytokens-0.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:b35d7e5ad269804f6697727702da3c517bb8a5228afa450ab0fa787732055fc9"}, + {file = "pytokens-0.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:8fcb9ba3709ff77e77f1c7022ff11d13553f3c30299a9fe246a166903e9091eb"}, + {file = "pytokens-0.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79fc6b8699564e1f9b521582c35435f1bd32dd06822322ec44afdeba666d8cb3"}, + {file = "pytokens-0.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d31b97b3de0f61571a124a00ffe9a81fb9939146c122c11060725bd5aea79975"}, + {file = "pytokens-0.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:967cf6e3fd4adf7de8fc73cd3043754ae79c36475c1c11d514fc72cf5490094a"}, + {file = "pytokens-0.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:584c80c24b078eec1e227079d56dc22ff755e0ba8654d8383b2c549107528918"}, + {file = "pytokens-0.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:da5baeaf7116dced9c6bb76dc31ba04a2dc3695f3d9f74741d7910122b456edc"}, + {file = "pytokens-0.4.1-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11edda0942da80ff58c4408407616a310adecae1ddd22eef8c692fe266fa5009"}, + {file = "pytokens-0.4.1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0fc71786e629cef478cbf29d7ea1923299181d0699dbe7c3c0f4a583811d9fc1"}, + {file = "pytokens-0.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dcafc12c30dbaf1e2af0490978352e0c4041a7cde31f4f81435c2a5e8b9cabb6"}, + {file = "pytokens-0.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:42f144f3aafa5d92bad964d471a581651e28b24434d184871bd02e3a0d956037"}, + {file = "pytokens-0.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:34bcc734bd2f2d5fe3b34e7b3c0116bfb2397f2d9666139988e7a3eb5f7400e3"}, + {file = "pytokens-0.4.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:941d4343bf27b605e9213b26bfa1c4bf197c9c599a9627eb7305b0defcfe40c1"}, + {file = "pytokens-0.4.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3ad72b851e781478366288743198101e5eb34a414f1d5627cdd585ca3b25f1db"}, + {file = "pytokens-0.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:682fa37ff4d8e95f7df6fe6fe6a431e8ed8e788023c6bcc0f0880a12eab80ad1"}, + {file = "pytokens-0.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:30f51edd9bb7f85c748979384165601d028b84f7bd13fe14d3e065304093916a"}, + {file = "pytokens-0.4.1-py3-none-any.whl", hash = "sha256:26cef14744a8385f35d0e095dc8b3a7583f6c953c2e3d269c7f82484bf5ad2de"}, + {file = "pytokens-0.4.1.tar.gz", hash = "sha256:292052fe80923aae2260c073f822ceba21f3872ced9a68bb7953b348e561179a"}, ] [package.extras] @@ -2877,14 +3071,14 @@ idna2008 = ["idna"] [[package]] name = "rich" -version = "14.2.0" +version = "14.3.2" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.8.0" groups = ["dev"] files = [ - {file = "rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd"}, - {file = "rich-14.2.0.tar.gz", hash = "sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4"}, + {file = "rich-14.3.2-py3-none-any.whl", hash = "sha256:08e67c3e90884651da3239ea668222d19bea7b589149d8014a21c633420dbb69"}, + {file = "rich-14.3.2.tar.gz", hash = "sha256:e712f11c1a562a11843306f5ed999475f09ac31ffb64281f73ab29ffdda8b3b8"}, ] [package.dependencies] @@ -2894,6 +3088,18 @@ pygments = ">=2.13.0,<3.0.0" [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] +[[package]] +name = "roman" +version = "5.2" +description = "Integer to Roman numerals converter" +optional = false +python-versions = ">=3.10" +groups = ["dev"] +files = [ + {file = "roman-5.2-py3-none-any.whl", hash = "sha256:89d3b47400388806d06ff77ea77c79ab080bc127820dea6bf34e1f1c1b8e676e"}, + {file = "roman-5.2.tar.gz", hash = "sha256:275fe9f46290f7d0ffaea1c33251b92b8e463ace23660508ceef522e7587cb6f"}, +] + [[package]] name = "rsa" version = "4.9.1" @@ -3002,31 +3208,31 @@ files = [ [[package]] name = "ruff" -version = "0.12.12" +version = "0.14.14" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "ruff-0.12.12-py3-none-linux_armv6l.whl", hash = "sha256:de1c4b916d98ab289818e55ce481e2cacfaad7710b01d1f990c497edf217dafc"}, - {file = "ruff-0.12.12-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:7acd6045e87fac75a0b0cdedacf9ab3e1ad9d929d149785903cff9bb69ad9727"}, - {file = "ruff-0.12.12-py3-none-macosx_11_0_arm64.whl", hash = "sha256:abf4073688d7d6da16611f2f126be86523a8ec4343d15d276c614bda8ec44edb"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:968e77094b1d7a576992ac078557d1439df678a34c6fe02fd979f973af167577"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42a67d16e5b1ffc6d21c5f67851e0e769517fb57a8ebad1d0781b30888aa704e"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b216ec0a0674e4b1214dcc998a5088e54eaf39417327b19ffefba1c4a1e4971e"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:59f909c0fdd8f1dcdbfed0b9569b8bf428cf144bec87d9de298dcd4723f5bee8"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ac93d87047e765336f0c18eacad51dad0c1c33c9df7484c40f98e1d773876f5"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:01543c137fd3650d322922e8b14cc133b8ea734617c4891c5a9fccf4bfc9aa92"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2afc2fa864197634e549d87fb1e7b6feb01df0a80fd510d6489e1ce8c0b1cc45"}, - {file = "ruff-0.12.12-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:0c0945246f5ad776cb8925e36af2438e66188d2b57d9cf2eed2c382c58b371e5"}, - {file = "ruff-0.12.12-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a0fbafe8c58e37aae28b84a80ba1817f2ea552e9450156018a478bf1fa80f4e4"}, - {file = "ruff-0.12.12-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b9c456fb2fc8e1282affa932c9e40f5ec31ec9cbb66751a316bd131273b57c23"}, - {file = "ruff-0.12.12-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5f12856123b0ad0147d90b3961f5c90e7427f9acd4b40050705499c98983f489"}, - {file = "ruff-0.12.12-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:26a1b5a2bf7dd2c47e3b46d077cd9c0fc3b93e6c6cc9ed750bd312ae9dc302ee"}, - {file = "ruff-0.12.12-py3-none-win32.whl", hash = "sha256:173be2bfc142af07a01e3a759aba6f7791aa47acf3604f610b1c36db888df7b1"}, - {file = "ruff-0.12.12-py3-none-win_amd64.whl", hash = "sha256:e99620bf01884e5f38611934c09dd194eb665b0109104acae3ba6102b600fd0d"}, - {file = "ruff-0.12.12-py3-none-win_arm64.whl", hash = "sha256:2a8199cab4ce4d72d158319b63370abf60991495fb733db96cd923a34c52d093"}, - {file = "ruff-0.12.12.tar.gz", hash = "sha256:b86cd3415dbe31b3b46a71c598f4c4b2f550346d1ccf6326b347cc0c8fd063d6"}, + {file = "ruff-0.14.14-py3-none-linux_armv6l.whl", hash = "sha256:7cfe36b56e8489dee8fbc777c61959f60ec0f1f11817e8f2415f429552846aed"}, + {file = "ruff-0.14.14-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6006a0082336e7920b9573ef8a7f52eec837add1265cc74e04ea8a4368cd704c"}, + {file = "ruff-0.14.14-py3-none-macosx_11_0_arm64.whl", hash = "sha256:026c1d25996818f0bf498636686199d9bd0d9d6341c9c2c3b62e2a0198b758de"}, + {file = "ruff-0.14.14-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f666445819d31210b71e0a6d1c01e24447a20b85458eea25a25fe8142210ae0e"}, + {file = "ruff-0.14.14-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c0f18b922c6d2ff9a5e6c3ee16259adc513ca775bcf82c67ebab7cbd9da5bc8"}, + {file = "ruff-0.14.14-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1629e67489c2dea43e8658c3dba659edbfd87361624b4040d1df04c9740ae906"}, + {file = "ruff-0.14.14-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:27493a2131ea0f899057d49d303e4292b2cae2bb57253c1ed1f256fbcd1da480"}, + {file = "ruff-0.14.14-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01ff589aab3f5b539e35db38425da31a57521efd1e4ad1ae08fc34dbe30bd7df"}, + {file = "ruff-0.14.14-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1cc12d74eef0f29f51775f5b755913eb523546b88e2d733e1d701fe65144e89b"}, + {file = "ruff-0.14.14-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb8481604b7a9e75eff53772496201690ce2687067e038b3cc31aaf16aa0b974"}, + {file = "ruff-0.14.14-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:14649acb1cf7b5d2d283ebd2f58d56b75836ed8c6f329664fa91cdea19e76e66"}, + {file = "ruff-0.14.14-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e8058d2145566510790eab4e2fad186002e288dec5e0d343a92fe7b0bc1b3e13"}, + {file = "ruff-0.14.14-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:e651e977a79e4c758eb807f0481d673a67ffe53cfa92209781dfa3a996cf8412"}, + {file = "ruff-0.14.14-py3-none-musllinux_1_2_i686.whl", hash = "sha256:cc8b22da8d9d6fdd844a68ae937e2a0adf9b16514e9a97cc60355e2d4b219fc3"}, + {file = "ruff-0.14.14-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:16bc890fb4cc9781bb05beb5ab4cd51be9e7cb376bf1dd3580512b24eb3fda2b"}, + {file = "ruff-0.14.14-py3-none-win32.whl", hash = "sha256:b530c191970b143375b6a68e6f743800b2b786bbcf03a7965b06c4bf04568167"}, + {file = "ruff-0.14.14-py3-none-win_amd64.whl", hash = "sha256:3dde1435e6b6fe5b66506c1dff67a421d0b7f6488d466f651c07f4cab3bf20fd"}, + {file = "ruff-0.14.14-py3-none-win_arm64.whl", hash = "sha256:56e6981a98b13a32236a72a8da421d7839221fa308b223b9283312312e5ac76c"}, + {file = "ruff-0.14.14.tar.gz", hash = "sha256:2d0f819c9a90205f3a867dbbd0be083bee9912e170fd7d9704cc8ae45824896b"}, ] [[package]] @@ -3060,14 +3266,14 @@ files = [ [[package]] name = "shibuya" -version = "2025.11.10" +version = "2026.1.9" description = "A clean, responsive, and customizable Sphinx documentation theme with light/dark mode." optional = false python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "shibuya-2025.11.10-py3-none-any.whl", hash = "sha256:7d9116bcd14977e689c6048232bb42d739832c0dd861dc7be34dfb183edb511e"}, - {file = "shibuya-2025.11.10.tar.gz", hash = "sha256:7a8a2b4ac6c3fb8d2f75a15098458e376f5af33cfff45b21e5816e41dfcc5dd3"}, + {file = "shibuya-2026.1.9-py3-none-any.whl", hash = "sha256:b58a3cc6e5619c71d00fcf0be4a3060c87040c2a62a1b3f1a93a6a41ca8eaf45"}, + {file = "shibuya-2026.1.9.tar.gz", hash = "sha256:b389f10fd9c07b048e940f32d1e1ac096a2d49736389173ac771b37a10b51fdf"}, ] [package.dependencies] @@ -3086,18 +3292,6 @@ files = [ {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -groups = ["main", "dev"] -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - [[package]] name = "snowballstemmer" version = "3.0.1" @@ -3124,14 +3318,14 @@ files = [ [[package]] name = "soupsieve" -version = "2.8" +version = "2.8.3" description = "A modern CSS selector implementation for Beautiful Soup." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "soupsieve-2.8-py3-none-any.whl", hash = "sha256:0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c"}, - {file = "soupsieve-2.8.tar.gz", hash = "sha256:e2dd4a40a628cb5f28f6d4b0db8800b8f581b65bb380b97de22ba5ca8d72572f"}, + {file = "soupsieve-2.8.3-py3-none-any.whl", hash = "sha256:ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95"}, + {file = "soupsieve-2.8.3.tar.gz", hash = "sha256:3267f1eeea4251fb42728b6dfb746edc9acaffc4a45b27e19450b676586e8349"}, ] [[package]] @@ -3234,6 +3428,7 @@ description = "A sphinx extension for designing beautiful, view size responsive optional = false python-versions = ">=3.9" groups = ["dev"] +markers = "python_version < \"3.11\"" files = [ {file = "sphinx_design-0.6.1-py3-none-any.whl", hash = "sha256:b11f37db1a802a183d61b159d9a202314d4d2fe29c163437001324fe2f19549c"}, {file = "sphinx_design-0.6.1.tar.gz", hash = "sha256:b44eea3719386d04d765c1a8257caca2b3e6f8421d7b3a5e742c0fd45f84e632"}, @@ -3253,6 +3448,33 @@ theme-pydata = ["pydata-sphinx-theme (>=0.15.2,<0.16.0)"] theme-rtd = ["sphinx-rtd-theme (>=2.0,<3.0)"] theme-sbt = ["sphinx-book-theme (>=1.1,<2.0)"] +[[package]] +name = "sphinx-design" +version = "0.7.0" +description = "A sphinx extension for designing beautiful, view size responsive web components." +optional = false +python-versions = ">=3.11" +groups = ["dev"] +markers = "python_version >= \"3.11\"" +files = [ + {file = "sphinx_design-0.7.0-py3-none-any.whl", hash = "sha256:f82bf179951d58f55dca78ab3706aeafa496b741a91b1911d371441127d64282"}, + {file = "sphinx_design-0.7.0.tar.gz", hash = "sha256:d2a3f5b19c24b916adb52f97c5f00efab4009ca337812001109084a740ec9b7a"}, +] + +[package.dependencies] +sphinx = ">=7,<10" + +[package.extras] +code-style = ["pre-commit (>=3,<4)"] +rtd = ["myst-parser (>=4,<6)"] +testing = ["defusedxml", "myst-parser (>=4,<6)", "pytest (>=8.3,<9.0)", "pytest-cov", "pytest-regressions"] +testing-no-myst = ["defusedxml", "pytest (>=8.3,<9.0)", "pytest-cov", "pytest-regressions"] +theme-furo = ["furo (>=2024.7.18,<2024.8.0)"] +theme-im = ["sphinx-immaterial (>=0.12.2,<0.13.0)"] +theme-pydata = ["pydata-sphinx-theme (>=0.15.2,<0.16.0)"] +theme-rtd = ["sphinx-rtd-theme (>=2.0,<3.0)"] +theme-sbt = ["sphinx-book-theme (>=1.1,<2.0)"] + [[package]] name = "sphinx-inline-tabs" version = "2023.4.21" @@ -3296,6 +3518,7 @@ description = "Sphinx directive to add unselectable prompt" optional = false python-versions = ">=3.9,<4.0" groups = ["dev"] +markers = "python_version < \"3.11\"" files = [ {file = "sphinx_prompt-1.8.0-py3-none-any.whl", hash = "sha256:369ecc633f0711886f9b3a078c83264245be1adf46abeeb9b88b5519e4b51007"}, {file = "sphinx_prompt-1.8.0.tar.gz", hash = "sha256:47482f86fcec29662fdfd23e7c04ef03582714195d01f5d565403320084372ed"}, @@ -3306,6 +3529,29 @@ docutils = "*" pygments = "*" Sphinx = ">=7.0.0,<8.0.0" +[[package]] +name = "sphinx-prompt" +version = "1.10.2" +description = "Sphinx directive to add unselectable prompt" +optional = false +python-versions = ">=3.11" +groups = ["dev"] +markers = "python_version >= \"3.11\"" +files = [ + {file = "sphinx_prompt-1.10.2-py3-none-any.whl", hash = "sha256:6594337962c4b1498602e6984634bed4a0dc7955852e3cfc255eb0af766ed859"}, + {file = "sphinx_prompt-1.10.2.tar.gz", hash = "sha256:47b592ba75caebd044b0eddf7a5a1b6e0aef6df587b034377cd101a999b686ba"}, +] + +[package.dependencies] +certifi = "*" +docutils = "*" +idna = "*" +jinja2 = "*" +pygments = "*" +requests = ">=2.32.4" +Sphinx = "*" +urllib3 = "*" + [[package]] name = "sphinx-tabs" version = "3.4.5" @@ -3329,14 +3575,14 @@ testing = ["bs4", "coverage", "pygments", "pytest (>=7.1,<8)", "pytest-cov", "py [[package]] name = "sphinx-toolbox" -version = "4.0.0" +version = "4.1.2" description = "Box of handy tools for Sphinx 🧰 📔" optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "sphinx_toolbox-4.0.0-py3-none-any.whl", hash = "sha256:c700937baee505e440d44d46bc47ccd036ec282ae61b04e40342944128721117"}, - {file = "sphinx_toolbox-4.0.0.tar.gz", hash = "sha256:48c31451db2e2d8c71c03939e72a19ef7bc92ca7850a62db63fc7bb8395b6785"}, + {file = "sphinx_toolbox-4.1.2-py3-none-any.whl", hash = "sha256:0438f8342ba1c6c0d6e47207f4eac167adba61742e8c2b1dc9624ff955b7bc89"}, + {file = "sphinx_toolbox-4.1.2.tar.gz", hash = "sha256:c30a4f86c4c29e97adb0eb9337d35f5093cb96a44f49caffcf7d5bc58a88b781"}, ] [package.dependencies] @@ -3349,7 +3595,8 @@ docutils = ">=0.16" domdf-python-tools = ">=2.9.0" filelock = ">=3.8.0" html5lib = ">=1.1" -"ruamel.yaml" = ">=0.16.12" +roman = ">4.0" +"ruamel.yaml" = ">=0.16.12,<=0.18.16" sphinx = ">=3.2.0" sphinx-autodoc-typehints = ">=1.11.1" sphinx-jinja2-compat = ">=0.1.0" @@ -3428,6 +3675,26 @@ files = [ [package.extras] test = ["flake8", "mypy", "pytest"] +[[package]] +name = "sphinxcontrib-mermaid" +version = "2.0.0" +description = "Mermaid diagrams in your Sphinx-powered docs" +optional = false +python-versions = ">=3.10" +groups = ["dev"] +files = [ + {file = "sphinxcontrib_mermaid-2.0.0-py3-none-any.whl", hash = "sha256:59a73249bbee2c74b1a4db036f8e8899ade65982bdda6712cf22b4f4e9874bb5"}, + {file = "sphinxcontrib_mermaid-2.0.0.tar.gz", hash = "sha256:cf4f7d453d001132eaba5d1fdf53d42049f02e913213cf8337427483bfca26f4"}, +] + +[package.dependencies] +jinja2 = "*" +pyyaml = "*" +sphinx = "*" + +[package.extras] +test = ["defusedxml", "myst-parser", "pytest", "ruff", "sphinx"] + [[package]] name = "sphinxcontrib-qthelp" version = "2.0.0" @@ -3475,6 +3742,25 @@ files = [ {file = "standard_imghdr-3.10.14.tar.gz", hash = "sha256:2598fe2e7c540dbda34b233295e10957ab8dc8ac6f3bd9eaa8d38be167232e52"}, ] +[[package]] +name = "starlette" +version = "0.52.1" +description = "The little ASGI library that shines." +optional = false +python-versions = ">=3.10" +groups = ["dev"] +files = [ + {file = "starlette-0.52.1-py3-none-any.whl", hash = "sha256:0029d43eb3d273bc4f83a08720b4912ea4b071087a3b48db01b7c839f7954d74"}, + {file = "starlette-0.52.1.tar.gz", hash = "sha256:834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933"}, +] + +[package.dependencies] +anyio = ">=3.6.2,<5" +typing-extensions = {version = ">=4.10.0", markers = "python_version < \"3.13\""} + +[package.extras] +full = ["httpx (>=0.27.0,<0.29.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.18)", "pyyaml"] + [[package]] name = "stevedore" version = "5.6.0" @@ -3584,16 +3870,28 @@ files = [ {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] +[[package]] +name = "tomli-w" +version = "1.2.0" +description = "A lil' TOML writer" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "tomli_w-1.2.0-py3-none-any.whl", hash = "sha256:188306098d013b691fcadc011abd66727d3c414c571bb01b1a174ba8c983cf90"}, + {file = "tomli_w-1.2.0.tar.gz", hash = "sha256:2dd14fac5a47c27be9cd4c976af5a12d87fb1f0b4512f81d69cce3b35ae25021"}, +] + [[package]] name = "tomlkit" -version = "0.13.3" +version = "0.14.0" description = "Style preserving TOML library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0"}, - {file = "tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1"}, + {file = "tomlkit-0.14.0-py3-none-any.whl", hash = "sha256:592064ed85b40fa213469f81ac584f67a4f2992509a7c3ea2d632208623a3680"}, + {file = "tomlkit-0.14.0.tar.gz", hash = "sha256:cf00efca415dbd57575befb1f6634c4f42d2d87dbba376128adb42c121b87064"}, ] [[package]] @@ -3624,44 +3922,44 @@ keyring = ["keyring (>=21.2.0)"] [[package]] name = "typer" -version = "0.16.1" +version = "0.23.1" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "typer-0.16.1-py3-none-any.whl", hash = "sha256:90ee01cb02d9b8395ae21ee3368421faf21fa138cb2a541ed369c08cec5237c9"}, - {file = "typer-0.16.1.tar.gz", hash = "sha256:d358c65a464a7a90f338e3bb7ff0c74ac081449e53884b12ba658cbd72990614"}, + {file = "typer-0.23.1-py3-none-any.whl", hash = "sha256:3291ad0d3c701cbf522012faccfbb29352ff16ad262db2139e6b01f15781f14e"}, + {file = "typer-0.23.1.tar.gz", hash = "sha256:2070374e4d31c83e7b61362fd859aa683576432fd5b026b060ad6b4cd3b86134"}, ] [package.dependencies] +annotated-doc = ">=0.0.2" click = ">=8.0.0" rich = ">=10.11.0" shellingham = ">=1.3.0" -typing-extensions = ">=3.7.4.3" [[package]] name = "types-python-dateutil" -version = "2.9.0.20251115" +version = "2.9.0.20260124" description = "Typing stubs for python-dateutil" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "types_python_dateutil-2.9.0.20251115-py3-none-any.whl", hash = "sha256:9cf9c1c582019753b8639a081deefd7e044b9fa36bd8217f565c6c4e36ee0624"}, - {file = "types_python_dateutil-2.9.0.20251115.tar.gz", hash = "sha256:8a47f2c3920f52a994056b8786309b43143faa5a64d4cbb2722d6addabdf1a58"}, + {file = "types_python_dateutil-2.9.0.20260124-py3-none-any.whl", hash = "sha256:f802977ae08bf2260142e7ca1ab9d4403772a254409f7bbdf652229997124951"}, + {file = "types_python_dateutil-2.9.0.20260124.tar.gz", hash = "sha256:7d2db9f860820c30e5b8152bfe78dbdf795f7d1c6176057424e8b3fdd1f581af"}, ] [[package]] name = "types-requests" -version = "2.32.4.20250913" +version = "2.32.4.20260107" description = "Typing stubs for requests" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "types_requests-2.32.4.20250913-py3-none-any.whl", hash = "sha256:78c9c1fffebbe0fa487a418e0fa5252017e9c60d1a2da394077f1780f655d7e1"}, - {file = "types_requests-2.32.4.20250913.tar.gz", hash = "sha256:abd6d4f9ce3a9383f269775a9835a4c24e5cd6b9f647d64f88aa4613c33def5d"}, + {file = "types_requests-2.32.4.20260107-py3-none-any.whl", hash = "sha256:b703fe72f8ce5b31ef031264fe9395cac8f46a04661a79f7ed31a80fb308730d"}, + {file = "types_requests-2.32.4.20260107.tar.gz", hash = "sha256:018a11ac158f801bfa84857ddec1650750e393df8a004a8a9ae2a9bec6fcb24f"}, ] [package.dependencies] @@ -3697,37 +3995,57 @@ typing-extensions = ">=4.12.0" [[package]] name = "urllib3" -version = "2.5.0" +version = "2.6.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, - {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, + {file = "urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4"}, + {file = "urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"}, ] [package.extras] -brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] +brotli = ["brotli (>=1.2.0) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=1.2.0.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] +zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""] + +[[package]] +name = "uvicorn" +version = "0.40.0" +description = "The lightning-fast ASGI server." +optional = false +python-versions = ">=3.10" +groups = ["dev"] +files = [ + {file = "uvicorn-0.40.0-py3-none-any.whl", hash = "sha256:c6c8f55bc8bf13eb6fa9ff87ad62308bbbc33d0b67f84293151efe87e0d5f2ee"}, + {file = "uvicorn-0.40.0.tar.gz", hash = "sha256:839676675e87e73694518b5574fd0f24c9d97b46bea16df7b8c05ea1a51071ea"}, +] + +[package.dependencies] +click = ">=7.0" +h11 = ">=0.8" +typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} + +[package.extras] +standard = ["colorama (>=0.4) ; sys_platform == \"win32\"", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.15.1) ; sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"", "watchfiles (>=0.13)", "websockets (>=10.4)"] [[package]] name = "virtualenv" -version = "20.35.4" +version = "20.36.1" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "virtualenv-20.35.4-py3-none-any.whl", hash = "sha256:c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b"}, - {file = "virtualenv-20.35.4.tar.gz", hash = "sha256:643d3914d73d3eeb0c552cbb12d7e82adf0e504dbf86a3182f8771a153a1971c"}, + {file = "virtualenv-20.36.1-py3-none-any.whl", hash = "sha256:575a8d6b124ef88f6f51d56d656132389f961062a9177016a50e4f507bbcc19f"}, + {file = "virtualenv-20.36.1.tar.gz", hash = "sha256:8befb5c81842c641f8ee658481e42641c68b5eab3521d8e092d18320902466ba"}, ] [package.dependencies] distlib = ">=0.3.7,<1" -filelock = ">=3.12.2,<4" +filelock = {version = ">=3.20.1,<4", markers = "python_version >= \"3.10\""} platformdirs = ">=3.9.1,<5" typing-extensions = {version = ">=4.13.2", markers = "python_version < \"3.11\""} @@ -3737,14 +4055,14 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess [[package]] name = "wcwidth" -version = "0.2.14" +version = "0.6.0" description = "Measures the displayed width of unicode strings in a terminal" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "wcwidth-0.2.14-py2.py3-none-any.whl", hash = "sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1"}, - {file = "wcwidth-0.2.14.tar.gz", hash = "sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605"}, + {file = "wcwidth-0.6.0-py3-none-any.whl", hash = "sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad"}, + {file = "wcwidth-0.6.0.tar.gz", hash = "sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159"}, ] [[package]] @@ -3800,4 +4118,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = ">=3.10.0,<4.0" -content-hash = "506edf6a7095e27187fa713d8f58dbfe5a7d0e931ba47559bb408c339f5275f3" +content-hash = "200e260ff6efc78c2b82b501c62e1299c37848a3d0a9a508cb5b3234f610d2f3" diff --git a/pyproject.toml b/pyproject.toml index 4f884752..2f796388 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,10 +47,10 @@ build-backend = "poetry.core.masonry.api" [tool.poetry.group.dev.dependencies] pytest = "^7.1.1" pytest-mock = "^3.7.0" -exasol-toolbox = "^1.6.0" +exasol-toolbox = "^5.1.1" # See https://github.com/exasol/saas-api-python/issues/120 # for using openapi-python-client version >= 0.26 -openapi-python-client = ">=0.21.5, <0.26" +openapi-python-client = ">=0.21.5" pyexasol = ">=1.0.0, <2" toml = "^0.10.2" types-python-dateutil = "^2.9.0.20250516" From 74a9a453369851c74a29e289361ea883f698f481 Mon Sep 17 00:00:00 2001 From: ckunki Date: Sun, 15 Feb 2026 12:56:24 +0100 Subject: [PATCH 02/47] Updated changelog --- doc/changes/unreleased.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc/changes/unreleased.md b/doc/changes/unreleased.md index 79e701b8..d54d53f2 100644 --- a/doc/changes/unreleased.md +++ b/doc/changes/unreleased.md @@ -1 +1,13 @@ # Unreleased + +## Summary + +This release fixes vulnerabilities by updating dependencies. + +## Security + +* tbd: Fixed vulnerabilities by updating dependencies. + +## Refactorings + +* #120: Updated openapi-python-client to version 0.26 or higher From 0302f93f49897498a42df9825ff2a3ba5a598127 Mon Sep 17 00:00:00 2001 From: ckunki Date: Sun, 15 Feb 2026 13:27:05 +0100 Subject: [PATCH 03/47] Re-generated workflows and fixed typing errors --- .github/workflows/build-and-publish.yml | 13 +- .github/workflows/cd.yml | 7 +- .github/workflows/check-api-outdated.yml | 7 +- .github/workflows/check-release-tag.yml | 9 +- .github/workflows/checks.yml | 158 ++++++++++++++--------- .github/workflows/ci.yml | 54 +------- .github/workflows/gh-pages.yml | 20 +-- .github/workflows/matrix-all.yml | 33 +++++ .github/workflows/matrix-exasol.yml | 33 +++++ .github/workflows/matrix-python.yml | 9 +- .github/workflows/merge-gate.yml | 51 ++++++++ .github/workflows/pr-merge.yml | 4 +- .github/workflows/report.yml | 15 ++- .github/workflows/run-tests.yml | 50 ------- .github/workflows/slow-checks.yml | 49 +++++++ exasol/saas/client/api_access.py | 18 ++- noxconfig.py | 3 + noxfile.py | 4 +- pyproject.toml | 17 ++- test/integration/allowed_ip_test.py | 4 - test/integration/conftest.py | 1 - test/integration/connection_test.py | 2 - test/integration/databases_test.py | 7 +- test/integration/test_placeholder.py | 4 - 24 files changed, 347 insertions(+), 225 deletions(-) create mode 100644 .github/workflows/matrix-all.yml create mode 100644 .github/workflows/matrix-exasol.yml create mode 100644 .github/workflows/merge-gate.yml delete mode 100644 .github/workflows/run-tests.yml create mode 100644 .github/workflows/slow-checks.yml delete mode 100644 test/integration/test_placeholder.py diff --git a/.github/workflows/build-and-publish.yml b/.github/workflows/build-and-publish.yml index e4b5f2a0..b9ea2c00 100644 --- a/.github/workflows/build-and-publish.yml +++ b/.github/workflows/build-and-publish.yml @@ -4,21 +4,24 @@ on: workflow_call: secrets: PYPI_TOKEN: - required: true + required: true jobs: cd-job: name: Continuous Delivery - runs-on: ubuntu-24.04 + runs-on: "ubuntu-24.04" permissions: contents: write steps: - name: SCM Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Python & Poetry Environment - uses: exasol/python-toolbox/.github/actions/python-environment@1.6.0 + uses: exasol/python-toolbox/.github/actions/python-environment@v5 + with: + python-version: "3.10" + poetry-version: "2.3.0" - name: Build Artifacts run: poetry build @@ -32,7 +35,7 @@ jobs: - name: GitHub Release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: > + run: >- gh release create ${GITHUB_REF_NAME} --title ${GITHUB_REF_NAME} --notes-file ./doc/changes/changes_${GITHUB_REF_NAME}.md diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 835095da..98a11f62 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -4,6 +4,7 @@ on: push: tags: - '**' + - '!v*' jobs: @@ -14,6 +15,8 @@ jobs: contents: read cd-job: + needs: + - check-tag-version-job name: Continuous Delivery uses: ./.github/workflows/build-and-publish.yml permissions: @@ -22,11 +25,11 @@ jobs: PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} publish-docs: - needs: [ cd-job ] + needs: + - cd-job name: Publish Documentation uses: ./.github/workflows/gh-pages.yml permissions: contents: read pages: write id-token: write - diff --git a/.github/workflows/check-api-outdated.yml b/.github/workflows/check-api-outdated.yml index fce0ca60..b019b1e9 100644 --- a/.github/workflows/check-api-outdated.yml +++ b/.github/workflows/check-api-outdated.yml @@ -26,12 +26,13 @@ jobs: steps: - name: SCM Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Python & Poetry Environment - uses: exasol/python-toolbox/.github/actions/python-environment@1.5.0 + uses: exasol/python-toolbox/.github/actions/python-environment@v5 with: python-version: "3.10" + poetry-version: "2.3.0" - name: Run Nox Task api:check-outdated run: poetry run -- nox -s api:check-outdated @@ -50,7 +51,7 @@ jobs: - name: Upload openapi.json if: ${{ failure() }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: openapi.json path: openapi.json diff --git a/.github/workflows/check-release-tag.yml b/.github/workflows/check-release-tag.yml index a3d0350a..d5b9cee3 100644 --- a/.github/workflows/check-release-tag.yml +++ b/.github/workflows/check-release-tag.yml @@ -7,15 +7,18 @@ jobs: check-tag-version-job: name: Check Tag Version - runs-on: ubuntu-24.04 + runs-on: "ubuntu-24.04" permissions: contents: read steps: - name: SCM Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Python & Poetry Environment - uses: exasol/python-toolbox/.github/actions/python-environment@1.6.0 + uses: exasol/python-toolbox/.github/actions/python-environment@v5 + with: + python-version: "3.10" + poetry-version: "2.3.0" - name: Check Tag Version # make sure the pushed/created tag matched the project version diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index dfb7eebf..4509e0c9 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -6,169 +6,211 @@ on: jobs: Version-Check: name: Version - runs-on: ubuntu-24.04 + runs-on: "ubuntu-24.04" permissions: contents: read steps: - name: SCM Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Setup Python & Poetry Environment - uses: exasol/python-toolbox/.github/actions/python-environment@1.6.0 + uses: exasol/python-toolbox/.github/actions/python-environment@v5 + with: + python-version: "3.10" + poetry-version: "2.3.0" - name: Check Version(s) run: poetry run -- nox -s version:check Documentation: name: Docs - needs: [ Version-Check ] - runs-on: ubuntu-24.04 + runs-on: "ubuntu-24.04" permissions: contents: read steps: - name: SCM Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Python & Poetry Environment - uses: exasol/python-toolbox/.github/actions/python-environment@1.6.0 + uses: exasol/python-toolbox/.github/actions/python-environment@v5 + with: + python-version: "3.10" + poetry-version: "2.3.0" - name: Build Documentation - run: | - poetry run -- nox -s docs:build + run: poetry run -- nox -s docs:build - name: Link Check - run: | - poetry run -- nox -s links:check - - build-matrix: - name: Generate Build Matrix - uses: ./.github/workflows/matrix-python.yml - permissions: - contents: read + run: poetry run -- nox -s links:check Changelog: name: Changelog Update Check - runs-on: ubuntu-24.04 + runs-on: "ubuntu-24.04" permissions: contents: read if: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master' }} steps: - name: SCM Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Python & Poetry Environment - uses: exasol/python-toolbox/.github/actions/python-environment@1.6.0 + uses: exasol/python-toolbox/.github/actions/python-environment@v5 + with: + python-version: "3.10" + poetry-version: "2.3.0" - name: Run changelog update check run: poetry run -- nox -s changelog:updated Lint: - name: Linting (Python-${{ matrix.python-version }}) - needs: [ Version-Check, build-matrix ] - runs-on: ubuntu-24.04 + name: Linting (Python-${{ matrix.python-versions }}) + runs-on: "ubuntu-24.04" permissions: contents: read strategy: fail-fast: false - matrix: ${{ fromJson(needs.build-matrix.outputs.matrix) }} + matrix: + python-versions: ["3.10", "3.11", "3.12", "3.13"] steps: - name: SCM Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Python & Poetry Environment - uses: exasol/python-toolbox/.github/actions/python-environment@1.6.0 + uses: exasol/python-toolbox/.github/actions/python-environment@v5 with: - python-version: ${{ matrix.python-version }} + python-version: ${{ matrix.python-versions }} + poetry-version: "2.3.0" - name: Run lint run: poetry run -- nox -s lint:code - name: Upload Artifacts - uses: actions/upload-artifact@v4.6.2 + uses: actions/upload-artifact@v6 with: - name: lint-python${{ matrix.python-version }} + name: lint-python${{ matrix.python-versions }} path: | .lint.txt .lint.json include-hidden-files: true Type-Check: - name: Type Checking (Python-${{ matrix.python-version }}) - needs: [ Version-Check, build-matrix ] - runs-on: ubuntu-24.04 + name: Type Checking (Python-${{ matrix.python-versions }}) + runs-on: "ubuntu-24.04" permissions: contents: read strategy: fail-fast: false - matrix: ${{ fromJson(needs.build-matrix.outputs.matrix) }} + matrix: + python-versions: ["3.10", "3.11", "3.12", "3.13"] steps: - name: SCM Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Python & Poetry Environment - uses: exasol/python-toolbox/.github/actions/python-environment@1.6.0 + uses: exasol/python-toolbox/.github/actions/python-environment@v5 with: - python-version: ${{ matrix.python-version }} + python-version: ${{ matrix.python-versions }} + poetry-version: "2.3.0" - name: Run type-check run: poetry run -- nox -s lint:typing Security: - name: Security Checks (Python-${{ matrix.python-version }}) - needs: [ Version-Check, build-matrix ] - runs-on: ubuntu-24.04 + name: Security Checks (Python-${{ matrix.python-versions }}) + runs-on: "ubuntu-24.04" permissions: contents: read strategy: fail-fast: false - matrix: ${{ fromJson(needs.build-matrix.outputs.matrix) }} + matrix: + python-versions: ["3.10", "3.11", "3.12", "3.13"] steps: - name: SCM Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Python & Poetry Environment - uses: exasol/python-toolbox/.github/actions/python-environment@1.6.0 + uses: exasol/python-toolbox/.github/actions/python-environment@v5 with: - python-version: ${{ matrix.python-version }} + python-version: ${{ matrix.python-versions }} + poetry-version: "2.3.0" - name: Run security linter run: poetry run -- nox -s lint:security - name: Upload Artifacts - uses: actions/upload-artifact@v4.6.2 + uses: actions/upload-artifact@v6 with: - name: security-python${{ matrix.python-version }} + name: security-python${{ matrix.python-versions }} path: .security.json include-hidden-files: true Format: name: Format Check - runs-on: ubuntu-24.04 + runs-on: "ubuntu-24.04" permissions: contents: read steps: - name: SCM Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Python & Poetry Environment - uses: exasol/python-toolbox/.github/actions/python-environment@1.6.0 + uses: exasol/python-toolbox/.github/actions/python-environment@v5 + with: + python-version: "3.10" + poetry-version: "2.3.0" - name: Run format check - run: poetry run -- nox -s project:format + run: poetry run -- nox -s format:check + + + Build-Packages: + name: Build Package Check + runs-on: "ubuntu-24.04" + permissions: + contents: read + steps: + - name: SCM Checkout + uses: actions/checkout@v6 + + - name: Setup Python & Poetry Environment + uses: exasol/python-toolbox/.github/actions/python-environment@v5 + with: + python-version: "3.10" + poetry-version: "2.3.0" + + - name: Run Distribution Check + run: poetry run -- nox -s package:check Tests: - name: Tests (Python-${{ matrix.python-version }}) - needs: [ Documentation, Lint, Type-Check, Security, Format, build-matrix ] - strategy: - fail-fast: false - matrix: ${{ fromJson(needs.build-matrix.outputs.matrix) }} - uses: ./.github/workflows/run-tests.yml - secrets: inherit + name: Unit-Tests (Python-${{ matrix.python-versions }}) + runs-on: "ubuntu-24.04" permissions: contents: read - with: - python-version: ${{ matrix.python-version }} + strategy: + fail-fast: false + matrix: + python-versions: ["3.10", "3.11", "3.12", "3.13"] + + steps: + - name: SCM Checkout + uses: actions/checkout@v6 + + - name: Setup Python & Poetry Environment + uses: exasol/python-toolbox/.github/actions/python-environment@v5 + with: + python-version: ${{ matrix.python-versions }} + poetry-version: "2.3.0" + + - name: Run Tests and Collect Coverage + run: poetry run -- nox -s test:unit -- --coverage + + - name: Upload Artifacts + uses: actions/upload-artifact@v6 + with: + name: coverage-python${{ matrix.python-versions }}-fast + path: .coverage + include-hidden-files: true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 25693b53..5cba3e81 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,65 +2,23 @@ name: CI on: pull_request: - types: [opened, synchronize, reopened] + types: [opened, synchronize, reopened] schedule: # At 00:00 on every 7th day-of-month from 1 through 31. (https://crontab.guru) - cron: "0 0 1/7 * *" jobs: - ci-job: - name: Checks - uses: ./.github/workflows/checks.yml + CI: + uses: ./.github/workflows/merge-gate.yml secrets: inherit permissions: contents: read - gate-1: - name: Gate 1 - Regular CI - needs: [ ci-job ] - runs-on: ubuntu-24.04 - permissions: - contents: read - steps: - - name: Branch Protection - run: true - - slow-test-detection: - name: Run Slow or Expensive Tests (e.g. SaaS)? - runs-on: ubuntu-24.04 - permissions: - contents: read - steps: - - name: Detect Slow Tests - run: true - environment: - slow-tests - - run-slow-tests: - name: Run Slow or Expensive Tests (e.g. SaaS) if Requested - uses: ./.github/workflows/run-tests.yml - needs: [ slow-test-detection ] - secrets: inherit - permissions: - contents: read - with: - slow-tests: true - python-version: "3.10" - - metrics: - needs: [ ci-job, run-slow-tests ] + Metrics: + needs: + - CI uses: ./.github/workflows/report.yml secrets: inherit permissions: contents: read - - gate-2: - name: Gate 2 - Allow Merge - runs-on: ubuntu-24.04 - needs: [ run-slow-tests ] - permissions: - contents: read - steps: - - name: Branch Protection - run: true diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 233cf2b1..99a91659 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -7,30 +7,34 @@ on: jobs: build-documentation: - runs-on: ubuntu-24.04 + runs-on: "ubuntu-24.04" permissions: contents: read steps: - name: SCM Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Setup Python & Poetry Environment - uses: exasol/python-toolbox/.github/actions/python-environment@1.6.0 + uses: exasol/python-toolbox/.github/actions/python-environment@v5 + with: + python-version: "3.10" + poetry-version: "2.3.0" - name: Build Documentation run: | poetry run -- nox -s docs:multiversion - rm -r .html-documentation/*/.doctrees + mv .html-documentation html-documentation - name: Upload artifact - uses: actions/upload-pages-artifact@v3 + uses: actions/upload-pages-artifact@v4 with: - path: .html-documentation + path: html-documentation deploy-documentation: - needs: [ build-documentation ] + needs: + - build-documentation permissions: contents: read pages: write @@ -38,7 +42,7 @@ jobs: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-24.04 + runs-on: "ubuntu-24.04" steps: - name: Deploy to GitHub Pages id: deployment diff --git a/.github/workflows/matrix-all.yml b/.github/workflows/matrix-all.yml new file mode 100644 index 00000000..34a50677 --- /dev/null +++ b/.github/workflows/matrix-all.yml @@ -0,0 +1,33 @@ +name: Build Matrix (All Versions) + +on: + workflow_call: + outputs: + matrix: + description: "Generates the all versions build matrix" + value: ${{ jobs.all_versions.outputs.matrix }} + +jobs: + all_versions: + runs-on: "ubuntu-24.04" + permissions: + contents: read + steps: + - name: SCM Checkout + uses: actions/checkout@v6 + + - name: Setup Python & Poetry Environment + uses: exasol/python-toolbox/.github/actions/python-environment@v5 + with: + python-version: "3.10" + poetry-version: "2.3.0" + + - name: Generate matrix + run: poetry run -- nox -s matrix:all + + - id: set-matrix + run: | + echo "matrix=$(poetry run -- nox -s matrix:all)" >> $GITHUB_OUTPUT + + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} diff --git a/.github/workflows/matrix-exasol.yml b/.github/workflows/matrix-exasol.yml new file mode 100644 index 00000000..0f251f90 --- /dev/null +++ b/.github/workflows/matrix-exasol.yml @@ -0,0 +1,33 @@ +name: Build Matrix (Exasol) + +on: + workflow_call: + outputs: + matrix: + description: "Generates the exasol version build matrix" + value: ${{ jobs.exasol_versions.outputs.matrix }} + +jobs: + exasol_versions: + runs-on: "ubuntu-24.04" + permissions: + contents: read + steps: + - name: SCM Checkout + uses: actions/checkout@v6 + + - name: Setup Python & Poetry Environment + uses: exasol/python-toolbox/.github/actions/python-environment@v5 + with: + python-version: "3.10" + poetry-version: "2.3.0" + + - name: Generate matrix + run: poetry run -- nox -s matrix:exasol + + - id: set-matrix + run: | + echo "matrix=$(poetry run -- nox -s matrix:exasol)" >> $GITHUB_OUTPUT + + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} diff --git a/.github/workflows/matrix-python.yml b/.github/workflows/matrix-python.yml index cfc0c272..8d492fe2 100644 --- a/.github/workflows/matrix-python.yml +++ b/.github/workflows/matrix-python.yml @@ -9,15 +9,18 @@ on: jobs: python_versions: - runs-on: ubuntu-24.04 + runs-on: "ubuntu-24.04" permissions: contents: read steps: - name: SCM Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Python & Poetry Environment - uses: exasol/python-toolbox/.github/actions/python-environment@1.6.0 + uses: exasol/python-toolbox/.github/actions/python-environment@v5 + with: + python-version: "3.10" + poetry-version: "2.3.0" - name: Generate matrix run: poetry run -- nox -s matrix:python diff --git a/.github/workflows/merge-gate.yml b/.github/workflows/merge-gate.yml new file mode 100644 index 00000000..74b3d93f --- /dev/null +++ b/.github/workflows/merge-gate.yml @@ -0,0 +1,51 @@ +name: Merge-Gate + +on: + workflow_call: + +jobs: + + fast-checks: + name: Fast + uses: ./.github/workflows/checks.yml + permissions: + contents: read + + run-slow-tests: + name: Run Slow Tests? + runs-on: "ubuntu-24.04" + permissions: + contents: read + + # Even though the environment "manual-approval" will be created automatically, + # it still needs to be configured to require interactive review. + # See project settings on GitHub (Settings / Environments / manual-approval). + environment: manual-approval + steps: + - name: Tests + run: echo "Slow tests approved" + + slow-checks: + name: Slow + needs: + - run-slow-tests + uses: ./.github/workflows/slow-checks.yml + secrets: inherit + permissions: + contents: read + + # This job ensures inputs have been executed successfully. + approve-merge: + name: Allow Merge + runs-on: "ubuntu-24.04" + permissions: + contents: read + # If you need additional jobs to be part of the merge gate, add them below + needs: + - fast-checks + - slow-checks + + # Each job requires a step, so we added this dummy step. + steps: + - name: Approve + run: echo "Merge Approved" diff --git a/.github/workflows/pr-merge.yml b/.github/workflows/pr-merge.yml index 0a85a6df..544c8a94 100644 --- a/.github/workflows/pr-merge.yml +++ b/.github/workflows/pr-merge.yml @@ -14,7 +14,6 @@ jobs: ci-job: name: Checks uses: ./.github/workflows/checks.yml - secrets: inherit permissions: contents: read @@ -27,7 +26,8 @@ jobs: id-token: write metrics: - needs: [ ci-job ] + needs: + - ci-job uses: ./.github/workflows/report.yml secrets: inherit permissions: diff --git a/.github/workflows/report.yml b/.github/workflows/report.yml index 1dbc3222..fc5f9a91 100644 --- a/.github/workflows/report.yml +++ b/.github/workflows/report.yml @@ -6,7 +6,7 @@ on: jobs: report: - runs-on: ubuntu-24.04 + runs-on: "ubuntu-24.04" permissions: contents: read env: @@ -14,15 +14,18 @@ jobs: steps: - name: SCM Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Setup Python & Poetry Environment - uses: exasol/python-toolbox/.github/actions/python-environment@1.6.0 + uses: exasol/python-toolbox/.github/actions/python-environment@v5 + with: + python-version: "3.10" + poetry-version: "2.3.0" - name: Download Artifacts - uses: actions/download-artifact@v4.2.1 + uses: actions/download-artifact@v7 with: path: ./artifacts @@ -41,13 +44,13 @@ jobs: run: poetry run -- nox -s project:report -- --format json | tee metrics.json - name: Upload Artifacts - uses: actions/upload-artifact@v4.6.2 + uses: actions/upload-artifact@v6 with: name: metrics.json path: metrics.json - name: Generate GitHub Summary - run: | + run: |- echo -e "# Summary\n" >> $GITHUB_STEP_SUMMARY poetry run -- nox -s project:report -- --format markdown >> $GITHUB_STEP_SUMMARY poetry run -- nox -s dependency:licenses >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml deleted file mode 100644 index 50563046..00000000 --- a/.github/workflows/run-tests.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: Run Tests - -on: - workflow_call: - inputs: - slow-tests: - type: boolean - default: false - python-version: - type: string - required: true - -jobs: - - tests-job: - runs-on: ubuntu-24.04 - permissions: - contents: read - - steps: - - name: Set pytest markers - id: pytest-markers - if: ${{ ! inputs.slow-tests }} - run: | - echo slow-tests='-m "not slow"' >> "$GITHUB_OUTPUT" - echo coverage-suffix='-fast' >> "$GITHUB_OUTPUT" - - - name: SCM Checkout - uses: actions/checkout@v4 - - - name: Setup Python & Poetry Environment - uses: exasol/python-toolbox/.github/actions/python-environment@1.5.0 - with: - python-version: ${{ inputs.python-version }} - - - name: Run Tests and Calculate Coverage - env: - SAAS_HOST: ${{ secrets.INTEGRATION_TEAM_SAAS_STAGING_HOST }} - SAAS_ACCOUNT_ID: ${{ secrets.INTEGRATION_TEAM_SAAS_STAGING_ACCOUNT_ID }} - SAAS_PAT: ${{ secrets.INTEGRATION_TEAM_SAAS_STAGING_PAT }} - PYTEST_ADDOPTS: '-o log_cli=true -o log_cli_level=INFO ${{ steps.pytest-markers.outputs.slow-tests }}' - PROJECT_SHORT_TAG: SAPIPY - run: poetry run -- nox -s test:coverage -- - - - name: Upload Artifacts - uses: actions/upload-artifact@v4.6.2 - with: - name: coverage-python${{ inputs.python-version }}${{ steps.pytest-markers.outputs.coverage-suffix }} - path: .coverage - include-hidden-files: true diff --git a/.github/workflows/slow-checks.yml b/.github/workflows/slow-checks.yml new file mode 100644 index 00000000..282a0ab8 --- /dev/null +++ b/.github/workflows/slow-checks.yml @@ -0,0 +1,49 @@ +name: Slow-Checks + +on: + workflow_call: + +jobs: + build-matrix: + name: Generate Build Matrix + uses: ./.github/workflows/matrix-all.yml + permissions: + contents: read + + tests: + name: Integration-Tests (Python-${{ matrix.python-version }} + needs: + - build-matrix + runs-on: "ubuntu-24.04" + permissions: + contents: read + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.build-matrix.outputs.matrix) }} + + steps: + - name: SCM Checkout + uses: actions/checkout@v6 + + - name: Setup Python & Poetry Environment + uses: exasol/python-toolbox/.github/actions/python-environment@v5 + with: + python-version: ${{ matrix.python-version }} + poetry-version: "2.3.0" + + - name: Run Tests and Collect Coverage + run: poetry run -- nox -s test:integration -- --coverage + env: + SAAS_HOST: ${{ secrets.INTEGRATION_TEAM_SAAS_STAGING_HOST }} + SAAS_ACCOUNT_ID: ${{ secrets.INTEGRATION_TEAM_SAAS_STAGING_ACCOUNT_ID }} + SAAS_PAT: ${{ secrets.INTEGRATION_TEAM_SAAS_STAGING_PAT }} + PROJECT_SHORT_TAG: SAPIPY + + - name: Upload Artifacts + uses: actions/upload-artifact@v6 + with: + name: coverage-python${{ matrix.python-version }}-exasol${{ matrix.exasol-version }}-slow + path: .coverage + include-hidden-files: true diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index 3f11b217..273b84c9 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -1,16 +1,13 @@ from __future__ import annotations -import datetime as dt import getpass import logging -import re import time from collections.abc import Iterable from contextlib import contextmanager from datetime import ( datetime, timedelta, - timezone, ) from typing import Any @@ -26,6 +23,7 @@ wait_fixed, ) +import exasol.saas.client.openapi.models as openapi_models from exasol.saas.client import ( Limits, openapi, @@ -234,10 +232,10 @@ def minutes(x: timedelta) -> int: return x.seconds // 60 idle_time = idle_time or Limits.AUTOSTOP_MIN_IDLE_TIME - cluster_spec = openapi.models.CreateDatabaseInitialCluster( + cluster_spec = openapi_models.CreateDatabaseInitialCluster( name="my-cluster", size=cluster_size, - auto_stop=openapi.models.AutoStop( + auto_stop=openapi_models.AutoStop( enabled=True, idle_time=minutes(idle_time), ), @@ -246,7 +244,7 @@ def minutes(x: timedelta) -> int: return create_database.sync( self._account_id, client=self._client, - body=openapi.models.CreateDatabase( + body=openapi_models.CreateDatabase( name=name, initial_cluster=cluster_spec, provider="aws", @@ -374,7 +372,7 @@ def poll_status() -> Status: def clusters( self, database_id: str, - ) -> list[openapi.models.Cluster] | None: + ) -> list[openapi_models.Cluster] | None: return list_clusters.sync( self._account_id, database_id, @@ -385,7 +383,7 @@ def get_connection( self, database_id: str, cluster_id: str, - ) -> openapi.models.ClusterConnection | None: + ) -> openapi_models.ClusterConnection | None: return get_cluster_connection.sync( self._account_id, database_id, @@ -406,14 +404,14 @@ def list_allowed_ip_ids(self) -> Iterable[str]: def add_allowed_ip( self, cidr_ip: str = "0.0.0.0/0", - ) -> openapi.models.allowed_ip.AllowedIP | None: + ) -> openapi_models.allowed_ip.AllowedIP | None: """ Suggested values for cidr_ip: * 185.17.207.78/32 * 0.0.0.0/0 = all ipv4 * ::/0 = all ipv6 """ - rule = openapi.models.CreateAllowedIP( + rule = openapi_models.CreateAllowedIP( name=timestamp_name(), cidr_ip=cidr_ip, ) diff --git a/noxconfig.py b/noxconfig.py index 7b994594..2b235a26 100644 --- a/noxconfig.py +++ b/noxconfig.py @@ -6,4 +6,7 @@ root_path=Path(__file__).parent, project_name="saas", python_versions=("3.10", "3.11", "3.12", "3.13"), + exasol_versions=("7.1.30",), + # "exasol/saas/client/openapi/**" + add_to_excluded_python_paths=("openapi",), ) diff --git a/noxfile.py b/noxfile.py index 3b11582b..1cd1f82c 100644 --- a/noxfile.py +++ b/noxfile.py @@ -8,7 +8,6 @@ timezone, ) from pathlib import Path -from typing import List import nox import requests @@ -19,7 +18,6 @@ from nox import Session from exasol.saas.client import SAAS_HOST -from noxconfig import PROJECT_CONFIG # default actions to be run if nothing is explicitly specified with the -s option nox.options.sessions = ["format:fix"] @@ -115,7 +113,7 @@ def generate_api(session: Session): if local_build: session.run("poetry", "add", *dependencies("tmp/pyproject.toml")) shutil.rmtree("tmp") - fix(session) + fix_format(session) @nox.session(name="api:check-outdated", python=False) diff --git a/pyproject.toml b/pyproject.toml index 2f796388..cd574427 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -63,10 +63,6 @@ testpaths = [ "test" ] -markers = [ - "slow: marks tests as slow (deselect with '-m \"not slow\"')", -] - [tool.coverage.run] relative_files = true source = [ @@ -114,11 +110,18 @@ ignore_missing_imports = true max-line-length = 88 max-module-lines = 800 -[tool.poetry.scripts] -tbx = 'exasol.toolbox.tools.tbx:CLI' +[tool.ruff.lint] +extend-ignore = [ + "E", # Syntax errors + "F", # Pyflakes rules (excluding F401) + "UP", # pyupgrade rules + "D", # Docstring rules +] +extend-select = ["F401"] +unfixable = [] [tool.sonar] projectKey = "com.exasol:saas-api-python" hostUrl = "https://sonarcloud.io" organization = "exasol" -exclusions = "exasol/saas/client/openapi/**" \ No newline at end of file +exclusions = "exasol/saas/client/openapi/**" diff --git a/test/integration/allowed_ip_test.py b/test/integration/allowed_ip_test.py index 8b92637b..1aa54720 100644 --- a/test/integration/allowed_ip_test.py +++ b/test/integration/allowed_ip_test.py @@ -1,7 +1,3 @@ -import pytest - - -@pytest.mark.slow def test_lifecycle(api_access): testee = api_access with testee.allowed_ip(ignore_delete_failure=True) as ip: diff --git a/test/integration/conftest.py b/test/integration/conftest.py index 2fc825ef..272ba1bc 100644 --- a/test/integration/conftest.py +++ b/test/integration/conftest.py @@ -1,5 +1,4 @@ import os -from pathlib import Path import pytest diff --git a/test/integration/connection_test.py b/test/integration/connection_test.py index e55cf842..fdb52a46 100644 --- a/test/integration/connection_test.py +++ b/test/integration/connection_test.py @@ -32,7 +32,6 @@ def connect(**kwargs): return connect -@pytest.mark.slow def test_get_connection_params_with_id( pyexasol_connection, operational_saas_database_id, @@ -46,7 +45,6 @@ def test_get_connection_params_with_id( assert result == [(1,)] -@pytest.mark.slow def test_get_connection_params_with_name(pyexasol_connection, database_name): """ This integration test checks that opening a pyexasol connection to a SaaS DB with diff --git a/test/integration/databases_test.py b/test/integration/databases_test.py index ec1383f6..78fd9a1c 100644 --- a/test/integration/databases_test.py +++ b/test/integration/databases_test.py @@ -3,14 +3,10 @@ timedelta, ) -import pytest from tenacity import RetryError from exasol.saas.client import PROMISING_STATES -from exasol.saas.client.api_access import ( - get_connection_params, - timestamp_name, -) +from exasol.saas.client.api_access import timestamp_name from exasol.saas.client.openapi.models.exasol_database import ExasolDatabase @@ -23,7 +19,6 @@ def local_name(project_short_tag: str | None) -> str: return timestamp_name(project_short_tag) -@pytest.mark.slow def test_lifecycle(api_access, local_name): """ This integration test uses the database created and provided by pytest diff --git a/test/integration/test_placeholder.py b/test/integration/test_placeholder.py deleted file mode 100644 index 1d09f30c..00000000 --- a/test/integration/test_placeholder.py +++ /dev/null @@ -1,4 +0,0 @@ -def test_placeholder(): - """ - Prevent failure when call pytest "-m not slow" test/integration. - """ From d00b507833841af4022478cd7224aca968b89ea0 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 08:29:06 +0100 Subject: [PATCH 04/47] updated changelog --- doc/changes/unreleased.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/doc/changes/unreleased.md b/doc/changes/unreleased.md index d54d53f2..5c1dbf41 100644 --- a/doc/changes/unreleased.md +++ b/doc/changes/unreleased.md @@ -2,11 +2,7 @@ ## Summary -This release fixes vulnerabilities by updating dependencies. - -## Security - -* tbd: Fixed vulnerabilities by updating dependencies. +This release fixes vulnerabilities by updating dependencies and updates openapi-python-client as this was blocked by a pending release of the Exasol SaaS REST API. ## Refactorings From 7a9560f78820ae479d73e3cb3afa471d4aadff92 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 08:32:16 +0100 Subject: [PATCH 05/47] Moved file version.py --- version.py => exasol/saas/version.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename version.py => exasol/saas/version.py (100%) diff --git a/version.py b/exasol/saas/version.py similarity index 100% rename from version.py rename to exasol/saas/version.py From cb72387031a458bfc6592bad1a315e694a5045ef Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 08:36:01 +0100 Subject: [PATCH 06/47] re-generated API using updated openapi-python-client --- exasol/saas/client/openapi/__init__.py | 7 +- exasol/saas/client/openapi/api/__init__.py | 2 +- .../client/openapi/api/clusters/__init__.py | 2 +- .../openapi/api/clusters/create_cluster.py | 134 ++++++------ .../openapi/api/clusters/delete_cluster.py | 149 +++++++++---- .../openapi/api/clusters/get_cluster.py | 134 ++++++------ .../api/clusters/get_cluster_connection.py | 134 ++++++------ .../openapi/api/clusters/list_clusters.py | 128 ++++++----- .../openapi/api/clusters/scale_cluster.py | 159 ++++++++++---- .../openapi/api/clusters/start_cluster.py | 149 +++++++++---- .../openapi/api/clusters/stop_cluster.py | 149 +++++++++---- .../openapi/api/clusters/update_cluster.py | 159 ++++++++++---- .../client/openapi/api/databases/__init__.py | 2 +- .../openapi/api/databases/create_database.py | 126 ++++++----- .../openapi/api/databases/create_schedule.py | 134 ++++++------ .../openapi/api/databases/delete_database.py | 139 ++++++++---- .../openapi/api/databases/delete_schedule.py | 149 +++++++++---- .../openapi/api/databases/dlhc_activate.py | 139 ++++++++---- .../openapi/api/databases/get_database.py | 126 ++++++----- .../api/databases/get_database_settings.py | 126 ++++++----- .../databases/get_database_upgrade_info.py | 126 ++++++----- .../api/databases/get_dlhc_activate_status.py | 126 ++++++----- .../openapi/api/databases/list_databases.py | 120 ++++++----- .../openapi/api/databases/list_schedules.py | 128 ++++++----- .../databases/set_auto_updates_database.py | 149 +++++++++---- .../openapi/api/databases/start_database.py | 139 ++++++++---- .../openapi/api/databases/stop_database.py | 139 ++++++++---- .../openapi/api/databases/update_database.py | 149 +++++++++---- .../databases/update_schedule_cron_rule.py | 159 ++++++++++---- .../api/databases/update_schedule_state.py | 159 ++++++++++---- .../openapi/api/databases/upgrade_database.py | 139 ++++++++---- .../client/openapi/api/extensions/__init__.py | 2 +- .../extensions/create_extension_instance.py | 152 +++++++------ .../extensions/delete_extension_instance.py | 169 +++++++++++---- .../openapi/api/extensions/get_extension.py | 144 +++++++------ .../api/extensions/install_extension.py | 159 ++++++++++---- .../extensions/list_extension_instances.py | 146 +++++++------ .../openapi/api/extensions/list_extensions.py | 128 ++++++----- .../api/extensions/uninstall_extension.py | 159 ++++++++++---- .../saas/client/openapi/api/files/__init__.py | 2 +- .../client/openapi/api/files/create_folder.py | 149 +++++++++---- .../client/openapi/api/files/delete_file.py | 149 +++++++++---- .../client/openapi/api/files/delete_folder.py | 149 +++++++++---- .../client/openapi/api/files/download_file.py | 134 ++++++------ .../client/openapi/api/files/list_files.py | 128 ++++++----- .../client/openapi/api/files/upload_file.py | 134 ++++++------ .../client/openapi/api/platform/__init__.py | 2 +- .../api/platform/list_cluster_sizes.py | 120 ++++++----- .../openapi/api/platform/list_platforms.py | 121 ++++++----- .../openapi/api/platform/list_regions.py | 120 ++++++----- .../client/openapi/api/profile/__init__.py | 2 +- .../openapi/api/profile/update_profile.py | 127 ++++++++--- .../client/openapi/api/security/__init__.py | 2 +- .../openapi/api/security/add_allowed_ip.py | 126 ++++++----- .../openapi/api/security/delete_allowed_ip.py | 139 ++++++++---- .../openapi/api/security/get_allowed_ip.py | 126 ++++++----- .../openapi/api/security/list_allowed_i_ps.py | 120 ++++++----- .../openapi/api/security/update_allowed_ip.py | 149 +++++++++---- .../saas/client/openapi/api/usage/__init__.py | 2 +- .../client/openapi/api/usage/get_usage.py | 174 ++++++++------- .../saas/client/openapi/api/users/__init__.py | 2 +- .../client/openapi/api/users/delete_user.py | 139 ++++++++---- .../saas/client/openapi/api/users/get_user.py | 126 ++++++----- .../client/openapi/api/users/list_users.py | 200 ++++++++++-------- .../client/openapi/api/users/patch_user.py | 149 +++++++++---- exasol/saas/client/openapi/client.py | 69 ++---- exasol/saas/client/openapi/errors.py | 4 +- exasol/saas/client/openapi/models/__init__.py | 2 +- .../saas/client/openapi/models/allowed_ip.py | 94 ++++---- .../saas/client/openapi/models/api_error.py | 86 ++++---- .../saas/client/openapi/models/auto_stop.py | 56 ++--- exasol/saas/client/openapi/models/cluster.py | 133 ++++++------ .../openapi/models/cluster_action_scale.py | 56 ++--- .../models/cluster_action_start_stop.py | 52 ++--- .../openapi/models/cluster_connection.py | 77 +++---- .../client/openapi/models/cluster_settings.py | 56 ++--- .../openapi/models/cluster_settings_update.py | 55 ++--- .../client/openapi/models/cluster_size_1.py | 78 +++---- .../client/openapi/models/connection_i_ps.py | 64 +++--- .../openapi/models/create_allowed_ip.py | 56 ++--- .../client/openapi/models/create_cluster.py | 94 ++++---- .../client/openapi/models/create_database.py | 95 ++++----- .../models/create_database_initial_cluster.py | 94 ++++---- .../models/create_extension_instance.py | 69 +++--- .../openapi/models/database_settings.py | 72 ++++--- .../openapi/models/database_upgrade_info.py | 60 +++--- .../openapi/models/dlhc_activate_status.py | 56 ++--- .../client/openapi/models/download_file.py | 52 ++--- .../client/openapi/models/exasol_database.py | 153 +++++++------- .../models/exasol_database_clusters.py | 56 ++--- .../exasol_database_integrations_item.py | 62 +++--- .../saas/client/openapi/models/extension.py | 85 ++++---- .../client/openapi/models/extension_detail.py | 85 ++++---- .../openapi/models/extension_instance.py | 56 ++--- .../models/extension_parameter_definitions.py | 62 +++--- .../models/extension_parameter_value.py | 56 ++--- .../openapi/models/extension_version.py | 64 +++--- exasol/saas/client/openapi/models/file.py | 98 +++++---- .../client/openapi/models/get_usage_type.py | 1 - .../saas/client/openapi/models/patch_user.py | 72 ++++--- .../openapi/models/patch_user_databases.py | 64 +++--- exasol/saas/client/openapi/models/platform.py | 56 ++--- exasol/saas/client/openapi/models/region.py | 64 +++--- .../client/openapi/models/scale_cluster.py | 58 ++--- exasol/saas/client/openapi/models/schedule.py | 123 ++++++----- .../openapi/models/schedule_action_type_0.py | 1 - .../client/openapi/models/schedule_state.py | 1 - .../models/set_auto_updates_database.py | 52 ++--- exasol/saas/client/openapi/models/status.py | 1 - .../openapi/models/update_allowed_ip.py | 56 ++--- .../client/openapi/models/update_cluster.py | 83 ++++---- .../client/openapi/models/update_database.py | 52 ++--- .../client/openapi/models/update_profile.py | 56 ++--- .../models/update_schedule_cron_rule.py | 52 ++--- .../openapi/models/update_schedule_state.py | 55 ++--- .../saas/client/openapi/models/upload_file.py | 52 ++--- exasol/saas/client/openapi/models/usage.py | 65 +++--- .../models/usage_additional_property_item.py | 79 +++---- .../client/openapi/models/usage_cluster.py | 78 +++---- exasol/saas/client/openapi/models/user.py | 136 ++++++------ .../client/openapi/models/user_database.py | 56 ++--- .../saas/client/openapi/models/user_role.py | 56 ++--- .../saas/client/openapi/models/user_status.py | 1 - exasol/saas/client/openapi/types.py | 40 ++-- exasol/saas/version.py | 2 +- openapi.json | 2 +- 126 files changed, 6831 insertions(+), 4520 deletions(-) diff --git a/exasol/saas/client/openapi/__init__.py b/exasol/saas/client/openapi/__init__.py index a900b767..79f495ff 100644 --- a/exasol/saas/client/openapi/__init__.py +++ b/exasol/saas/client/openapi/__init__.py @@ -1,9 +1,6 @@ -"""A client library for accessing Exasol SaaS REST-API""" -from .client import ( - AuthenticatedClient, - Client, -) +""" A client library for accessing Exasol SaaS REST-API """ +from .client import AuthenticatedClient, Client __all__ = ( "AuthenticatedClient", diff --git a/exasol/saas/client/openapi/api/__init__.py b/exasol/saas/client/openapi/api/__init__.py index 81f9fa24..dc035f4c 100644 --- a/exasol/saas/client/openapi/api/__init__.py +++ b/exasol/saas/client/openapi/api/__init__.py @@ -1 +1 @@ -"""Contains methods for accessing the API""" +""" Contains methods for accessing the API """ diff --git a/exasol/saas/client/openapi/api/clusters/__init__.py b/exasol/saas/client/openapi/api/clusters/__init__.py index 2d7c0b23..c9921b5f 100644 --- a/exasol/saas/client/openapi/api/clusters/__init__.py +++ b/exasol/saas/client/openapi/api/clusters/__init__.py @@ -1 +1 @@ -"""Contains endpoint functions for accessing the API""" +""" Contains endpoint functions for accessing the API """ diff --git a/exasol/saas/client/openapi/api/clusters/create_cluster.py b/exasol/saas/client/openapi/api/clusters/create_cluster.py index 52823f80..3ee81e50 100644 --- a/exasol/saas/client/openapi/api/clusters/create_cluster.py +++ b/exasol/saas/client/openapi/api/clusters/create_cluster.py @@ -1,24 +1,18 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.cluster import Cluster from ...models.create_cluster import CreateCluster -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( @@ -26,38 +20,47 @@ def _get_kwargs( database_id: str, *, body: CreateCluster, + ) -> dict[str, Any]: headers: dict[str, Any] = {} + + + + + _kwargs: dict[str, Any] = { "method": "post", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/clusters", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } _kwargs["json"] = body.to_dict() + headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Cluster]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | Cluster: if response.status_code == 200: response_200 = Cluster.from_dict(response.json()) + + return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) + + + + return response_default -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Cluster]: + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | Cluster]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -72,8 +75,9 @@ def sync_detailed( *, client: AuthenticatedClient, body: CreateCluster, -) -> Response[Cluster]: - """ + +) -> Response[ApiError | Cluster]: + """ Args: account_id (str): database_id (str): @@ -84,13 +88,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Cluster] - """ + Response[ApiError | Cluster] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - body=body, +database_id=database_id, +body=body, + ) response = client.get_httpx_client().request( @@ -99,15 +105,15 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, body: CreateCluster, -) -> Optional[Cluster]: - """ + +) -> ApiError | Cluster | None: + """ Args: account_id (str): database_id (str): @@ -118,16 +124,17 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Cluster - """ + ApiError | Cluster + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - client=client, - body=body, - ).parsed +database_id=database_id, +client=client, +body=body, + ).parsed async def asyncio_detailed( account_id: str, @@ -135,8 +142,9 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: CreateCluster, -) -> Response[Cluster]: - """ + +) -> Response[ApiError | Cluster]: + """ Args: account_id (str): database_id (str): @@ -147,28 +155,32 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Cluster] - """ + Response[ApiError | Cluster] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - body=body, +database_id=database_id, +body=body, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, body: CreateCluster, -) -> Optional[Cluster]: - """ + +) -> ApiError | Cluster | None: + """ Args: account_id (str): database_id (str): @@ -179,14 +191,14 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Cluster - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - client=client, - body=body, - ) - ).parsed + ApiError | Cluster + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, +body=body, + + )).parsed diff --git a/exasol/saas/client/openapi/api/clusters/delete_cluster.py b/exasol/saas/client/openapi/api/clusters/delete_cluster.py index 98997951..58f874dc 100644 --- a/exasol/saas/client/openapi/api/clusters/delete_cluster.py +++ b/exasol/saas/client/openapi/api/clusters/delete_cluster.py @@ -1,52 +1,54 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, database_id: str, cluster_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "delete", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),cluster_id=quote(str(cluster_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -61,8 +63,9 @@ def sync_detailed( cluster_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -73,13 +76,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, +database_id=database_id, +cluster_id=cluster_id, + ) response = client.get_httpx_client().request( @@ -88,6 +93,36 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + cluster_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + cluster_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +cluster_id=cluster_id, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, @@ -95,8 +130,9 @@ async def asyncio_detailed( cluster_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -107,15 +143,50 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, +database_id=database_id, +cluster_id=cluster_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + cluster_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + cluster_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +cluster_id=cluster_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/clusters/get_cluster.py b/exasol/saas/client/openapi/api/clusters/get_cluster.py index fba2dd9c..a43b957f 100644 --- a/exasol/saas/client/openapi/api/clusters/get_cluster.py +++ b/exasol/saas/client/openapi/api/clusters/get_cluster.py @@ -1,55 +1,58 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.cluster import Cluster -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, database_id: str, cluster_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),cluster_id=quote(str(cluster_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Cluster]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | Cluster: if response.status_code == 200: response_200 = Cluster.from_dict(response.json()) + + return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Cluster]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | Cluster]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -64,8 +67,9 @@ def sync_detailed( cluster_id: str, *, client: AuthenticatedClient, -) -> Response[Cluster]: - """ + +) -> Response[ApiError | Cluster]: + """ Args: account_id (str): database_id (str): @@ -76,13 +80,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Cluster] - """ + Response[ApiError | Cluster] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, +database_id=database_id, +cluster_id=cluster_id, + ) response = client.get_httpx_client().request( @@ -91,15 +97,15 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, -) -> Optional[Cluster]: - """ + +) -> ApiError | Cluster | None: + """ Args: account_id (str): database_id (str): @@ -110,16 +116,17 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Cluster - """ + ApiError | Cluster + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, - client=client, - ).parsed +database_id=database_id, +cluster_id=cluster_id, +client=client, + ).parsed async def asyncio_detailed( account_id: str, @@ -127,8 +134,9 @@ async def asyncio_detailed( cluster_id: str, *, client: AuthenticatedClient, -) -> Response[Cluster]: - """ + +) -> Response[ApiError | Cluster]: + """ Args: account_id (str): database_id (str): @@ -139,28 +147,32 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Cluster] - """ + Response[ApiError | Cluster] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, +database_id=database_id, +cluster_id=cluster_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, -) -> Optional[Cluster]: - """ + +) -> ApiError | Cluster | None: + """ Args: account_id (str): database_id (str): @@ -171,14 +183,14 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Cluster - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, - client=client, - ) - ).parsed + ApiError | Cluster + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +cluster_id=cluster_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/clusters/get_cluster_connection.py b/exasol/saas/client/openapi/api/clusters/get_cluster_connection.py index 5259abb5..7f75bd0f 100644 --- a/exasol/saas/client/openapi/api/clusters/get_cluster_connection.py +++ b/exasol/saas/client/openapi/api/clusters/get_cluster_connection.py @@ -1,55 +1,58 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.cluster_connection import ClusterConnection -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, database_id: str, cluster_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/connect", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/connect".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),cluster_id=quote(str(cluster_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[ClusterConnection]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | ClusterConnection: if response.status_code == 200: response_200 = ClusterConnection.from_dict(response.json()) + + return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[ClusterConnection]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | ClusterConnection]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -64,8 +67,9 @@ def sync_detailed( cluster_id: str, *, client: AuthenticatedClient, -) -> Response[ClusterConnection]: - """ + +) -> Response[ApiError | ClusterConnection]: + """ Args: account_id (str): database_id (str): @@ -76,13 +80,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[ClusterConnection] - """ + Response[ApiError | ClusterConnection] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, +database_id=database_id, +cluster_id=cluster_id, + ) response = client.get_httpx_client().request( @@ -91,15 +97,15 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, -) -> Optional[ClusterConnection]: - """ + +) -> ApiError | ClusterConnection | None: + """ Args: account_id (str): database_id (str): @@ -110,16 +116,17 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - ClusterConnection - """ + ApiError | ClusterConnection + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, - client=client, - ).parsed +database_id=database_id, +cluster_id=cluster_id, +client=client, + ).parsed async def asyncio_detailed( account_id: str, @@ -127,8 +134,9 @@ async def asyncio_detailed( cluster_id: str, *, client: AuthenticatedClient, -) -> Response[ClusterConnection]: - """ + +) -> Response[ApiError | ClusterConnection]: + """ Args: account_id (str): database_id (str): @@ -139,28 +147,32 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[ClusterConnection] - """ + Response[ApiError | ClusterConnection] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, +database_id=database_id, +cluster_id=cluster_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, -) -> Optional[ClusterConnection]: - """ + +) -> ApiError | ClusterConnection | None: + """ Args: account_id (str): database_id (str): @@ -171,14 +183,14 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - ClusterConnection - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, - client=client, - ) - ).parsed + ApiError | ClusterConnection + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +cluster_id=cluster_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/clusters/list_clusters.py b/exasol/saas/client/openapi/api/clusters/list_clusters.py index fc8afd51..0e0e637a 100644 --- a/exasol/saas/client/openapi/api/clusters/list_clusters.py +++ b/exasol/saas/client/openapi/api/clusters/list_clusters.py @@ -1,59 +1,62 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.cluster import Cluster -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, database_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/clusters", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[list["Cluster"]]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[Cluster]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in _response_200: + for response_200_item_data in (_response_200): response_200_item = Cluster.from_dict(response_200_item_data) + + response_200.append(response_200_item) return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[list["Cluster"]]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[Cluster]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -67,8 +70,9 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, -) -> Response[list["Cluster"]]: - """ + +) -> Response[ApiError | list[Cluster]]: + """ Args: account_id (str): database_id (str): @@ -78,12 +82,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['Cluster']] - """ + Response[ApiError | list[Cluster]] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) response = client.get_httpx_client().request( @@ -92,14 +98,14 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[list["Cluster"]]: - """ + +) -> ApiError | list[Cluster] | None: + """ Args: account_id (str): database_id (str): @@ -109,23 +115,25 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['Cluster'] - """ + ApiError | list[Cluster] + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - client=client, - ).parsed +database_id=database_id, +client=client, + ).parsed async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Response[list["Cluster"]]: - """ + +) -> Response[ApiError | list[Cluster]]: + """ Args: account_id (str): database_id (str): @@ -135,26 +143,30 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['Cluster']] - """ + Response[ApiError | list[Cluster]] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[list["Cluster"]]: - """ + +) -> ApiError | list[Cluster] | None: + """ Args: account_id (str): database_id (str): @@ -164,13 +176,13 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['Cluster'] - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - client=client, - ) - ).parsed + ApiError | list[Cluster] + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/clusters/scale_cluster.py b/exasol/saas/client/openapi/api/clusters/scale_cluster.py index 23037042..b8bf795d 100644 --- a/exasol/saas/client/openapi/api/clusters/scale_cluster.py +++ b/exasol/saas/client/openapi/api/clusters/scale_cluster.py @@ -1,23 +1,17 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.scale_cluster import ScaleCluster -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( @@ -26,36 +20,44 @@ def _get_kwargs( cluster_id: str, *, body: ScaleCluster, + ) -> dict[str, Any]: headers: dict[str, Any] = {} + + + + + _kwargs: dict[str, Any] = { "method": "put", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/scale", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/scale".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),cluster_id=quote(str(cluster_id), safe=""),), } _kwargs["json"] = body.to_dict() + headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -71,8 +73,9 @@ def sync_detailed( *, client: AuthenticatedClient, body: ScaleCluster, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -84,14 +87,16 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, - body=body, +database_id=database_id, +cluster_id=cluster_id, +body=body, + ) response = client.get_httpx_client().request( @@ -100,6 +105,39 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + cluster_id: str, + *, + client: AuthenticatedClient, + body: ScaleCluster, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + cluster_id (str): + body (ScaleCluster): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +cluster_id=cluster_id, +client=client, +body=body, + + ).parsed async def asyncio_detailed( account_id: str, @@ -108,8 +146,9 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: ScaleCluster, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -121,16 +160,54 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, - body=body, +database_id=database_id, +cluster_id=cluster_id, +body=body, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + cluster_id: str, + *, + client: AuthenticatedClient, + body: ScaleCluster, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + cluster_id (str): + body (ScaleCluster): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +cluster_id=cluster_id, +client=client, +body=body, + + )).parsed diff --git a/exasol/saas/client/openapi/api/clusters/start_cluster.py b/exasol/saas/client/openapi/api/clusters/start_cluster.py index 67f0cee6..87ed9e00 100644 --- a/exasol/saas/client/openapi/api/clusters/start_cluster.py +++ b/exasol/saas/client/openapi/api/clusters/start_cluster.py @@ -1,52 +1,54 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, database_id: str, cluster_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "put", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/start", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/start".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),cluster_id=quote(str(cluster_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -61,8 +63,9 @@ def sync_detailed( cluster_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -73,13 +76,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, +database_id=database_id, +cluster_id=cluster_id, + ) response = client.get_httpx_client().request( @@ -88,6 +93,36 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + cluster_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + cluster_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +cluster_id=cluster_id, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, @@ -95,8 +130,9 @@ async def asyncio_detailed( cluster_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -107,15 +143,50 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, +database_id=database_id, +cluster_id=cluster_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + cluster_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + cluster_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +cluster_id=cluster_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/clusters/stop_cluster.py b/exasol/saas/client/openapi/api/clusters/stop_cluster.py index e297520d..8367a2ce 100644 --- a/exasol/saas/client/openapi/api/clusters/stop_cluster.py +++ b/exasol/saas/client/openapi/api/clusters/stop_cluster.py @@ -1,52 +1,54 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, database_id: str, cluster_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "put", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/stop", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/stop".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),cluster_id=quote(str(cluster_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -61,8 +63,9 @@ def sync_detailed( cluster_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -73,13 +76,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, +database_id=database_id, +cluster_id=cluster_id, + ) response = client.get_httpx_client().request( @@ -88,6 +93,36 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + cluster_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + cluster_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +cluster_id=cluster_id, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, @@ -95,8 +130,9 @@ async def asyncio_detailed( cluster_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -107,15 +143,50 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, +database_id=database_id, +cluster_id=cluster_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + cluster_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + cluster_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +cluster_id=cluster_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/clusters/update_cluster.py b/exasol/saas/client/openapi/api/clusters/update_cluster.py index 05655bdd..c369a8d9 100644 --- a/exasol/saas/client/openapi/api/clusters/update_cluster.py +++ b/exasol/saas/client/openapi/api/clusters/update_cluster.py @@ -1,23 +1,17 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.update_cluster import UpdateCluster -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( @@ -26,36 +20,44 @@ def _get_kwargs( cluster_id: str, *, body: UpdateCluster, + ) -> dict[str, Any]: headers: dict[str, Any] = {} + + + + + _kwargs: dict[str, Any] = { "method": "put", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),cluster_id=quote(str(cluster_id), safe=""),), } _kwargs["json"] = body.to_dict() + headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -71,8 +73,9 @@ def sync_detailed( *, client: AuthenticatedClient, body: UpdateCluster, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -84,14 +87,16 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, - body=body, +database_id=database_id, +cluster_id=cluster_id, +body=body, + ) response = client.get_httpx_client().request( @@ -100,6 +105,39 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + cluster_id: str, + *, + client: AuthenticatedClient, + body: UpdateCluster, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + cluster_id (str): + body (UpdateCluster): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +cluster_id=cluster_id, +client=client, +body=body, + + ).parsed async def asyncio_detailed( account_id: str, @@ -108,8 +146,9 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: UpdateCluster, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -121,16 +160,54 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - cluster_id=cluster_id, - body=body, +database_id=database_id, +cluster_id=cluster_id, +body=body, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + cluster_id: str, + *, + client: AuthenticatedClient, + body: UpdateCluster, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + cluster_id (str): + body (UpdateCluster): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +cluster_id=cluster_id, +client=client, +body=body, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/__init__.py b/exasol/saas/client/openapi/api/databases/__init__.py index 2d7c0b23..c9921b5f 100644 --- a/exasol/saas/client/openapi/api/databases/__init__.py +++ b/exasol/saas/client/openapi/api/databases/__init__.py @@ -1 +1 @@ -"""Contains endpoint functions for accessing the API""" +""" Contains endpoint functions for accessing the API """ diff --git a/exasol/saas/client/openapi/api/databases/create_database.py b/exasol/saas/client/openapi/api/databases/create_database.py index d7ca6ffd..33a0aba6 100644 --- a/exasol/saas/client/openapi/api/databases/create_database.py +++ b/exasol/saas/client/openapi/api/databases/create_database.py @@ -1,62 +1,65 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.create_database import CreateDatabase from ...models.exasol_database import ExasolDatabase -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, *, body: CreateDatabase, + ) -> dict[str, Any]: headers: dict[str, Any] = {} + + + + + _kwargs: dict[str, Any] = { "method": "post", - "url": f"/api/v1/accounts/{account_id}/databases", + "url": "/api/v1/accounts/{account_id}/databases".format(account_id=quote(str(account_id), safe=""),), } _kwargs["json"] = body.to_dict() + headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[ExasolDatabase]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | ExasolDatabase: if response.status_code == 200: response_200 = ExasolDatabase.from_dict(response.json()) + + return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) + + + + return response_default -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[ExasolDatabase]: + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | ExasolDatabase]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -70,8 +73,9 @@ def sync_detailed( *, client: AuthenticatedClient, body: CreateDatabase, -) -> Response[ExasolDatabase]: - """ + +) -> Response[ApiError | ExasolDatabase]: + """ Args: account_id (str): body (CreateDatabase): @@ -81,12 +85,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[ExasolDatabase] - """ + Response[ApiError | ExasolDatabase] + """ + kwargs = _get_kwargs( account_id=account_id, - body=body, +body=body, + ) response = client.get_httpx_client().request( @@ -95,14 +101,14 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, *, client: AuthenticatedClient, body: CreateDatabase, -) -> Optional[ExasolDatabase]: - """ + +) -> ApiError | ExasolDatabase | None: + """ Args: account_id (str): body (CreateDatabase): @@ -112,23 +118,25 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - ExasolDatabase - """ + ApiError | ExasolDatabase + """ + return sync_detailed( account_id=account_id, - client=client, - body=body, - ).parsed +client=client, +body=body, + ).parsed async def asyncio_detailed( account_id: str, *, client: AuthenticatedClient, body: CreateDatabase, -) -> Response[ExasolDatabase]: - """ + +) -> Response[ApiError | ExasolDatabase]: + """ Args: account_id (str): body (CreateDatabase): @@ -138,26 +146,30 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[ExasolDatabase] - """ + Response[ApiError | ExasolDatabase] + """ + kwargs = _get_kwargs( account_id=account_id, - body=body, +body=body, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, *, client: AuthenticatedClient, body: CreateDatabase, -) -> Optional[ExasolDatabase]: - """ + +) -> ApiError | ExasolDatabase | None: + """ Args: account_id (str): body (CreateDatabase): @@ -167,13 +179,13 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - ExasolDatabase - """ - - return ( - await asyncio_detailed( - account_id=account_id, - client=client, - body=body, - ) - ).parsed + ApiError | ExasolDatabase + """ + + + return (await asyncio_detailed( + account_id=account_id, +client=client, +body=body, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/create_schedule.py b/exasol/saas/client/openapi/api/databases/create_schedule.py index 65e1f66b..6718d56e 100644 --- a/exasol/saas/client/openapi/api/databases/create_schedule.py +++ b/exasol/saas/client/openapi/api/databases/create_schedule.py @@ -1,23 +1,17 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.schedule import Schedule -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( @@ -25,38 +19,47 @@ def _get_kwargs( database_id: str, *, body: Schedule, + ) -> dict[str, Any]: headers: dict[str, Any] = {} + + + + + _kwargs: dict[str, Any] = { "method": "post", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/schedules", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/schedules".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } _kwargs["json"] = body.to_dict() + headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Schedule]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | Schedule: if response.status_code == 201: response_201 = Schedule.from_dict(response.json()) + + return response_201 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) + + + + return response_default -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Schedule]: + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | Schedule]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -71,8 +74,9 @@ def sync_detailed( *, client: AuthenticatedClient, body: Schedule, -) -> Response[Schedule]: - """ + +) -> Response[ApiError | Schedule]: + """ Args: account_id (str): database_id (str): @@ -83,13 +87,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Schedule] - """ + Response[ApiError | Schedule] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - body=body, +database_id=database_id, +body=body, + ) response = client.get_httpx_client().request( @@ -98,15 +104,15 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, body: Schedule, -) -> Optional[Schedule]: - """ + +) -> ApiError | Schedule | None: + """ Args: account_id (str): database_id (str): @@ -117,16 +123,17 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Schedule - """ + ApiError | Schedule + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - client=client, - body=body, - ).parsed +database_id=database_id, +client=client, +body=body, + ).parsed async def asyncio_detailed( account_id: str, @@ -134,8 +141,9 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: Schedule, -) -> Response[Schedule]: - """ + +) -> Response[ApiError | Schedule]: + """ Args: account_id (str): database_id (str): @@ -146,28 +154,32 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Schedule] - """ + Response[ApiError | Schedule] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - body=body, +database_id=database_id, +body=body, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, body: Schedule, -) -> Optional[Schedule]: - """ + +) -> ApiError | Schedule | None: + """ Args: account_id (str): database_id (str): @@ -178,14 +190,14 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Schedule - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - client=client, - body=body, - ) - ).parsed + ApiError | Schedule + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, +body=body, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/delete_database.py b/exasol/saas/client/openapi/api/databases/delete_database.py index 6d0e782c..401cfc6d 100644 --- a/exasol/saas/client/openapi/api/databases/delete_database.py +++ b/exasol/saas/client/openapi/api/databases/delete_database.py @@ -1,51 +1,53 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, database_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "delete", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -59,8 +61,9 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -70,12 +73,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) response = client.get_httpx_client().request( @@ -84,14 +89,42 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -101,14 +134,46 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/delete_schedule.py b/exasol/saas/client/openapi/api/databases/delete_schedule.py index 6cd6917a..1a9f0b5d 100644 --- a/exasol/saas/client/openapi/api/databases/delete_schedule.py +++ b/exasol/saas/client/openapi/api/databases/delete_schedule.py @@ -1,52 +1,54 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, database_id: str, action_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "delete", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/schedules/{action_id}", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/schedules/{action_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),action_id=quote(str(action_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -61,8 +63,9 @@ def sync_detailed( action_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -73,13 +76,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - action_id=action_id, +database_id=database_id, +action_id=action_id, + ) response = client.get_httpx_client().request( @@ -88,6 +93,36 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + action_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + action_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +action_id=action_id, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, @@ -95,8 +130,9 @@ async def asyncio_detailed( action_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -107,15 +143,50 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - action_id=action_id, +database_id=database_id, +action_id=action_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + action_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + action_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +action_id=action_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/dlhc_activate.py b/exasol/saas/client/openapi/api/databases/dlhc_activate.py index 6feb25b1..458fd09b 100644 --- a/exasol/saas/client/openapi/api/databases/dlhc_activate.py +++ b/exasol/saas/client/openapi/api/databases/dlhc_activate.py @@ -1,51 +1,53 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, database_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "post", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/dlhc-activate", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/dlhc-activate".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 202: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_202 = cast(Any, None) + return response_202 + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -59,8 +61,9 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -70,12 +73,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) response = client.get_httpx_client().request( @@ -84,14 +89,42 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -101,14 +134,46 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/get_database.py b/exasol/saas/client/openapi/api/databases/get_database.py index 16fca77a..9131a3e3 100644 --- a/exasol/saas/client/openapi/api/databases/get_database.py +++ b/exasol/saas/client/openapi/api/databases/get_database.py @@ -1,54 +1,57 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.exasol_database import ExasolDatabase -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, database_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[ExasolDatabase]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | ExasolDatabase: if response.status_code == 200: response_200 = ExasolDatabase.from_dict(response.json()) + + return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[ExasolDatabase]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | ExasolDatabase]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -62,8 +65,9 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, -) -> Response[ExasolDatabase]: - """ + +) -> Response[ApiError | ExasolDatabase]: + """ Args: account_id (str): database_id (str): @@ -73,12 +77,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[ExasolDatabase] - """ + Response[ApiError | ExasolDatabase] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) response = client.get_httpx_client().request( @@ -87,14 +93,14 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[ExasolDatabase]: - """ + +) -> ApiError | ExasolDatabase | None: + """ Args: account_id (str): database_id (str): @@ -104,23 +110,25 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - ExasolDatabase - """ + ApiError | ExasolDatabase + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - client=client, - ).parsed +database_id=database_id, +client=client, + ).parsed async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Response[ExasolDatabase]: - """ + +) -> Response[ApiError | ExasolDatabase]: + """ Args: account_id (str): database_id (str): @@ -130,26 +138,30 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[ExasolDatabase] - """ + Response[ApiError | ExasolDatabase] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[ExasolDatabase]: - """ + +) -> ApiError | ExasolDatabase | None: + """ Args: account_id (str): database_id (str): @@ -159,13 +171,13 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - ExasolDatabase - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - client=client, - ) - ).parsed + ApiError | ExasolDatabase + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/get_database_settings.py b/exasol/saas/client/openapi/api/databases/get_database_settings.py index 6fe90535..f4e82539 100644 --- a/exasol/saas/client/openapi/api/databases/get_database_settings.py +++ b/exasol/saas/client/openapi/api/databases/get_database_settings.py @@ -1,54 +1,57 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.database_settings import DatabaseSettings -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, database_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/settings", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/settings".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[DatabaseSettings]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | DatabaseSettings: if response.status_code == 200: response_200 = DatabaseSettings.from_dict(response.json()) + + return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[DatabaseSettings]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | DatabaseSettings]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -62,8 +65,9 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, -) -> Response[DatabaseSettings]: - """ + +) -> Response[ApiError | DatabaseSettings]: + """ Args: account_id (str): database_id (str): @@ -73,12 +77,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[DatabaseSettings] - """ + Response[ApiError | DatabaseSettings] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) response = client.get_httpx_client().request( @@ -87,14 +93,14 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[DatabaseSettings]: - """ + +) -> ApiError | DatabaseSettings | None: + """ Args: account_id (str): database_id (str): @@ -104,23 +110,25 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - DatabaseSettings - """ + ApiError | DatabaseSettings + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - client=client, - ).parsed +database_id=database_id, +client=client, + ).parsed async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Response[DatabaseSettings]: - """ + +) -> Response[ApiError | DatabaseSettings]: + """ Args: account_id (str): database_id (str): @@ -130,26 +138,30 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[DatabaseSettings] - """ + Response[ApiError | DatabaseSettings] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[DatabaseSettings]: - """ + +) -> ApiError | DatabaseSettings | None: + """ Args: account_id (str): database_id (str): @@ -159,13 +171,13 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - DatabaseSettings - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - client=client, - ) - ).parsed + ApiError | DatabaseSettings + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/get_database_upgrade_info.py b/exasol/saas/client/openapi/api/databases/get_database_upgrade_info.py index 7ce75833..f8df3d51 100644 --- a/exasol/saas/client/openapi/api/databases/get_database_upgrade_info.py +++ b/exasol/saas/client/openapi/api/databases/get_database_upgrade_info.py @@ -1,54 +1,57 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.database_upgrade_info import DatabaseUpgradeInfo -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, database_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/upgrade", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/upgrade".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[DatabaseUpgradeInfo]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | DatabaseUpgradeInfo: if response.status_code == 200: response_200 = DatabaseUpgradeInfo.from_dict(response.json()) + + return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[DatabaseUpgradeInfo]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | DatabaseUpgradeInfo]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -62,8 +65,9 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, -) -> Response[DatabaseUpgradeInfo]: - """ + +) -> Response[ApiError | DatabaseUpgradeInfo]: + """ Args: account_id (str): database_id (str): @@ -73,12 +77,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[DatabaseUpgradeInfo] - """ + Response[ApiError | DatabaseUpgradeInfo] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) response = client.get_httpx_client().request( @@ -87,14 +93,14 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[DatabaseUpgradeInfo]: - """ + +) -> ApiError | DatabaseUpgradeInfo | None: + """ Args: account_id (str): database_id (str): @@ -104,23 +110,25 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - DatabaseUpgradeInfo - """ + ApiError | DatabaseUpgradeInfo + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - client=client, - ).parsed +database_id=database_id, +client=client, + ).parsed async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Response[DatabaseUpgradeInfo]: - """ + +) -> Response[ApiError | DatabaseUpgradeInfo]: + """ Args: account_id (str): database_id (str): @@ -130,26 +138,30 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[DatabaseUpgradeInfo] - """ + Response[ApiError | DatabaseUpgradeInfo] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[DatabaseUpgradeInfo]: - """ + +) -> ApiError | DatabaseUpgradeInfo | None: + """ Args: account_id (str): database_id (str): @@ -159,13 +171,13 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - DatabaseUpgradeInfo - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - client=client, - ) - ).parsed + ApiError | DatabaseUpgradeInfo + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/get_dlhc_activate_status.py b/exasol/saas/client/openapi/api/databases/get_dlhc_activate_status.py index 4e4df47f..6863e193 100644 --- a/exasol/saas/client/openapi/api/databases/get_dlhc_activate_status.py +++ b/exasol/saas/client/openapi/api/databases/get_dlhc_activate_status.py @@ -1,54 +1,57 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.dlhc_activate_status import DlhcActivateStatus -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, database_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/dlhc-activate", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/dlhc-activate".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[DlhcActivateStatus]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | DlhcActivateStatus: if response.status_code == 200: response_200 = DlhcActivateStatus.from_dict(response.json()) + + return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[DlhcActivateStatus]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | DlhcActivateStatus]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -62,8 +65,9 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, -) -> Response[DlhcActivateStatus]: - """ + +) -> Response[ApiError | DlhcActivateStatus]: + """ Args: account_id (str): database_id (str): @@ -73,12 +77,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[DlhcActivateStatus] - """ + Response[ApiError | DlhcActivateStatus] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) response = client.get_httpx_client().request( @@ -87,14 +93,14 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[DlhcActivateStatus]: - """ + +) -> ApiError | DlhcActivateStatus | None: + """ Args: account_id (str): database_id (str): @@ -104,23 +110,25 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - DlhcActivateStatus - """ + ApiError | DlhcActivateStatus + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - client=client, - ).parsed +database_id=database_id, +client=client, + ).parsed async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Response[DlhcActivateStatus]: - """ + +) -> Response[ApiError | DlhcActivateStatus]: + """ Args: account_id (str): database_id (str): @@ -130,26 +138,30 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[DlhcActivateStatus] - """ + Response[ApiError | DlhcActivateStatus] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[DlhcActivateStatus]: - """ + +) -> ApiError | DlhcActivateStatus | None: + """ Args: account_id (str): database_id (str): @@ -159,13 +171,13 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - DlhcActivateStatus - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - client=client, - ) - ).parsed + ApiError | DlhcActivateStatus + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/list_databases.py b/exasol/saas/client/openapi/api/databases/list_databases.py index e67b2a5e..b01ed919 100644 --- a/exasol/saas/client/openapi/api/databases/list_databases.py +++ b/exasol/saas/client/openapi/api/databases/list_databases.py @@ -1,58 +1,61 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.exasol_database import ExasolDatabase -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/databases", + "url": "/api/v1/accounts/{account_id}/databases".format(account_id=quote(str(account_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[list["ExasolDatabase"]]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[ExasolDatabase]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in _response_200: + for response_200_item_data in (_response_200): response_200_item = ExasolDatabase.from_dict(response_200_item_data) + + response_200.append(response_200_item) return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[list["ExasolDatabase"]]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[ExasolDatabase]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -65,8 +68,9 @@ def sync_detailed( account_id: str, *, client: AuthenticatedClient, -) -> Response[list["ExasolDatabase"]]: - """ + +) -> Response[ApiError | list[ExasolDatabase]]: + """ Args: account_id (str): @@ -75,11 +79,13 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['ExasolDatabase']] - """ + Response[ApiError | list[ExasolDatabase]] + """ + kwargs = _get_kwargs( account_id=account_id, + ) response = client.get_httpx_client().request( @@ -88,13 +94,13 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, *, client: AuthenticatedClient, -) -> Optional[list["ExasolDatabase"]]: - """ + +) -> ApiError | list[ExasolDatabase] | None: + """ Args: account_id (str): @@ -103,21 +109,23 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['ExasolDatabase'] - """ + ApiError | list[ExasolDatabase] + """ + return sync_detailed( account_id=account_id, - client=client, - ).parsed +client=client, + ).parsed async def asyncio_detailed( account_id: str, *, client: AuthenticatedClient, -) -> Response[list["ExasolDatabase"]]: - """ + +) -> Response[ApiError | list[ExasolDatabase]]: + """ Args: account_id (str): @@ -126,24 +134,28 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['ExasolDatabase']] - """ + Response[ApiError | list[ExasolDatabase]] + """ + kwargs = _get_kwargs( account_id=account_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, *, client: AuthenticatedClient, -) -> Optional[list["ExasolDatabase"]]: - """ + +) -> ApiError | list[ExasolDatabase] | None: + """ Args: account_id (str): @@ -152,12 +164,12 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['ExasolDatabase'] - """ - - return ( - await asyncio_detailed( - account_id=account_id, - client=client, - ) - ).parsed + ApiError | list[ExasolDatabase] + """ + + + return (await asyncio_detailed( + account_id=account_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/list_schedules.py b/exasol/saas/client/openapi/api/databases/list_schedules.py index 2e78c9c4..ca5b53c0 100644 --- a/exasol/saas/client/openapi/api/databases/list_schedules.py +++ b/exasol/saas/client/openapi/api/databases/list_schedules.py @@ -1,59 +1,62 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.schedule import Schedule -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, database_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/schedules", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/schedules".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[list["Schedule"]]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[Schedule]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in _response_200: + for response_200_item_data in (_response_200): response_200_item = Schedule.from_dict(response_200_item_data) + + response_200.append(response_200_item) return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[list["Schedule"]]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[Schedule]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -67,8 +70,9 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, -) -> Response[list["Schedule"]]: - """ + +) -> Response[ApiError | list[Schedule]]: + """ Args: account_id (str): database_id (str): @@ -78,12 +82,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['Schedule']] - """ + Response[ApiError | list[Schedule]] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) response = client.get_httpx_client().request( @@ -92,14 +98,14 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[list["Schedule"]]: - """ + +) -> ApiError | list[Schedule] | None: + """ Args: account_id (str): database_id (str): @@ -109,23 +115,25 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['Schedule'] - """ + ApiError | list[Schedule] + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - client=client, - ).parsed +database_id=database_id, +client=client, + ).parsed async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Response[list["Schedule"]]: - """ + +) -> Response[ApiError | list[Schedule]]: + """ Args: account_id (str): database_id (str): @@ -135,26 +143,30 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['Schedule']] - """ + Response[ApiError | list[Schedule]] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[list["Schedule"]]: - """ + +) -> ApiError | list[Schedule] | None: + """ Args: account_id (str): database_id (str): @@ -164,13 +176,13 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['Schedule'] - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - client=client, - ) - ).parsed + ApiError | list[Schedule] + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/set_auto_updates_database.py b/exasol/saas/client/openapi/api/databases/set_auto_updates_database.py index 4eee5e8a..70cc6011 100644 --- a/exasol/saas/client/openapi/api/databases/set_auto_updates_database.py +++ b/exasol/saas/client/openapi/api/databases/set_auto_updates_database.py @@ -1,23 +1,17 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.set_auto_updates_database import SetAutoUpdatesDatabase -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( @@ -25,36 +19,44 @@ def _get_kwargs( database_id: str, *, body: SetAutoUpdatesDatabase, + ) -> dict[str, Any]: headers: dict[str, Any] = {} + + + + + _kwargs: dict[str, Any] = { "method": "patch", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/settings", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/settings".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } _kwargs["json"] = body.to_dict() + headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -69,8 +71,9 @@ def sync_detailed( *, client: AuthenticatedClient, body: SetAutoUpdatesDatabase, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -81,13 +84,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - body=body, +database_id=database_id, +body=body, + ) response = client.get_httpx_client().request( @@ -96,6 +101,36 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + *, + client: AuthenticatedClient, + body: SetAutoUpdatesDatabase, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + body (SetAutoUpdatesDatabase): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +client=client, +body=body, + + ).parsed async def asyncio_detailed( account_id: str, @@ -103,8 +138,9 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: SetAutoUpdatesDatabase, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -115,15 +151,50 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - body=body, +database_id=database_id, +body=body, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + *, + client: AuthenticatedClient, + body: SetAutoUpdatesDatabase, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + body (SetAutoUpdatesDatabase): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, +body=body, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/start_database.py b/exasol/saas/client/openapi/api/databases/start_database.py index a79d1b4f..fedb3cda 100644 --- a/exasol/saas/client/openapi/api/databases/start_database.py +++ b/exasol/saas/client/openapi/api/databases/start_database.py @@ -1,51 +1,53 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, database_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "put", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/start", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/start".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -59,8 +61,9 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -70,12 +73,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) response = client.get_httpx_client().request( @@ -84,14 +89,42 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -101,14 +134,46 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/stop_database.py b/exasol/saas/client/openapi/api/databases/stop_database.py index 27d9b303..2bc9ed21 100644 --- a/exasol/saas/client/openapi/api/databases/stop_database.py +++ b/exasol/saas/client/openapi/api/databases/stop_database.py @@ -1,51 +1,53 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, database_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "put", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/stop", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/stop".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -59,8 +61,9 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -70,12 +73,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) response = client.get_httpx_client().request( @@ -84,14 +89,42 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -101,14 +134,46 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/update_database.py b/exasol/saas/client/openapi/api/databases/update_database.py index 2dc13c8e..ee4e0165 100644 --- a/exasol/saas/client/openapi/api/databases/update_database.py +++ b/exasol/saas/client/openapi/api/databases/update_database.py @@ -1,23 +1,17 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.update_database import UpdateDatabase -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( @@ -25,36 +19,44 @@ def _get_kwargs( database_id: str, *, body: UpdateDatabase, + ) -> dict[str, Any]: headers: dict[str, Any] = {} + + + + + _kwargs: dict[str, Any] = { "method": "put", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } _kwargs["json"] = body.to_dict() + headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -69,8 +71,9 @@ def sync_detailed( *, client: AuthenticatedClient, body: UpdateDatabase, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -81,13 +84,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - body=body, +database_id=database_id, +body=body, + ) response = client.get_httpx_client().request( @@ -96,6 +101,36 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + *, + client: AuthenticatedClient, + body: UpdateDatabase, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + body (UpdateDatabase): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +client=client, +body=body, + + ).parsed async def asyncio_detailed( account_id: str, @@ -103,8 +138,9 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: UpdateDatabase, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -115,15 +151,50 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - body=body, +database_id=database_id, +body=body, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + *, + client: AuthenticatedClient, + body: UpdateDatabase, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + body (UpdateDatabase): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, +body=body, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/update_schedule_cron_rule.py b/exasol/saas/client/openapi/api/databases/update_schedule_cron_rule.py index 9d1d5512..d02cb23a 100644 --- a/exasol/saas/client/openapi/api/databases/update_schedule_cron_rule.py +++ b/exasol/saas/client/openapi/api/databases/update_schedule_cron_rule.py @@ -1,23 +1,17 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.update_schedule_cron_rule import UpdateScheduleCronRule -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( @@ -26,36 +20,44 @@ def _get_kwargs( action_id: str, *, body: UpdateScheduleCronRule, + ) -> dict[str, Any]: headers: dict[str, Any] = {} + + + + + _kwargs: dict[str, Any] = { "method": "patch", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/schedules/{action_id}/cronRule", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/schedules/{action_id}/cronRule".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),action_id=quote(str(action_id), safe=""),), } _kwargs["json"] = body.to_dict() + headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -71,8 +73,9 @@ def sync_detailed( *, client: AuthenticatedClient, body: UpdateScheduleCronRule, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -84,14 +87,16 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - action_id=action_id, - body=body, +database_id=database_id, +action_id=action_id, +body=body, + ) response = client.get_httpx_client().request( @@ -100,6 +105,39 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + action_id: str, + *, + client: AuthenticatedClient, + body: UpdateScheduleCronRule, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + action_id (str): + body (UpdateScheduleCronRule): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +action_id=action_id, +client=client, +body=body, + + ).parsed async def asyncio_detailed( account_id: str, @@ -108,8 +146,9 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: UpdateScheduleCronRule, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -121,16 +160,54 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - action_id=action_id, - body=body, +database_id=database_id, +action_id=action_id, +body=body, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + action_id: str, + *, + client: AuthenticatedClient, + body: UpdateScheduleCronRule, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + action_id (str): + body (UpdateScheduleCronRule): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +action_id=action_id, +client=client, +body=body, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/update_schedule_state.py b/exasol/saas/client/openapi/api/databases/update_schedule_state.py index 77afa863..581f8129 100644 --- a/exasol/saas/client/openapi/api/databases/update_schedule_state.py +++ b/exasol/saas/client/openapi/api/databases/update_schedule_state.py @@ -1,23 +1,17 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.update_schedule_state import UpdateScheduleState -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( @@ -26,36 +20,44 @@ def _get_kwargs( action_id: str, *, body: UpdateScheduleState, + ) -> dict[str, Any]: headers: dict[str, Any] = {} + + + + + _kwargs: dict[str, Any] = { "method": "patch", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/schedules/{action_id}/state", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/schedules/{action_id}/state".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),action_id=quote(str(action_id), safe=""),), } _kwargs["json"] = body.to_dict() + headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -71,8 +73,9 @@ def sync_detailed( *, client: AuthenticatedClient, body: UpdateScheduleState, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -84,14 +87,16 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - action_id=action_id, - body=body, +database_id=database_id, +action_id=action_id, +body=body, + ) response = client.get_httpx_client().request( @@ -100,6 +105,39 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + action_id: str, + *, + client: AuthenticatedClient, + body: UpdateScheduleState, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + action_id (str): + body (UpdateScheduleState): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +action_id=action_id, +client=client, +body=body, + + ).parsed async def asyncio_detailed( account_id: str, @@ -108,8 +146,9 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: UpdateScheduleState, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -121,16 +160,54 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - action_id=action_id, - body=body, +database_id=database_id, +action_id=action_id, +body=body, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + action_id: str, + *, + client: AuthenticatedClient, + body: UpdateScheduleState, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + action_id (str): + body (UpdateScheduleState): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +action_id=action_id, +client=client, +body=body, + + )).parsed diff --git a/exasol/saas/client/openapi/api/databases/upgrade_database.py b/exasol/saas/client/openapi/api/databases/upgrade_database.py index ba261a9e..f8c72d53 100644 --- a/exasol/saas/client/openapi/api/databases/upgrade_database.py +++ b/exasol/saas/client/openapi/api/databases/upgrade_database.py @@ -1,51 +1,53 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, database_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "put", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/upgrade", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/upgrade".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -59,8 +61,9 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -70,12 +73,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) response = client.get_httpx_client().request( @@ -84,14 +89,42 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -101,14 +134,46 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/extensions/__init__.py b/exasol/saas/client/openapi/api/extensions/__init__.py index 2d7c0b23..c9921b5f 100644 --- a/exasol/saas/client/openapi/api/extensions/__init__.py +++ b/exasol/saas/client/openapi/api/extensions/__init__.py @@ -1 +1 @@ -"""Contains endpoint functions for accessing the API""" +""" Contains endpoint functions for accessing the API """ diff --git a/exasol/saas/client/openapi/api/extensions/create_extension_instance.py b/exasol/saas/client/openapi/api/extensions/create_extension_instance.py index 7fbde518..f9b806e0 100644 --- a/exasol/saas/client/openapi/api/extensions/create_extension_instance.py +++ b/exasol/saas/client/openapi/api/extensions/create_extension_instance.py @@ -1,25 +1,18 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + from ...models.api_error import ApiError from ...models.create_extension_instance import CreateExtensionInstance from ...models.extension_instance import ExtensionInstance -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( @@ -29,42 +22,54 @@ def _get_kwargs( extension_version: str, *, body: CreateExtensionInstance, + ) -> dict[str, Any]: headers: dict[str, Any] = {} + + + + + _kwargs: dict[str, Any] = { "method": "post", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/instances", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/instances".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),extension_id=quote(str(extension_id), safe=""),extension_version=quote(str(extension_version), safe=""),), } _kwargs["json"] = body.to_dict() + headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Union[ApiError, ExtensionInstance]]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | ExtensionInstance: if response.status_code == 200: response_200 = ExtensionInstance.from_dict(response.json()) + + return response_200 + if response.status_code == 422: response_422 = ApiError.from_dict(response.json()) + + return response_422 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + + response_default = ApiError.from_dict(response.json()) + -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Union[ApiError, ExtensionInstance]]: + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | ExtensionInstance]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -81,8 +86,9 @@ def sync_detailed( *, client: AuthenticatedClient, body: CreateExtensionInstance, -) -> Response[Union[ApiError, ExtensionInstance]]: - """ + +) -> Response[ApiError | ExtensionInstance]: + """ Args: account_id (str): database_id (str): @@ -95,15 +101,17 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Union[ApiError, ExtensionInstance]] - """ + Response[ApiError | ExtensionInstance] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, - body=body, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +body=body, + ) response = client.get_httpx_client().request( @@ -112,7 +120,6 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, @@ -121,8 +128,9 @@ def sync( *, client: AuthenticatedClient, body: CreateExtensionInstance, -) -> Optional[Union[ApiError, ExtensionInstance]]: - """ + +) -> ApiError | ExtensionInstance | None: + """ Args: account_id (str): database_id (str): @@ -135,18 +143,19 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Union[ApiError, ExtensionInstance] - """ + ApiError | ExtensionInstance + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, - client=client, - body=body, - ).parsed +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +client=client, +body=body, + ).parsed async def asyncio_detailed( account_id: str, @@ -156,8 +165,9 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: CreateExtensionInstance, -) -> Response[Union[ApiError, ExtensionInstance]]: - """ + +) -> Response[ApiError | ExtensionInstance]: + """ Args: account_id (str): database_id (str): @@ -170,22 +180,25 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Union[ApiError, ExtensionInstance]] - """ + Response[ApiError | ExtensionInstance] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, - body=body, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +body=body, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, @@ -194,8 +207,9 @@ async def asyncio( *, client: AuthenticatedClient, body: CreateExtensionInstance, -) -> Optional[Union[ApiError, ExtensionInstance]]: - """ + +) -> ApiError | ExtensionInstance | None: + """ Args: account_id (str): database_id (str): @@ -208,16 +222,16 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Union[ApiError, ExtensionInstance] - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, - client=client, - body=body, - ) - ).parsed + ApiError | ExtensionInstance + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +client=client, +body=body, + + )).parsed diff --git a/exasol/saas/client/openapi/api/extensions/delete_extension_instance.py b/exasol/saas/client/openapi/api/extensions/delete_extension_instance.py index e5f41d74..b067b39b 100644 --- a/exasol/saas/client/openapi/api/extensions/delete_extension_instance.py +++ b/exasol/saas/client/openapi/api/extensions/delete_extension_instance.py @@ -1,22 +1,16 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( @@ -25,30 +19,38 @@ def _get_kwargs( extension_id: str, extension_version: str, instance_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "delete", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/instances/{instance_id}", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/instances/{instance_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),extension_id=quote(str(extension_id), safe=""),extension_version=quote(str(extension_version), safe=""),instance_id=quote(str(instance_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + + response_default = ApiError.from_dict(response.json()) + -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -65,8 +67,9 @@ def sync_detailed( instance_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -79,15 +82,17 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, - instance_id=instance_id, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +instance_id=instance_id, + ) response = client.get_httpx_client().request( @@ -96,6 +101,42 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + extension_id: str, + extension_version: str, + instance_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + extension_id (str): + extension_version (str): + instance_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +instance_id=instance_id, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, @@ -105,8 +146,9 @@ async def asyncio_detailed( instance_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -119,17 +161,58 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, - instance_id=instance_id, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +instance_id=instance_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + extension_id: str, + extension_version: str, + instance_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + extension_id (str): + extension_version (str): + instance_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +instance_id=instance_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/extensions/get_extension.py b/exasol/saas/client/openapi/api/extensions/get_extension.py index d607b0cc..b2bf49cd 100644 --- a/exasol/saas/client/openapi/api/extensions/get_extension.py +++ b/exasol/saas/client/openapi/api/extensions/get_extension.py @@ -1,24 +1,17 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + from ...models.api_error import ApiError from ...models.extension_detail import ExtensionDetail -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( @@ -26,36 +19,48 @@ def _get_kwargs( database_id: str, extension_id: str, extension_version: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),extension_id=quote(str(extension_id), safe=""),extension_version=quote(str(extension_version), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Union[ApiError, ExtensionDetail]]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | ExtensionDetail: if response.status_code == 200: response_200 = ExtensionDetail.from_dict(response.json()) + + return response_200 + if response.status_code == 422: response_422 = ApiError.from_dict(response.json()) + + return response_422 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + + response_default = ApiError.from_dict(response.json()) + -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Union[ApiError, ExtensionDetail]]: + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | ExtensionDetail]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -71,8 +76,9 @@ def sync_detailed( extension_version: str, *, client: AuthenticatedClient, -) -> Response[Union[ApiError, ExtensionDetail]]: - """ + +) -> Response[ApiError | ExtensionDetail]: + """ Args: account_id (str): database_id (str): @@ -84,14 +90,16 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Union[ApiError, ExtensionDetail]] - """ + Response[ApiError | ExtensionDetail] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, + ) response = client.get_httpx_client().request( @@ -100,7 +108,6 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, @@ -108,8 +115,9 @@ def sync( extension_version: str, *, client: AuthenticatedClient, -) -> Optional[Union[ApiError, ExtensionDetail]]: - """ + +) -> ApiError | ExtensionDetail | None: + """ Args: account_id (str): database_id (str): @@ -121,17 +129,18 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Union[ApiError, ExtensionDetail] - """ + ApiError | ExtensionDetail + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, - client=client, - ).parsed +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +client=client, + ).parsed async def asyncio_detailed( account_id: str, @@ -140,8 +149,9 @@ async def asyncio_detailed( extension_version: str, *, client: AuthenticatedClient, -) -> Response[Union[ApiError, ExtensionDetail]]: - """ + +) -> Response[ApiError | ExtensionDetail]: + """ Args: account_id (str): database_id (str): @@ -153,21 +163,24 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Union[ApiError, ExtensionDetail]] - """ + Response[ApiError | ExtensionDetail] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, @@ -175,8 +188,9 @@ async def asyncio( extension_version: str, *, client: AuthenticatedClient, -) -> Optional[Union[ApiError, ExtensionDetail]]: - """ + +) -> ApiError | ExtensionDetail | None: + """ Args: account_id (str): database_id (str): @@ -188,15 +202,15 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Union[ApiError, ExtensionDetail] - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, - client=client, - ) - ).parsed + ApiError | ExtensionDetail + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/extensions/install_extension.py b/exasol/saas/client/openapi/api/extensions/install_extension.py index a3f7f4f5..12d6992f 100644 --- a/exasol/saas/client/openapi/api/extensions/install_extension.py +++ b/exasol/saas/client/openapi/api/extensions/install_extension.py @@ -1,22 +1,16 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( @@ -24,30 +18,38 @@ def _get_kwargs( database_id: str, extension_id: str, extension_version: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "put", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/install", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/install".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),extension_id=quote(str(extension_id), safe=""),extension_version=quote(str(extension_version), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -63,8 +65,9 @@ def sync_detailed( extension_version: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -76,14 +79,16 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, + ) response = client.get_httpx_client().request( @@ -92,6 +97,39 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + extension_id: str, + extension_version: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + extension_id (str): + extension_version (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, @@ -100,8 +138,9 @@ async def asyncio_detailed( extension_version: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -113,16 +152,54 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + extension_id: str, + extension_version: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + extension_id (str): + extension_version (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/extensions/list_extension_instances.py b/exasol/saas/client/openapi/api/extensions/list_extension_instances.py index fe6d111e..a051ded9 100644 --- a/exasol/saas/client/openapi/api/extensions/list_extension_instances.py +++ b/exasol/saas/client/openapi/api/extensions/list_extension_instances.py @@ -1,24 +1,17 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + from ...models.api_error import ApiError from ...models.extension_instance import ExtensionInstance -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( @@ -26,41 +19,53 @@ def _get_kwargs( database_id: str, extension_id: str, extension_version: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/instances", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/instances".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),extension_id=quote(str(extension_id), safe=""),extension_version=quote(str(extension_version), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Union[ApiError, list["ExtensionInstance"]]]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[ExtensionInstance]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in _response_200: + for response_200_item_data in (_response_200): response_200_item = ExtensionInstance.from_dict(response_200_item_data) + + response_200.append(response_200_item) return response_200 + if response.status_code == 422: response_422 = ApiError.from_dict(response.json()) + + return response_422 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + + response_default = ApiError.from_dict(response.json()) + -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Union[ApiError, list["ExtensionInstance"]]]: + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[ExtensionInstance]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -76,8 +81,9 @@ def sync_detailed( extension_version: str, *, client: AuthenticatedClient, -) -> Response[Union[ApiError, list["ExtensionInstance"]]]: - """ + +) -> Response[ApiError | list[ExtensionInstance]]: + """ Args: account_id (str): database_id (str): @@ -89,14 +95,16 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Union[ApiError, list['ExtensionInstance']]] - """ + Response[ApiError | list[ExtensionInstance]] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, + ) response = client.get_httpx_client().request( @@ -105,7 +113,6 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, @@ -113,8 +120,9 @@ def sync( extension_version: str, *, client: AuthenticatedClient, -) -> Optional[Union[ApiError, list["ExtensionInstance"]]]: - """ + +) -> ApiError | list[ExtensionInstance] | None: + """ Args: account_id (str): database_id (str): @@ -126,17 +134,18 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Union[ApiError, list['ExtensionInstance']] - """ + ApiError | list[ExtensionInstance] + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, - client=client, - ).parsed +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +client=client, + ).parsed async def asyncio_detailed( account_id: str, @@ -145,8 +154,9 @@ async def asyncio_detailed( extension_version: str, *, client: AuthenticatedClient, -) -> Response[Union[ApiError, list["ExtensionInstance"]]]: - """ + +) -> Response[ApiError | list[ExtensionInstance]]: + """ Args: account_id (str): database_id (str): @@ -158,21 +168,24 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Union[ApiError, list['ExtensionInstance']]] - """ + Response[ApiError | list[ExtensionInstance]] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, @@ -180,8 +193,9 @@ async def asyncio( extension_version: str, *, client: AuthenticatedClient, -) -> Optional[Union[ApiError, list["ExtensionInstance"]]]: - """ + +) -> ApiError | list[ExtensionInstance] | None: + """ Args: account_id (str): database_id (str): @@ -193,15 +207,15 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Union[ApiError, list['ExtensionInstance']] - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, - client=client, - ) - ).parsed + ApiError | list[ExtensionInstance] + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/extensions/list_extensions.py b/exasol/saas/client/openapi/api/extensions/list_extensions.py index 1f33ef02..4ce62bff 100644 --- a/exasol/saas/client/openapi/api/extensions/list_extensions.py +++ b/exasol/saas/client/openapi/api/extensions/list_extensions.py @@ -1,59 +1,62 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.extension import Extension -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, database_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/extensions", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[list["Extension"]]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[Extension]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in _response_200: + for response_200_item_data in (_response_200): response_200_item = Extension.from_dict(response_200_item_data) + + response_200.append(response_200_item) return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[list["Extension"]]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[Extension]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -67,8 +70,9 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, -) -> Response[list["Extension"]]: - """ + +) -> Response[ApiError | list[Extension]]: + """ Args: account_id (str): database_id (str): @@ -78,12 +82,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['Extension']] - """ + Response[ApiError | list[Extension]] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) response = client.get_httpx_client().request( @@ -92,14 +98,14 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[list["Extension"]]: - """ + +) -> ApiError | list[Extension] | None: + """ Args: account_id (str): database_id (str): @@ -109,23 +115,25 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['Extension'] - """ + ApiError | list[Extension] + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - client=client, - ).parsed +database_id=database_id, +client=client, + ).parsed async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Response[list["Extension"]]: - """ + +) -> Response[ApiError | list[Extension]]: + """ Args: account_id (str): database_id (str): @@ -135,26 +143,30 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['Extension']] - """ + Response[ApiError | list[Extension]] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[list["Extension"]]: - """ + +) -> ApiError | list[Extension] | None: + """ Args: account_id (str): database_id (str): @@ -164,13 +176,13 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['Extension'] - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - client=client, - ) - ).parsed + ApiError | list[Extension] + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/extensions/uninstall_extension.py b/exasol/saas/client/openapi/api/extensions/uninstall_extension.py index 7e415e2a..22e550db 100644 --- a/exasol/saas/client/openapi/api/extensions/uninstall_extension.py +++ b/exasol/saas/client/openapi/api/extensions/uninstall_extension.py @@ -1,22 +1,16 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( @@ -24,30 +18,38 @@ def _get_kwargs( database_id: str, extension_id: str, extension_version: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "put", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/uninstall", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/uninstall".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),extension_id=quote(str(extension_id), safe=""),extension_version=quote(str(extension_version), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -63,8 +65,9 @@ def sync_detailed( extension_version: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -76,14 +79,16 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, + ) response = client.get_httpx_client().request( @@ -92,6 +97,39 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + extension_id: str, + extension_version: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + extension_id (str): + extension_version (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, @@ -100,8 +138,9 @@ async def asyncio_detailed( extension_version: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -113,16 +152,54 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - extension_id=extension_id, - extension_version=extension_version, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + extension_id: str, + extension_version: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + extension_id (str): + extension_version (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +extension_id=extension_id, +extension_version=extension_version, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/files/__init__.py b/exasol/saas/client/openapi/api/files/__init__.py index 2d7c0b23..c9921b5f 100644 --- a/exasol/saas/client/openapi/api/files/__init__.py +++ b/exasol/saas/client/openapi/api/files/__init__.py @@ -1 +1 @@ -"""Contains endpoint functions for accessing the API""" +""" Contains endpoint functions for accessing the API """ diff --git a/exasol/saas/client/openapi/api/files/create_folder.py b/exasol/saas/client/openapi/api/files/create_folder.py index 689f0e6b..73794dbd 100644 --- a/exasol/saas/client/openapi/api/files/create_folder.py +++ b/exasol/saas/client/openapi/api/files/create_folder.py @@ -1,52 +1,54 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, database_id: str, key: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "post", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/folder/{key}", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/folder/{key}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),key=quote(str(key), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -61,8 +63,9 @@ def sync_detailed( key: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -73,13 +76,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - key=key, +database_id=database_id, +key=key, + ) response = client.get_httpx_client().request( @@ -88,6 +93,36 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + key: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + key (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +key=key, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, @@ -95,8 +130,9 @@ async def asyncio_detailed( key: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -107,15 +143,50 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - key=key, +database_id=database_id, +key=key, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + key: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + key (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +key=key, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/files/delete_file.py b/exasol/saas/client/openapi/api/files/delete_file.py index 33bdb6e6..9efeb1b7 100644 --- a/exasol/saas/client/openapi/api/files/delete_file.py +++ b/exasol/saas/client/openapi/api/files/delete_file.py @@ -1,52 +1,54 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, database_id: str, key: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "delete", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/files/{key}", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/files/{key}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),key=quote(str(key), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -61,8 +63,9 @@ def sync_detailed( key: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -73,13 +76,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - key=key, +database_id=database_id, +key=key, + ) response = client.get_httpx_client().request( @@ -88,6 +93,36 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + key: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + key (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +key=key, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, @@ -95,8 +130,9 @@ async def asyncio_detailed( key: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -107,15 +143,50 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - key=key, +database_id=database_id, +key=key, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + key: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + key (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +key=key, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/files/delete_folder.py b/exasol/saas/client/openapi/api/files/delete_folder.py index 5f9293ad..0d9a9475 100644 --- a/exasol/saas/client/openapi/api/files/delete_folder.py +++ b/exasol/saas/client/openapi/api/files/delete_folder.py @@ -1,52 +1,54 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, database_id: str, key: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "delete", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/folder/{key}", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/folder/{key}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),key=quote(str(key), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -61,8 +63,9 @@ def sync_detailed( key: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -73,13 +76,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - key=key, +database_id=database_id, +key=key, + ) response = client.get_httpx_client().request( @@ -88,6 +93,36 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + database_id: str, + key: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + key (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +database_id=database_id, +key=key, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, @@ -95,8 +130,9 @@ async def asyncio_detailed( key: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): database_id (str): @@ -107,15 +143,50 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - key=key, +database_id=database_id, +key=key, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + database_id: str, + key: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + database_id (str): + key (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +key=key, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/files/download_file.py b/exasol/saas/client/openapi/api/files/download_file.py index d68fc341..751ca443 100644 --- a/exasol/saas/client/openapi/api/files/download_file.py +++ b/exasol/saas/client/openapi/api/files/download_file.py @@ -1,55 +1,58 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.download_file import DownloadFile -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, database_id: str, key: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/internal/accounts/{account_id}/databases/{database_id}/files/{key}", + "url": "/api/v1/internal/accounts/{account_id}/databases/{database_id}/files/{key}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),key=quote(str(key), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[DownloadFile]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | DownloadFile: if response.status_code == 200: response_200 = DownloadFile.from_dict(response.json()) + + return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[DownloadFile]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | DownloadFile]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -64,8 +67,9 @@ def sync_detailed( key: str, *, client: AuthenticatedClient, -) -> Response[DownloadFile]: - """ + +) -> Response[ApiError | DownloadFile]: + """ Args: account_id (str): database_id (str): @@ -76,13 +80,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[DownloadFile] - """ + Response[ApiError | DownloadFile] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - key=key, +database_id=database_id, +key=key, + ) response = client.get_httpx_client().request( @@ -91,15 +97,15 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, -) -> Optional[DownloadFile]: - """ + +) -> ApiError | DownloadFile | None: + """ Args: account_id (str): database_id (str): @@ -110,16 +116,17 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - DownloadFile - """ + ApiError | DownloadFile + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - key=key, - client=client, - ).parsed +database_id=database_id, +key=key, +client=client, + ).parsed async def asyncio_detailed( account_id: str, @@ -127,8 +134,9 @@ async def asyncio_detailed( key: str, *, client: AuthenticatedClient, -) -> Response[DownloadFile]: - """ + +) -> Response[ApiError | DownloadFile]: + """ Args: account_id (str): database_id (str): @@ -139,28 +147,32 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[DownloadFile] - """ + Response[ApiError | DownloadFile] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - key=key, +database_id=database_id, +key=key, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, -) -> Optional[DownloadFile]: - """ + +) -> ApiError | DownloadFile | None: + """ Args: account_id (str): database_id (str): @@ -171,14 +183,14 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - DownloadFile - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - key=key, - client=client, - ) - ).parsed + ApiError | DownloadFile + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +key=key, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/files/list_files.py b/exasol/saas/client/openapi/api/files/list_files.py index c1fd9a22..b16bb406 100644 --- a/exasol/saas/client/openapi/api/files/list_files.py +++ b/exasol/saas/client/openapi/api/files/list_files.py @@ -1,59 +1,62 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.file import File -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, database_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/files", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/files".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[list["File"]]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[File]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in _response_200: + for response_200_item_data in (_response_200): response_200_item = File.from_dict(response_200_item_data) + + response_200.append(response_200_item) return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[list["File"]]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[File]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -67,8 +70,9 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, -) -> Response[list["File"]]: - """ + +) -> Response[ApiError | list[File]]: + """ Args: account_id (str): database_id (str): @@ -78,12 +82,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['File']] - """ + Response[ApiError | list[File]] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) response = client.get_httpx_client().request( @@ -92,14 +98,14 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[list["File"]]: - """ + +) -> ApiError | list[File] | None: + """ Args: account_id (str): database_id (str): @@ -109,23 +115,25 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['File'] - """ + ApiError | list[File] + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - client=client, - ).parsed +database_id=database_id, +client=client, + ).parsed async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Response[list["File"]]: - """ + +) -> Response[ApiError | list[File]]: + """ Args: account_id (str): database_id (str): @@ -135,26 +143,30 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['File']] - """ + Response[ApiError | list[File]] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, +database_id=database_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, -) -> Optional[list["File"]]: - """ + +) -> ApiError | list[File] | None: + """ Args: account_id (str): database_id (str): @@ -164,13 +176,13 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['File'] - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - client=client, - ) - ).parsed + ApiError | list[File] + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/files/upload_file.py b/exasol/saas/client/openapi/api/files/upload_file.py index 191b21da..29a69a06 100644 --- a/exasol/saas/client/openapi/api/files/upload_file.py +++ b/exasol/saas/client/openapi/api/files/upload_file.py @@ -1,55 +1,58 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.upload_file import UploadFile -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, database_id: str, key: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "post", - "url": f"/api/v1/accounts/{account_id}/databases/{database_id}/files/{key}", + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/files/{key}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),key=quote(str(key), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[UploadFile]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | UploadFile: if response.status_code == 200: response_200 = UploadFile.from_dict(response.json()) + + return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[UploadFile]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | UploadFile]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -64,8 +67,9 @@ def sync_detailed( key: str, *, client: AuthenticatedClient, -) -> Response[UploadFile]: - """ + +) -> Response[ApiError | UploadFile]: + """ Args: account_id (str): database_id (str): @@ -76,13 +80,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[UploadFile] - """ + Response[ApiError | UploadFile] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - key=key, +database_id=database_id, +key=key, + ) response = client.get_httpx_client().request( @@ -91,15 +97,15 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, -) -> Optional[UploadFile]: - """ + +) -> ApiError | UploadFile | None: + """ Args: account_id (str): database_id (str): @@ -110,16 +116,17 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - UploadFile - """ + ApiError | UploadFile + """ + return sync_detailed( account_id=account_id, - database_id=database_id, - key=key, - client=client, - ).parsed +database_id=database_id, +key=key, +client=client, + ).parsed async def asyncio_detailed( account_id: str, @@ -127,8 +134,9 @@ async def asyncio_detailed( key: str, *, client: AuthenticatedClient, -) -> Response[UploadFile]: - """ + +) -> Response[ApiError | UploadFile]: + """ Args: account_id (str): database_id (str): @@ -139,28 +147,32 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[UploadFile] - """ + Response[ApiError | UploadFile] + """ + kwargs = _get_kwargs( account_id=account_id, - database_id=database_id, - key=key, +database_id=database_id, +key=key, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, -) -> Optional[UploadFile]: - """ + +) -> ApiError | UploadFile | None: + """ Args: account_id (str): database_id (str): @@ -171,14 +183,14 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - UploadFile - """ - - return ( - await asyncio_detailed( - account_id=account_id, - database_id=database_id, - key=key, - client=client, - ) - ).parsed + ApiError | UploadFile + """ + + + return (await asyncio_detailed( + account_id=account_id, +database_id=database_id, +key=key, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/platform/__init__.py b/exasol/saas/client/openapi/api/platform/__init__.py index 2d7c0b23..c9921b5f 100644 --- a/exasol/saas/client/openapi/api/platform/__init__.py +++ b/exasol/saas/client/openapi/api/platform/__init__.py @@ -1 +1 @@ -"""Contains endpoint functions for accessing the API""" +""" Contains endpoint functions for accessing the API """ diff --git a/exasol/saas/client/openapi/api/platform/list_cluster_sizes.py b/exasol/saas/client/openapi/api/platform/list_cluster_sizes.py index 8c1ab5ed..91b4711a 100644 --- a/exasol/saas/client/openapi/api/platform/list_cluster_sizes.py +++ b/exasol/saas/client/openapi/api/platform/list_cluster_sizes.py @@ -1,58 +1,61 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.cluster_size_1 import ClusterSize1 -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( platform: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/platforms/{platform}/sizes", + "url": "/api/v1/platforms/{platform}/sizes".format(platform=quote(str(platform), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[list["ClusterSize1"]]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[ClusterSize1]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in _response_200: + for response_200_item_data in (_response_200): response_200_item = ClusterSize1.from_dict(response_200_item_data) + + response_200.append(response_200_item) return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[list["ClusterSize1"]]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[ClusterSize1]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -65,8 +68,9 @@ def sync_detailed( platform: str, *, client: AuthenticatedClient, -) -> Response[list["ClusterSize1"]]: - """ + +) -> Response[ApiError | list[ClusterSize1]]: + """ Args: platform (str): @@ -75,11 +79,13 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['ClusterSize1']] - """ + Response[ApiError | list[ClusterSize1]] + """ + kwargs = _get_kwargs( platform=platform, + ) response = client.get_httpx_client().request( @@ -88,13 +94,13 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( platform: str, *, client: AuthenticatedClient, -) -> Optional[list["ClusterSize1"]]: - """ + +) -> ApiError | list[ClusterSize1] | None: + """ Args: platform (str): @@ -103,21 +109,23 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['ClusterSize1'] - """ + ApiError | list[ClusterSize1] + """ + return sync_detailed( platform=platform, - client=client, - ).parsed +client=client, + ).parsed async def asyncio_detailed( platform: str, *, client: AuthenticatedClient, -) -> Response[list["ClusterSize1"]]: - """ + +) -> Response[ApiError | list[ClusterSize1]]: + """ Args: platform (str): @@ -126,24 +134,28 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['ClusterSize1']] - """ + Response[ApiError | list[ClusterSize1]] + """ + kwargs = _get_kwargs( platform=platform, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( platform: str, *, client: AuthenticatedClient, -) -> Optional[list["ClusterSize1"]]: - """ + +) -> ApiError | list[ClusterSize1] | None: + """ Args: platform (str): @@ -152,12 +164,12 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['ClusterSize1'] - """ - - return ( - await asyncio_detailed( - platform=platform, - client=client, - ) - ).parsed + ApiError | list[ClusterSize1] + """ + + + return (await asyncio_detailed( + platform=platform, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/platform/list_platforms.py b/exasol/saas/client/openapi/api/platform/list_platforms.py index ec98e522..960546c7 100644 --- a/exasol/saas/client/openapi/api/platform/list_platforms.py +++ b/exasol/saas/client/openapi/api/platform/list_platforms.py @@ -1,56 +1,60 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.platform import Platform -from ...types import ( - UNSET, - Response, -) +from typing import cast + + + +def _get_kwargs( + +) -> dict[str, Any]: + + -def _get_kwargs() -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "get", "url": "/api/v1/platforms", } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[list["Platform"]]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[Platform]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in _response_200: + for response_200_item_data in (_response_200): response_200_item = Platform.from_dict(response_200_item_data) + + response_200.append(response_200_item) return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[list["Platform"]]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[Platform]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -62,17 +66,21 @@ def _build_response( def sync_detailed( *, client: AuthenticatedClient, -) -> Response[list["Platform"]]: - """ + +) -> Response[ApiError | list[Platform]]: + """ Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['Platform']] - """ + Response[ApiError | list[Platform]] + """ - kwargs = _get_kwargs() + + kwargs = _get_kwargs( + + ) response = client.get_httpx_client().request( **kwargs, @@ -80,60 +88,67 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( *, client: AuthenticatedClient, -) -> Optional[list["Platform"]]: - """ + +) -> ApiError | list[Platform] | None: + """ Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['Platform'] - """ + ApiError | list[Platform] + """ + return sync_detailed( client=client, - ).parsed + ).parsed async def asyncio_detailed( *, client: AuthenticatedClient, -) -> Response[list["Platform"]]: - """ + +) -> Response[ApiError | list[Platform]]: + """ Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['Platform']] - """ + Response[ApiError | list[Platform]] + """ - kwargs = _get_kwargs() - response = await client.get_async_httpx_client().request(**kwargs) + kwargs = _get_kwargs( + + ) - return _build_response(client=client, response=response) + response = await client.get_async_httpx_client().request( + **kwargs + ) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, -) -> Optional[list["Platform"]]: - """ + +) -> ApiError | list[Platform] | None: + """ Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['Platform'] - """ + ApiError | list[Platform] + """ - return ( - await asyncio_detailed( - client=client, - ) - ).parsed + + return (await asyncio_detailed( + client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/platform/list_regions.py b/exasol/saas/client/openapi/api/platform/list_regions.py index a09ea5a8..91341a0a 100644 --- a/exasol/saas/client/openapi/api/platform/list_regions.py +++ b/exasol/saas/client/openapi/api/platform/list_regions.py @@ -1,58 +1,61 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.region import Region -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( platform: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/platforms/{platform}/regions", + "url": "/api/v1/platforms/{platform}/regions".format(platform=quote(str(platform), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[list["Region"]]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[Region]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in _response_200: + for response_200_item_data in (_response_200): response_200_item = Region.from_dict(response_200_item_data) + + response_200.append(response_200_item) return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[list["Region"]]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[Region]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -65,8 +68,9 @@ def sync_detailed( platform: str, *, client: AuthenticatedClient, -) -> Response[list["Region"]]: - """ + +) -> Response[ApiError | list[Region]]: + """ Args: platform (str): @@ -75,11 +79,13 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['Region']] - """ + Response[ApiError | list[Region]] + """ + kwargs = _get_kwargs( platform=platform, + ) response = client.get_httpx_client().request( @@ -88,13 +94,13 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( platform: str, *, client: AuthenticatedClient, -) -> Optional[list["Region"]]: - """ + +) -> ApiError | list[Region] | None: + """ Args: platform (str): @@ -103,21 +109,23 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['Region'] - """ + ApiError | list[Region] + """ + return sync_detailed( platform=platform, - client=client, - ).parsed +client=client, + ).parsed async def asyncio_detailed( platform: str, *, client: AuthenticatedClient, -) -> Response[list["Region"]]: - """ + +) -> Response[ApiError | list[Region]]: + """ Args: platform (str): @@ -126,24 +134,28 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['Region']] - """ + Response[ApiError | list[Region]] + """ + kwargs = _get_kwargs( platform=platform, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( platform: str, *, client: AuthenticatedClient, -) -> Optional[list["Region"]]: - """ + +) -> ApiError | list[Region] | None: + """ Args: platform (str): @@ -152,12 +164,12 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['Region'] - """ - - return ( - await asyncio_detailed( - platform=platform, - client=client, - ) - ).parsed + ApiError | list[Region] + """ + + + return (await asyncio_detailed( + platform=platform, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/profile/__init__.py b/exasol/saas/client/openapi/api/profile/__init__.py index 2d7c0b23..c9921b5f 100644 --- a/exasol/saas/client/openapi/api/profile/__init__.py +++ b/exasol/saas/client/openapi/api/profile/__init__.py @@ -1 +1 @@ -"""Contains endpoint functions for accessing the API""" +""" Contains endpoint functions for accessing the API """ diff --git a/exasol/saas/client/openapi/api/profile/update_profile.py b/exasol/saas/client/openapi/api/profile/update_profile.py index ef93f644..ccb2b2b3 100644 --- a/exasol/saas/client/openapi/api/profile/update_profile.py +++ b/exasol/saas/client/openapi/api/profile/update_profile.py @@ -1,31 +1,31 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.update_profile import UpdateProfile -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( *, body: UpdateProfile, + ) -> dict[str, Any]: headers: dict[str, Any] = {} + + + + + _kwargs: dict[str, Any] = { "method": "put", "url": "/api/v1/me", @@ -33,26 +33,28 @@ def _get_kwargs( _kwargs["json"] = body.to_dict() + headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + + response_default = ApiError.from_dict(response.json()) + + + + return response_default + -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -65,8 +67,9 @@ def sync_detailed( *, client: AuthenticatedClient, body: UpdateProfile, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: body (UpdateProfile): @@ -75,11 +78,13 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( body=body, + ) response = client.get_httpx_client().request( @@ -88,13 +93,38 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + *, + client: AuthenticatedClient, + body: UpdateProfile, + +) -> Any | ApiError | None: + """ + Args: + body (UpdateProfile): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + client=client, +body=body, + + ).parsed async def asyncio_detailed( *, client: AuthenticatedClient, body: UpdateProfile, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: body (UpdateProfile): @@ -103,13 +133,42 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( body=body, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + *, + client: AuthenticatedClient, + body: UpdateProfile, + +) -> Any | ApiError | None: + """ + Args: + body (UpdateProfile): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + client=client, +body=body, + + )).parsed diff --git a/exasol/saas/client/openapi/api/security/__init__.py b/exasol/saas/client/openapi/api/security/__init__.py index 2d7c0b23..c9921b5f 100644 --- a/exasol/saas/client/openapi/api/security/__init__.py +++ b/exasol/saas/client/openapi/api/security/__init__.py @@ -1 +1 @@ -"""Contains endpoint functions for accessing the API""" +""" Contains endpoint functions for accessing the API """ diff --git a/exasol/saas/client/openapi/api/security/add_allowed_ip.py b/exasol/saas/client/openapi/api/security/add_allowed_ip.py index b6d5b8ca..aa0af46e 100644 --- a/exasol/saas/client/openapi/api/security/add_allowed_ip.py +++ b/exasol/saas/client/openapi/api/security/add_allowed_ip.py @@ -1,62 +1,65 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + from ...models.allowed_ip import AllowedIP +from ...models.api_error import ApiError from ...models.create_allowed_ip import CreateAllowedIP -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, *, body: CreateAllowedIP, + ) -> dict[str, Any]: headers: dict[str, Any] = {} + + + + + _kwargs: dict[str, Any] = { "method": "post", - "url": f"/api/v1/accounts/{account_id}/security/allowlist_ip", + "url": "/api/v1/accounts/{account_id}/security/allowlist_ip".format(account_id=quote(str(account_id), safe=""),), } _kwargs["json"] = body.to_dict() + headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[AllowedIP]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> AllowedIP | ApiError: if response.status_code == 200: response_200 = AllowedIP.from_dict(response.json()) + + return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) + + + + return response_default -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[AllowedIP]: + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[AllowedIP | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -70,8 +73,9 @@ def sync_detailed( *, client: AuthenticatedClient, body: CreateAllowedIP, -) -> Response[AllowedIP]: - """ + +) -> Response[AllowedIP | ApiError]: + """ Args: account_id (str): body (CreateAllowedIP): @@ -81,12 +85,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[AllowedIP] - """ + Response[AllowedIP | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - body=body, +body=body, + ) response = client.get_httpx_client().request( @@ -95,14 +101,14 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, *, client: AuthenticatedClient, body: CreateAllowedIP, -) -> Optional[AllowedIP]: - """ + +) -> AllowedIP | ApiError | None: + """ Args: account_id (str): body (CreateAllowedIP): @@ -112,23 +118,25 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - AllowedIP - """ + AllowedIP | ApiError + """ + return sync_detailed( account_id=account_id, - client=client, - body=body, - ).parsed +client=client, +body=body, + ).parsed async def asyncio_detailed( account_id: str, *, client: AuthenticatedClient, body: CreateAllowedIP, -) -> Response[AllowedIP]: - """ + +) -> Response[AllowedIP | ApiError]: + """ Args: account_id (str): body (CreateAllowedIP): @@ -138,26 +146,30 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[AllowedIP] - """ + Response[AllowedIP | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - body=body, +body=body, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, *, client: AuthenticatedClient, body: CreateAllowedIP, -) -> Optional[AllowedIP]: - """ + +) -> AllowedIP | ApiError | None: + """ Args: account_id (str): body (CreateAllowedIP): @@ -167,13 +179,13 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - AllowedIP - """ - - return ( - await asyncio_detailed( - account_id=account_id, - client=client, - body=body, - ) - ).parsed + AllowedIP | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +client=client, +body=body, + + )).parsed diff --git a/exasol/saas/client/openapi/api/security/delete_allowed_ip.py b/exasol/saas/client/openapi/api/security/delete_allowed_ip.py index b209d038..66cc320b 100644 --- a/exasol/saas/client/openapi/api/security/delete_allowed_ip.py +++ b/exasol/saas/client/openapi/api/security/delete_allowed_ip.py @@ -1,51 +1,53 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, allowlist_ip_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "delete", - "url": f"/api/v1/accounts/{account_id}/security/allowlist_ip/{allowlist_ip_id}", + "url": "/api/v1/accounts/{account_id}/security/allowlist_ip/{allowlist_ip_id}".format(account_id=quote(str(account_id), safe=""),allowlist_ip_id=quote(str(allowlist_ip_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -59,8 +61,9 @@ def sync_detailed( allowlist_ip_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): allowlist_ip_id (str): @@ -70,12 +73,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - allowlist_ip_id=allowlist_ip_id, +allowlist_ip_id=allowlist_ip_id, + ) response = client.get_httpx_client().request( @@ -84,14 +89,42 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + allowlist_ip_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + allowlist_ip_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +allowlist_ip_id=allowlist_ip_id, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, allowlist_ip_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): allowlist_ip_id (str): @@ -101,14 +134,46 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - allowlist_ip_id=allowlist_ip_id, +allowlist_ip_id=allowlist_ip_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + allowlist_ip_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + allowlist_ip_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +allowlist_ip_id=allowlist_ip_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/security/get_allowed_ip.py b/exasol/saas/client/openapi/api/security/get_allowed_ip.py index 025b43e2..cb903072 100644 --- a/exasol/saas/client/openapi/api/security/get_allowed_ip.py +++ b/exasol/saas/client/openapi/api/security/get_allowed_ip.py @@ -1,54 +1,57 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + from ...models.allowed_ip import AllowedIP -from ...types import ( - UNSET, - Response, -) +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, allowlist_ip_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/security/allowlist_ip/{allowlist_ip_id}", + "url": "/api/v1/accounts/{account_id}/security/allowlist_ip/{allowlist_ip_id}".format(account_id=quote(str(account_id), safe=""),allowlist_ip_id=quote(str(allowlist_ip_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[AllowedIP]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> AllowedIP | ApiError: if response.status_code == 200: response_200 = AllowedIP.from_dict(response.json()) + + return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[AllowedIP]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[AllowedIP | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -62,8 +65,9 @@ def sync_detailed( allowlist_ip_id: str, *, client: AuthenticatedClient, -) -> Response[AllowedIP]: - """ + +) -> Response[AllowedIP | ApiError]: + """ Args: account_id (str): allowlist_ip_id (str): @@ -73,12 +77,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[AllowedIP] - """ + Response[AllowedIP | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - allowlist_ip_id=allowlist_ip_id, +allowlist_ip_id=allowlist_ip_id, + ) response = client.get_httpx_client().request( @@ -87,14 +93,14 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, allowlist_ip_id: str, *, client: AuthenticatedClient, -) -> Optional[AllowedIP]: - """ + +) -> AllowedIP | ApiError | None: + """ Args: account_id (str): allowlist_ip_id (str): @@ -104,23 +110,25 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - AllowedIP - """ + AllowedIP | ApiError + """ + return sync_detailed( account_id=account_id, - allowlist_ip_id=allowlist_ip_id, - client=client, - ).parsed +allowlist_ip_id=allowlist_ip_id, +client=client, + ).parsed async def asyncio_detailed( account_id: str, allowlist_ip_id: str, *, client: AuthenticatedClient, -) -> Response[AllowedIP]: - """ + +) -> Response[AllowedIP | ApiError]: + """ Args: account_id (str): allowlist_ip_id (str): @@ -130,26 +138,30 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[AllowedIP] - """ + Response[AllowedIP | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - allowlist_ip_id=allowlist_ip_id, +allowlist_ip_id=allowlist_ip_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, allowlist_ip_id: str, *, client: AuthenticatedClient, -) -> Optional[AllowedIP]: - """ + +) -> AllowedIP | ApiError | None: + """ Args: account_id (str): allowlist_ip_id (str): @@ -159,13 +171,13 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - AllowedIP - """ - - return ( - await asyncio_detailed( - account_id=account_id, - allowlist_ip_id=allowlist_ip_id, - client=client, - ) - ).parsed + AllowedIP | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +allowlist_ip_id=allowlist_ip_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/security/list_allowed_i_ps.py b/exasol/saas/client/openapi/api/security/list_allowed_i_ps.py index 2f476c68..30c363f8 100644 --- a/exasol/saas/client/openapi/api/security/list_allowed_i_ps.py +++ b/exasol/saas/client/openapi/api/security/list_allowed_i_ps.py @@ -1,58 +1,61 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + from ...models.allowed_ip import AllowedIP -from ...types import ( - UNSET, - Response, -) +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/security/allowlist_ip", + "url": "/api/v1/accounts/{account_id}/security/allowlist_ip".format(account_id=quote(str(account_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[list["AllowedIP"]]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[AllowedIP]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in _response_200: + for response_200_item_data in (_response_200): response_200_item = AllowedIP.from_dict(response_200_item_data) + + response_200.append(response_200_item) return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[list["AllowedIP"]]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[AllowedIP]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -65,8 +68,9 @@ def sync_detailed( account_id: str, *, client: AuthenticatedClient, -) -> Response[list["AllowedIP"]]: - """ + +) -> Response[ApiError | list[AllowedIP]]: + """ Args: account_id (str): @@ -75,11 +79,13 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['AllowedIP']] - """ + Response[ApiError | list[AllowedIP]] + """ + kwargs = _get_kwargs( account_id=account_id, + ) response = client.get_httpx_client().request( @@ -88,13 +94,13 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, *, client: AuthenticatedClient, -) -> Optional[list["AllowedIP"]]: - """ + +) -> ApiError | list[AllowedIP] | None: + """ Args: account_id (str): @@ -103,21 +109,23 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['AllowedIP'] - """ + ApiError | list[AllowedIP] + """ + return sync_detailed( account_id=account_id, - client=client, - ).parsed +client=client, + ).parsed async def asyncio_detailed( account_id: str, *, client: AuthenticatedClient, -) -> Response[list["AllowedIP"]]: - """ + +) -> Response[ApiError | list[AllowedIP]]: + """ Args: account_id (str): @@ -126,24 +134,28 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['AllowedIP']] - """ + Response[ApiError | list[AllowedIP]] + """ + kwargs = _get_kwargs( account_id=account_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, *, client: AuthenticatedClient, -) -> Optional[list["AllowedIP"]]: - """ + +) -> ApiError | list[AllowedIP] | None: + """ Args: account_id (str): @@ -152,12 +164,12 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['AllowedIP'] - """ - - return ( - await asyncio_detailed( - account_id=account_id, - client=client, - ) - ).parsed + ApiError | list[AllowedIP] + """ + + + return (await asyncio_detailed( + account_id=account_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/security/update_allowed_ip.py b/exasol/saas/client/openapi/api/security/update_allowed_ip.py index f45738b9..b04a3dc6 100644 --- a/exasol/saas/client/openapi/api/security/update_allowed_ip.py +++ b/exasol/saas/client/openapi/api/security/update_allowed_ip.py @@ -1,23 +1,17 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.update_allowed_ip import UpdateAllowedIP -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( @@ -25,36 +19,44 @@ def _get_kwargs( allowlist_ip_id: str, *, body: UpdateAllowedIP, + ) -> dict[str, Any]: headers: dict[str, Any] = {} + + + + + _kwargs: dict[str, Any] = { "method": "put", - "url": f"/api/v1/accounts/{account_id}/security/allowlist_ip/{allowlist_ip_id}", + "url": "/api/v1/accounts/{account_id}/security/allowlist_ip/{allowlist_ip_id}".format(account_id=quote(str(account_id), safe=""),allowlist_ip_id=quote(str(allowlist_ip_id), safe=""),), } _kwargs["json"] = body.to_dict() + headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -69,8 +71,9 @@ def sync_detailed( *, client: AuthenticatedClient, body: UpdateAllowedIP, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): allowlist_ip_id (str): @@ -81,13 +84,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - allowlist_ip_id=allowlist_ip_id, - body=body, +allowlist_ip_id=allowlist_ip_id, +body=body, + ) response = client.get_httpx_client().request( @@ -96,6 +101,36 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + allowlist_ip_id: str, + *, + client: AuthenticatedClient, + body: UpdateAllowedIP, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + allowlist_ip_id (str): + body (UpdateAllowedIP): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +allowlist_ip_id=allowlist_ip_id, +client=client, +body=body, + + ).parsed async def asyncio_detailed( account_id: str, @@ -103,8 +138,9 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: UpdateAllowedIP, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): allowlist_ip_id (str): @@ -115,15 +151,50 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - allowlist_ip_id=allowlist_ip_id, - body=body, +allowlist_ip_id=allowlist_ip_id, +body=body, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + allowlist_ip_id: str, + *, + client: AuthenticatedClient, + body: UpdateAllowedIP, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + allowlist_ip_id (str): + body (UpdateAllowedIP): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +allowlist_ip_id=allowlist_ip_id, +client=client, +body=body, + + )).parsed diff --git a/exasol/saas/client/openapi/api/usage/__init__.py b/exasol/saas/client/openapi/api/usage/__init__.py index 2d7c0b23..c9921b5f 100644 --- a/exasol/saas/client/openapi/api/usage/__init__.py +++ b/exasol/saas/client/openapi/api/usage/__init__.py @@ -1 +1 @@ -"""Contains endpoint functions for accessing the API""" +""" Contains endpoint functions for accessing the API """ diff --git a/exasol/saas/client/openapi/api/usage/get_usage.py b/exasol/saas/client/openapi/api/usage/get_usage.py index be004a81..e943488d 100644 --- a/exasol/saas/client/openapi/api/usage/get_usage.py +++ b/exasol/saas/client/openapi/api/usage/get_usage.py @@ -1,71 +1,74 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.get_usage_type import GetUsageType from ...models.usage import Usage -from ...types import ( - UNSET, - Response, - Unset, -) +from ...types import UNSET, Unset +from typing import cast + def _get_kwargs( account_id: str, *, - year_month: Union[Unset, str] = UNSET, - type_: Union[Unset, GetUsageType] = UNSET, + year_month: str | Unset = UNSET, + type_: GetUsageType | Unset = UNSET, + ) -> dict[str, Any]: + + + params: dict[str, Any] = {} params["yearMonth"] = year_month - json_type_: Union[Unset, str] = UNSET + json_type_: str | Unset = UNSET if not isinstance(type_, Unset): json_type_ = type_.value params["type"] = json_type_ + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/usage", + "url": "/api/v1/accounts/{account_id}/usage".format(account_id=quote(str(account_id), safe=""),), "params": params, } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Usage]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | Usage: if response.status_code == 200: response_200 = Usage.from_dict(response.json()) + + return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) + + + + return response_default -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Usage]: + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | Usage]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -78,27 +81,30 @@ def sync_detailed( account_id: str, *, client: AuthenticatedClient, - year_month: Union[Unset, str] = UNSET, - type_: Union[Unset, GetUsageType] = UNSET, -) -> Response[Usage]: - """ + year_month: str | Unset = UNSET, + type_: GetUsageType | Unset = UNSET, + +) -> Response[ApiError | Usage]: + """ Args: account_id (str): - year_month (Union[Unset, str]): - type_ (Union[Unset, GetUsageType]): + year_month (str | Unset): + type_ (GetUsageType | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Usage] - """ + Response[ApiError | Usage] + """ + kwargs = _get_kwargs( account_id=account_id, - year_month=year_month, - type_=type_, +year_month=year_month, +type_=type_, + ) response = client.get_httpx_client().request( @@ -107,94 +113,100 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, *, client: AuthenticatedClient, - year_month: Union[Unset, str] = UNSET, - type_: Union[Unset, GetUsageType] = UNSET, -) -> Optional[Usage]: - """ + year_month: str | Unset = UNSET, + type_: GetUsageType | Unset = UNSET, + +) -> ApiError | Usage | None: + """ Args: account_id (str): - year_month (Union[Unset, str]): - type_ (Union[Unset, GetUsageType]): + year_month (str | Unset): + type_ (GetUsageType | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Usage - """ + ApiError | Usage + """ + return sync_detailed( account_id=account_id, - client=client, - year_month=year_month, - type_=type_, - ).parsed +client=client, +year_month=year_month, +type_=type_, + ).parsed async def asyncio_detailed( account_id: str, *, client: AuthenticatedClient, - year_month: Union[Unset, str] = UNSET, - type_: Union[Unset, GetUsageType] = UNSET, -) -> Response[Usage]: - """ + year_month: str | Unset = UNSET, + type_: GetUsageType | Unset = UNSET, + +) -> Response[ApiError | Usage]: + """ Args: account_id (str): - year_month (Union[Unset, str]): - type_ (Union[Unset, GetUsageType]): + year_month (str | Unset): + type_ (GetUsageType | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Usage] - """ + Response[ApiError | Usage] + """ + kwargs = _get_kwargs( account_id=account_id, - year_month=year_month, - type_=type_, +year_month=year_month, +type_=type_, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, *, client: AuthenticatedClient, - year_month: Union[Unset, str] = UNSET, - type_: Union[Unset, GetUsageType] = UNSET, -) -> Optional[Usage]: - """ + year_month: str | Unset = UNSET, + type_: GetUsageType | Unset = UNSET, + +) -> ApiError | Usage | None: + """ Args: account_id (str): - year_month (Union[Unset, str]): - type_ (Union[Unset, GetUsageType]): + year_month (str | Unset): + type_ (GetUsageType | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Usage - """ - - return ( - await asyncio_detailed( - account_id=account_id, - client=client, - year_month=year_month, - type_=type_, - ) - ).parsed + ApiError | Usage + """ + + + return (await asyncio_detailed( + account_id=account_id, +client=client, +year_month=year_month, +type_=type_, + + )).parsed diff --git a/exasol/saas/client/openapi/api/users/__init__.py b/exasol/saas/client/openapi/api/users/__init__.py index 2d7c0b23..c9921b5f 100644 --- a/exasol/saas/client/openapi/api/users/__init__.py +++ b/exasol/saas/client/openapi/api/users/__init__.py @@ -1 +1 @@ -"""Contains endpoint functions for accessing the API""" +""" Contains endpoint functions for accessing the API """ diff --git a/exasol/saas/client/openapi/api/users/delete_user.py b/exasol/saas/client/openapi/api/users/delete_user.py index 2a962190..bb48ed6c 100644 --- a/exasol/saas/client/openapi/api/users/delete_user.py +++ b/exasol/saas/client/openapi/api/users/delete_user.py @@ -1,51 +1,53 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) -from ...types import ( - UNSET, - Response, -) + +from ...models.api_error import ApiError +from typing import cast + def _get_kwargs( account_id: str, user_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "delete", - "url": f"/api/v1/accounts/{account_id}/users/{user_id}", + "url": "/api/v1/accounts/{account_id}/users/{user_id}".format(account_id=quote(str(account_id), safe=""),user_id=quote(str(user_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -59,8 +61,9 @@ def sync_detailed( user_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): user_id (str): @@ -70,12 +73,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - user_id=user_id, +user_id=user_id, + ) response = client.get_httpx_client().request( @@ -84,14 +89,42 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + user_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + user_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +user_id=user_id, +client=client, + + ).parsed async def asyncio_detailed( account_id: str, user_id: str, *, client: AuthenticatedClient, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): user_id (str): @@ -101,14 +134,46 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - user_id=user_id, +user_id=user_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + user_id: str, + *, + client: AuthenticatedClient, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + user_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +user_id=user_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/users/get_user.py b/exasol/saas/client/openapi/api/users/get_user.py index f08053b3..d1f3484d 100644 --- a/exasol/saas/client/openapi/api/users/get_user.py +++ b/exasol/saas/client/openapi/api/users/get_user.py @@ -1,54 +1,57 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.user import User -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( account_id: str, user_id: str, + ) -> dict[str, Any]: + + + + + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/internal/accounts/{account_id}/users/{user_id}", + "url": "/api/v1/internal/accounts/{account_id}/users/{user_id}".format(account_id=quote(str(account_id), safe=""),user_id=quote(str(user_id), safe=""),), } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[User]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | User: if response.status_code == 200: response_200 = User.from_dict(response.json()) + + return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[User]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | User]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -62,8 +65,9 @@ def sync_detailed( user_id: str, *, client: AuthenticatedClient, -) -> Response[User]: - """ + +) -> Response[ApiError | User]: + """ Args: account_id (str): user_id (str): @@ -73,12 +77,14 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[User] - """ + Response[ApiError | User] + """ + kwargs = _get_kwargs( account_id=account_id, - user_id=user_id, +user_id=user_id, + ) response = client.get_httpx_client().request( @@ -87,14 +93,14 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, user_id: str, *, client: AuthenticatedClient, -) -> Optional[User]: - """ + +) -> ApiError | User | None: + """ Args: account_id (str): user_id (str): @@ -104,23 +110,25 @@ def sync( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - User - """ + ApiError | User + """ + return sync_detailed( account_id=account_id, - user_id=user_id, - client=client, - ).parsed +user_id=user_id, +client=client, + ).parsed async def asyncio_detailed( account_id: str, user_id: str, *, client: AuthenticatedClient, -) -> Response[User]: - """ + +) -> Response[ApiError | User]: + """ Args: account_id (str): user_id (str): @@ -130,26 +138,30 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[User] - """ + Response[ApiError | User] + """ + kwargs = _get_kwargs( account_id=account_id, - user_id=user_id, +user_id=user_id, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, user_id: str, *, client: AuthenticatedClient, -) -> Optional[User]: - """ + +) -> ApiError | User | None: + """ Args: account_id (str): user_id (str): @@ -159,13 +171,13 @@ async def asyncio( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - User - """ - - return ( - await asyncio_detailed( - account_id=account_id, - user_id=user_id, - client=client, - ) - ).parsed + ApiError | User + """ + + + return (await asyncio_detailed( + account_id=account_id, +user_id=user_id, +client=client, + + )).parsed diff --git a/exasol/saas/client/openapi/api/users/list_users.py b/exasol/saas/client/openapi/api/users/list_users.py index dad14319..1ac69520 100644 --- a/exasol/saas/client/openapi/api/users/list_users.py +++ b/exasol/saas/client/openapi/api/users/list_users.py @@ -1,33 +1,31 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.user import User -from ...types import ( - UNSET, - Response, - Unset, -) +from ...types import UNSET, Unset +from typing import cast + def _get_kwargs( account_id: str, *, - filter_: Union[Unset, str] = UNSET, - next_: Union[Unset, int] = UNSET, - limit: Union[Unset, int] = UNSET, + filter_: str | Unset = UNSET, + next_: int | Unset = UNSET, + limit: int | Unset = UNSET, + ) -> dict[str, Any]: + + + params: dict[str, Any] = {} @@ -37,38 +35,43 @@ def _get_kwargs( params["limit"] = limit + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} + _kwargs: dict[str, Any] = { "method": "get", - "url": f"/api/v1/accounts/{account_id}/users", + "url": "/api/v1/accounts/{account_id}/users".format(account_id=quote(str(account_id), safe=""),), "params": params, } + return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[list["User"]]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[User]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in _response_200: + for response_200_item_data in (_response_200): response_200_item = User.from_dict(response_200_item_data) + + response_200.append(response_200_item) return response_200 - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_default = ApiError.from_dict(response.json()) + + + + return response_default -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[list["User"]]: + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[User]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -81,30 +84,33 @@ def sync_detailed( account_id: str, *, client: AuthenticatedClient, - filter_: Union[Unset, str] = UNSET, - next_: Union[Unset, int] = UNSET, - limit: Union[Unset, int] = UNSET, -) -> Response[list["User"]]: - """ + filter_: str | Unset = UNSET, + next_: int | Unset = UNSET, + limit: int | Unset = UNSET, + +) -> Response[ApiError | list[User]]: + """ Args: account_id (str): - filter_ (Union[Unset, str]): - next_ (Union[Unset, int]): - limit (Union[Unset, int]): + filter_ (str | Unset): + next_ (int | Unset): + limit (int | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['User']] - """ + Response[ApiError | list[User]] + """ + kwargs = _get_kwargs( account_id=account_id, - filter_=filter_, - next_=next_, - limit=limit, +filter_=filter_, +next_=next_, +limit=limit, + ) response = client.get_httpx_client().request( @@ -113,103 +119,109 @@ def sync_detailed( return _build_response(client=client, response=response) - def sync( account_id: str, *, client: AuthenticatedClient, - filter_: Union[Unset, str] = UNSET, - next_: Union[Unset, int] = UNSET, - limit: Union[Unset, int] = UNSET, -) -> Optional[list["User"]]: - """ + filter_: str | Unset = UNSET, + next_: int | Unset = UNSET, + limit: int | Unset = UNSET, + +) -> ApiError | list[User] | None: + """ Args: account_id (str): - filter_ (Union[Unset, str]): - next_ (Union[Unset, int]): - limit (Union[Unset, int]): + filter_ (str | Unset): + next_ (int | Unset): + limit (int | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['User'] - """ + ApiError | list[User] + """ + return sync_detailed( account_id=account_id, - client=client, - filter_=filter_, - next_=next_, - limit=limit, - ).parsed +client=client, +filter_=filter_, +next_=next_, +limit=limit, + ).parsed async def asyncio_detailed( account_id: str, *, client: AuthenticatedClient, - filter_: Union[Unset, str] = UNSET, - next_: Union[Unset, int] = UNSET, - limit: Union[Unset, int] = UNSET, -) -> Response[list["User"]]: - """ + filter_: str | Unset = UNSET, + next_: int | Unset = UNSET, + limit: int | Unset = UNSET, + +) -> Response[ApiError | list[User]]: + """ Args: account_id (str): - filter_ (Union[Unset, str]): - next_ (Union[Unset, int]): - limit (Union[Unset, int]): + filter_ (str | Unset): + next_ (int | Unset): + limit (int | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[list['User']] - """ + Response[ApiError | list[User]] + """ + kwargs = _get_kwargs( account_id=account_id, - filter_=filter_, - next_=next_, - limit=limit, +filter_=filter_, +next_=next_, +limit=limit, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) - async def asyncio( account_id: str, *, client: AuthenticatedClient, - filter_: Union[Unset, str] = UNSET, - next_: Union[Unset, int] = UNSET, - limit: Union[Unset, int] = UNSET, -) -> Optional[list["User"]]: - """ + filter_: str | Unset = UNSET, + next_: int | Unset = UNSET, + limit: int | Unset = UNSET, + +) -> ApiError | list[User] | None: + """ Args: account_id (str): - filter_ (Union[Unset, str]): - next_ (Union[Unset, int]): - limit (Union[Unset, int]): + filter_ (str | Unset): + next_ (int | Unset): + limit (int | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - list['User'] - """ - - return ( - await asyncio_detailed( - account_id=account_id, - client=client, - filter_=filter_, - next_=next_, - limit=limit, - ) - ).parsed + ApiError | list[User] + """ + + + return (await asyncio_detailed( + account_id=account_id, +client=client, +filter_=filter_, +next_=next_, +limit=limit, + + )).parsed diff --git a/exasol/saas/client/openapi/api/users/patch_user.py b/exasol/saas/client/openapi/api/users/patch_user.py index 201fb5e1..10fe9b74 100644 --- a/exasol/saas/client/openapi/api/users/patch_user.py +++ b/exasol/saas/client/openapi/api/users/patch_user.py @@ -1,23 +1,17 @@ from http import HTTPStatus -from typing import ( - Any, - Optional, - Union, - cast, -) +from typing import Any, cast +from urllib.parse import quote import httpx +from ...client import AuthenticatedClient, Client +from ...types import Response, UNSET from ... import errors -from ...client import ( - AuthenticatedClient, - Client, -) + +from ...models.api_error import ApiError from ...models.patch_user import PatchUser -from ...types import ( - UNSET, - Response, -) +from typing import cast + def _get_kwargs( @@ -25,36 +19,44 @@ def _get_kwargs( user_id: str, *, body: PatchUser, + ) -> dict[str, Any]: headers: dict[str, Any] = {} + + + + + _kwargs: dict[str, Any] = { "method": "patch", - "url": f"/api/v1/accounts/{account_id}/users/{user_id}", + "url": "/api/v1/accounts/{account_id}/users/{user_id}".format(account_id=quote(str(account_id), safe=""),user_id=quote(str(user_id), safe=""),), } _kwargs["json"] = body.to_dict() + headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs -def _parse_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[Any]: + +def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: if response.status_code == 204: - return None - if client.raise_on_unexpected_status: - raise errors.UnexpectedStatus(response.status_code, response.content) - else: - return None + response_204 = cast(Any, None) + return response_204 + response_default = ApiError.from_dict(response.json()) -def _build_response( - *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[Any]: + + + return response_default + + + +def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -69,8 +71,9 @@ def sync_detailed( *, client: AuthenticatedClient, body: PatchUser, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): user_id (str): @@ -81,13 +84,15 @@ def sync_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - user_id=user_id, - body=body, +user_id=user_id, +body=body, + ) response = client.get_httpx_client().request( @@ -96,6 +101,36 @@ def sync_detailed( return _build_response(client=client, response=response) +def sync( + account_id: str, + user_id: str, + *, + client: AuthenticatedClient, + body: PatchUser, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + user_id (str): + body (PatchUser): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return sync_detailed( + account_id=account_id, +user_id=user_id, +client=client, +body=body, + + ).parsed async def asyncio_detailed( account_id: str, @@ -103,8 +138,9 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: PatchUser, -) -> Response[Any]: - """ + +) -> Response[Any | ApiError]: + """ Args: account_id (str): user_id (str): @@ -115,15 +151,50 @@ async def asyncio_detailed( httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Any] - """ + Response[Any | ApiError] + """ + kwargs = _get_kwargs( account_id=account_id, - user_id=user_id, - body=body, +user_id=user_id, +body=body, + ) - response = await client.get_async_httpx_client().request(**kwargs) + response = await client.get_async_httpx_client().request( + **kwargs + ) return _build_response(client=client, response=response) + +async def asyncio( + account_id: str, + user_id: str, + *, + client: AuthenticatedClient, + body: PatchUser, + +) -> Any | ApiError | None: + """ + Args: + account_id (str): + user_id (str): + body (PatchUser): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ApiError + """ + + + return (await asyncio_detailed( + account_id=account_id, +user_id=user_id, +client=client, +body=body, + + )).parsed diff --git a/exasol/saas/client/openapi/client.py b/exasol/saas/client/openapi/client.py index 605406ad..5eeb05a0 100644 --- a/exasol/saas/client/openapi/client.py +++ b/exasol/saas/client/openapi/client.py @@ -1,16 +1,11 @@ import ssl -from typing import ( - Any, - Optional, - Union, -) +from typing import Any +from attrs import define, field, evolve import httpx -from attrs import ( - define, - evolve, - field, -) + + + @define @@ -41,23 +36,16 @@ class Client: status code that was not documented in the source OpenAPI document. Can also be provided as a keyword argument to the constructor. """ - raise_on_unexpected_status: bool = field(default=False, kw_only=True) _base_url: str = field(alias="base_url") _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies") _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers") - _timeout: Optional[httpx.Timeout] = field( - default=None, kw_only=True, alias="timeout" - ) - _verify_ssl: Union[str, bool, ssl.SSLContext] = field( - default=True, kw_only=True, alias="verify_ssl" - ) - _follow_redirects: bool = field( - default=False, kw_only=True, alias="follow_redirects" - ) + _timeout: httpx.Timeout | None = field(default=None, kw_only=True, alias="timeout") + _verify_ssl: str | bool | ssl.SSLContext = field(default=True, kw_only=True, alias="verify_ssl") + _follow_redirects: bool = field(default=False, kw_only=True, alias="follow_redirects") _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args") - _client: Optional[httpx.Client] = field(default=None, init=False) - _async_client: Optional[httpx.AsyncClient] = field(default=None, init=False) + _client: httpx.Client | None = field(default=None, init=False) + _async_client: httpx.AsyncClient | None = field(default=None, init=False) def with_headers(self, headers: dict[str, str]) -> "Client": """Get a new client matching this one with additional headers""" @@ -76,7 +64,7 @@ def with_cookies(self, cookies: dict[str, str]) -> "Client": return evolve(self, cookies={**self._cookies, **cookies}) def with_timeout(self, timeout: httpx.Timeout) -> "Client": - """Get a new client matching this one with a new timeout (in seconds)""" + """Get a new client matching this one with a new timeout configuration""" if self._client is not None: self._client.timeout = timeout if self._async_client is not None: @@ -115,7 +103,7 @@ def __exit__(self, *args: Any, **kwargs: Any) -> None: self.get_httpx_client().__exit__(*args, **kwargs) def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "Client": - """Manually the underlying httpx.AsyncClient + """Manually set the underlying httpx.AsyncClient **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout. """ @@ -182,18 +170,12 @@ class AuthenticatedClient: _base_url: str = field(alias="base_url") _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies") _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers") - _timeout: Optional[httpx.Timeout] = field( - default=None, kw_only=True, alias="timeout" - ) - _verify_ssl: Union[str, bool, ssl.SSLContext] = field( - default=True, kw_only=True, alias="verify_ssl" - ) - _follow_redirects: bool = field( - default=False, kw_only=True, alias="follow_redirects" - ) + _timeout: httpx.Timeout | None = field(default=None, kw_only=True, alias="timeout") + _verify_ssl: str | bool | ssl.SSLContext = field(default=True, kw_only=True, alias="verify_ssl") + _follow_redirects: bool = field(default=False, kw_only=True, alias="follow_redirects") _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args") - _client: Optional[httpx.Client] = field(default=None, init=False) - _async_client: Optional[httpx.AsyncClient] = field(default=None, init=False) + _client: httpx.Client | None = field(default=None, init=False) + _async_client: httpx.AsyncClient | None = field(default=None, init=False) token: str prefix: str = "Bearer" @@ -216,7 +198,7 @@ def with_cookies(self, cookies: dict[str, str]) -> "AuthenticatedClient": return evolve(self, cookies={**self._cookies, **cookies}) def with_timeout(self, timeout: httpx.Timeout) -> "AuthenticatedClient": - """Get a new client matching this one with a new timeout (in seconds)""" + """Get a new client matching this one with a new timeout configuration""" if self._client is not None: self._client.timeout = timeout if self._async_client is not None: @@ -234,9 +216,7 @@ def set_httpx_client(self, client: httpx.Client) -> "AuthenticatedClient": def get_httpx_client(self) -> httpx.Client: """Get the underlying httpx.Client, constructing a new one if not previously set""" if self._client is None: - self._headers[self.auth_header_name] = ( - f"{self.prefix} {self.token}" if self.prefix else self.token - ) + self._headers[self.auth_header_name] = f"{self.prefix} {self.token}" if self.prefix else self.token self._client = httpx.Client( base_url=self._base_url, cookies=self._cookies, @@ -257,10 +237,8 @@ def __exit__(self, *args: Any, **kwargs: Any) -> None: """Exit a context manager for internal httpx.Client (see httpx docs)""" self.get_httpx_client().__exit__(*args, **kwargs) - def set_async_httpx_client( - self, async_client: httpx.AsyncClient - ) -> "AuthenticatedClient": - """Manually the underlying httpx.AsyncClient + def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "AuthenticatedClient": + """Manually set the underlying httpx.AsyncClient **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout. """ @@ -270,9 +248,7 @@ def set_async_httpx_client( def get_async_httpx_client(self) -> httpx.AsyncClient: """Get the underlying httpx.AsyncClient, constructing a new one if not previously set""" if self._async_client is None: - self._headers[self.auth_header_name] = ( - f"{self.prefix} {self.token}" if self.prefix else self.token - ) + self._headers[self.auth_header_name] = f"{self.prefix} {self.token}" if self.prefix else self.token self._async_client = httpx.AsyncClient( base_url=self._base_url, cookies=self._cookies, @@ -292,3 +268,4 @@ async def __aenter__(self) -> "AuthenticatedClient": async def __aexit__(self, *args: Any, **kwargs: Any) -> None: """Exit a context manager for underlying httpx.AsyncClient (see httpx docs)""" await self.get_async_httpx_client().__aexit__(*args, **kwargs) + diff --git a/exasol/saas/client/openapi/errors.py b/exasol/saas/client/openapi/errors.py index 5f92e76a..b912123d 100644 --- a/exasol/saas/client/openapi/errors.py +++ b/exasol/saas/client/openapi/errors.py @@ -1,5 +1,4 @@ -"""Contains shared errors types that can be raised from API functions""" - +""" Contains shared errors types that can be raised from API functions """ class UnexpectedStatus(Exception): """Raised by api functions when the response status an undocumented status and Client.raise_on_unexpected_status is True""" @@ -12,5 +11,4 @@ def __init__(self, status_code: int, content: bytes): f"Unexpected status code: {status_code}\n\nResponse content:\n{content.decode(errors='ignore')}" ) - __all__ = ["UnexpectedStatus"] diff --git a/exasol/saas/client/openapi/models/__init__.py b/exasol/saas/client/openapi/models/__init__.py index 1f043af4..31f833a2 100644 --- a/exasol/saas/client/openapi/models/__init__.py +++ b/exasol/saas/client/openapi/models/__init__.py @@ -1,4 +1,4 @@ -"""Contains all the data models used in inputs/outputs""" +""" Contains all the data models used in inputs/outputs """ from .allowed_ip import AllowedIP from .api_error import ApiError diff --git a/exasol/saas/client/openapi/models/allowed_ip.py b/exasol/saas/client/openapi/models/allowed_ip.py index 4eda117c..17e22b3e 100644 --- a/exasol/saas/client/openapi/models/allowed_ip.py +++ b/exasol/saas/client/openapi/models/allowed_ip.py @@ -1,51 +1,51 @@ -import datetime -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +from ..types import UNSET, Unset from dateutil.parser import isoparse +from typing import cast +import datetime + + + + -from ..types import ( - UNSET, - Unset, -) T = TypeVar("T", bound="AllowedIP") + @_attrs_define class AllowedIP: - """ - Attributes: - id (str): - name (str): - cidr_ip (str): - created_at (datetime.datetime): - created_by (str): - deleted_by (Union[Unset, str]): - deleted_at (Union[Unset, datetime.datetime]): - """ + """ + Attributes: + id (str): + name (str): + cidr_ip (str): + created_at (datetime.datetime): + created_by (str): + deleted_by (str | Unset): + deleted_at (datetime.datetime | Unset): + """ id: str name: str cidr_ip: str created_at: datetime.datetime created_by: str - deleted_by: Union[Unset, str] = UNSET - deleted_at: Union[Unset, datetime.datetime] = UNSET + deleted_by: str | Unset = UNSET + deleted_at: datetime.datetime | Unset = UNSET + + + + def to_dict(self) -> dict[str, Any]: id = self.id @@ -60,21 +60,20 @@ def to_dict(self) -> dict[str, Any]: deleted_by = self.deleted_by - deleted_at: Union[Unset, str] = UNSET + deleted_at: str | Unset = UNSET if not isinstance(self.deleted_at, Unset): deleted_at = self.deleted_at.isoformat() + field_dict: dict[str, Any] = {} - field_dict.update( - { - "id": id, - "name": name, - "cidrIp": cidr_ip, - "createdAt": created_at, - "createdBy": created_by, - } - ) + field_dict.update({ + "id": id, + "name": name, + "cidrIp": cidr_ip, + "createdAt": created_at, + "createdBy": created_by, + }) if deleted_by is not UNSET: field_dict["deletedBy"] = deleted_by if deleted_at is not UNSET: @@ -82,6 +81,8 @@ def to_dict(self) -> dict[str, Any]: return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -93,17 +94,23 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: created_at = isoparse(d.pop("createdAt")) + + + created_by = d.pop("createdBy") deleted_by = d.pop("deletedBy", UNSET) _deleted_at = d.pop("deletedAt", UNSET) - deleted_at: Union[Unset, datetime.datetime] - if isinstance(_deleted_at, Unset): + deleted_at: datetime.datetime | Unset + if isinstance(_deleted_at, Unset): deleted_at = UNSET else: deleted_at = isoparse(_deleted_at) + + + allowed_ip = cls( id=id, name=name, @@ -115,3 +122,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return allowed_ip + diff --git a/exasol/saas/client/openapi/models/api_error.py b/exasol/saas/client/openapi/models/api_error.py index a12c415e..d0e13d8c 100644 --- a/exasol/saas/client/openapi/models/api_error.py +++ b/exasol/saas/client/openapi/models/api_error.py @@ -1,42 +1,38 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from ..types import UNSET, Unset + + + + + T = TypeVar("T", bound="ApiError") + @_attrs_define class ApiError: - """ - Attributes: - status (float): - message (str): - request_id (str): - path (str): - method (str): - log_id (str): - handler (str): - timestamp (str): - causes (Union[Unset, Any]): - """ + """ + Attributes: + status (float): + message (str): + request_id (str): + path (str): + method (str): + log_id (str): + handler (str): + timestamp (str): + causes (Any | Unset): + """ status: float message: str @@ -46,7 +42,11 @@ class ApiError: log_id: str handler: str timestamp: str - causes: Union[Unset, Any] = UNSET + causes: Any | Unset = UNSET + + + + def to_dict(self) -> dict[str, Any]: status = self.status @@ -67,25 +67,26 @@ def to_dict(self) -> dict[str, Any]: causes = self.causes + field_dict: dict[str, Any] = {} - field_dict.update( - { - "status": status, - "message": message, - "requestId": request_id, - "path": path, - "method": method, - "logId": log_id, - "handler": handler, - "timestamp": timestamp, - } - ) + field_dict.update({ + "status": status, + "message": message, + "requestId": request_id, + "path": path, + "method": method, + "logId": log_id, + "handler": handler, + "timestamp": timestamp, + }) if causes is not UNSET: field_dict["causes"] = causes return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -120,3 +121,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return api_error + diff --git a/exasol/saas/client/openapi/models/auto_stop.py b/exasol/saas/client/openapi/models/auto_stop.py index 39ed90cb..4e064f72 100644 --- a/exasol/saas/client/openapi/models/auto_stop.py +++ b/exasol/saas/client/openapi/models/auto_stop.py @@ -1,54 +1,55 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="AutoStop") + @_attrs_define class AutoStop: - """ - Attributes: - enabled (bool): - idle_time (int): - """ + """ + Attributes: + enabled (bool): + idle_time (int): + """ enabled: bool idle_time: int + + + + def to_dict(self) -> dict[str, Any]: enabled = self.enabled idle_time = self.idle_time + field_dict: dict[str, Any] = {} - field_dict.update( - { - "enabled": enabled, - "idleTime": idle_time, - } - ) + field_dict.update({ + "enabled": enabled, + "idleTime": idle_time, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -62,3 +63,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return auto_stop + diff --git a/exasol/saas/client/openapi/models/cluster.py b/exasol/saas/client/openapi/models/cluster.py index 44af876a..0361d468 100644 --- a/exasol/saas/client/openapi/models/cluster.py +++ b/exasol/saas/client/openapi/models/cluster.py @@ -1,53 +1,47 @@ -import datetime -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from dateutil.parser import isoparse + +from ..types import UNSET, Unset from ..models.status import Status -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset +from dateutil.parser import isoparse +from typing import cast +import datetime if TYPE_CHECKING: - from ..models.auto_stop import AutoStop - from ..models.cluster_settings import ClusterSettings + from ..models.auto_stop import AutoStop + from ..models.cluster_settings import ClusterSettings + + + T = TypeVar("T", bound="Cluster") + @_attrs_define class Cluster: - """ - Attributes: - status (Status): - id (str): - name (str): - size (str): - created_at (datetime.datetime): - created_by (str): - main_cluster (bool): - settings (ClusterSettings): - deleted_at (Union[Unset, datetime.datetime]): - deleted_by (Union[Unset, str]): - auto_stop (Union[Unset, AutoStop]): - """ + """ + Attributes: + status (Status): + id (str): + name (str): + size (str): + created_at (datetime.datetime): + created_by (str): + main_cluster (bool): + settings (ClusterSettings): + deleted_at (datetime.datetime | Unset): + deleted_by (str | Unset): + auto_stop (AutoStop | Unset): + """ status: Status id: str @@ -56,15 +50,18 @@ class Cluster: created_at: datetime.datetime created_by: str main_cluster: bool - settings: "ClusterSettings" - deleted_at: Union[Unset, datetime.datetime] = UNSET - deleted_by: Union[Unset, str] = UNSET - auto_stop: Union[Unset, "AutoStop"] = UNSET + settings: ClusterSettings + deleted_at: datetime.datetime | Unset = UNSET + deleted_by: str | Unset = UNSET + auto_stop: AutoStop | Unset = UNSET + + + + def to_dict(self) -> dict[str, Any]: from ..models.auto_stop import AutoStop from ..models.cluster_settings import ClusterSettings - status = self.status.value id = self.id @@ -81,30 +78,29 @@ def to_dict(self) -> dict[str, Any]: settings = self.settings.to_dict() - deleted_at: Union[Unset, str] = UNSET + deleted_at: str | Unset = UNSET if not isinstance(self.deleted_at, Unset): deleted_at = self.deleted_at.isoformat() deleted_by = self.deleted_by - auto_stop: Union[Unset, dict[str, Any]] = UNSET + auto_stop: dict[str, Any] | Unset = UNSET if not isinstance(self.auto_stop, Unset): auto_stop = self.auto_stop.to_dict() + field_dict: dict[str, Any] = {} - field_dict.update( - { - "status": status, - "id": id, - "name": name, - "size": size, - "createdAt": created_at, - "createdBy": created_by, - "mainCluster": main_cluster, - "settings": settings, - } - ) + field_dict.update({ + "status": status, + "id": id, + "name": name, + "size": size, + "createdAt": created_at, + "createdBy": created_by, + "mainCluster": main_cluster, + "settings": settings, + }) if deleted_at is not UNSET: field_dict["deletedAt"] = deleted_at if deleted_by is not UNSET: @@ -114,14 +110,18 @@ def to_dict(self) -> dict[str, Any]: return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.auto_stop import AutoStop from ..models.cluster_settings import ClusterSettings - d = dict(src_dict) status = Status(d.pop("status")) + + + id = d.pop("id") name = d.pop("name") @@ -130,28 +130,40 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: created_at = isoparse(d.pop("createdAt")) + + + created_by = d.pop("createdBy") main_cluster = d.pop("mainCluster") settings = ClusterSettings.from_dict(d.pop("settings")) + + + _deleted_at = d.pop("deletedAt", UNSET) - deleted_at: Union[Unset, datetime.datetime] - if isinstance(_deleted_at, Unset): + deleted_at: datetime.datetime | Unset + if isinstance(_deleted_at, Unset): deleted_at = UNSET else: deleted_at = isoparse(_deleted_at) + + + deleted_by = d.pop("deletedBy", UNSET) _auto_stop = d.pop("autoStop", UNSET) - auto_stop: Union[Unset, AutoStop] - if isinstance(_auto_stop, Unset): + auto_stop: AutoStop | Unset + if isinstance(_auto_stop, Unset): auto_stop = UNSET else: auto_stop = AutoStop.from_dict(_auto_stop) + + + cluster = cls( status=status, id=id, @@ -167,3 +179,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return cluster + diff --git a/exasol/saas/client/openapi/models/cluster_action_scale.py b/exasol/saas/client/openapi/models/cluster_action_scale.py index 240ecd6d..03956758 100644 --- a/exasol/saas/client/openapi/models/cluster_action_scale.py +++ b/exasol/saas/client/openapi/models/cluster_action_scale.py @@ -1,54 +1,55 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="ClusterActionScale") + @_attrs_define class ClusterActionScale: - """ - Attributes: - cluster_id (str): - size (str): - """ + """ + Attributes: + cluster_id (str): + size (str): + """ cluster_id: str size: str + + + + def to_dict(self) -> dict[str, Any]: cluster_id = self.cluster_id size = self.size + field_dict: dict[str, Any] = {} - field_dict.update( - { - "clusterId": cluster_id, - "size": size, - } - ) + field_dict.update({ + "clusterId": cluster_id, + "size": size, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -62,3 +63,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return cluster_action_scale + diff --git a/exasol/saas/client/openapi/models/cluster_action_start_stop.py b/exasol/saas/client/openapi/models/cluster_action_start_stop.py index 5c0391e1..980ef4cb 100644 --- a/exasol/saas/client/openapi/models/cluster_action_start_stop.py +++ b/exasol/saas/client/openapi/models/cluster_action_start_stop.py @@ -1,49 +1,50 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="ClusterActionStartStop") + @_attrs_define class ClusterActionStartStop: - """ - Attributes: - cluster_id (str): - """ + """ + Attributes: + cluster_id (str): + """ cluster_id: str + + + + def to_dict(self) -> dict[str, Any]: cluster_id = self.cluster_id + field_dict: dict[str, Any] = {} - field_dict.update( - { - "clusterId": cluster_id, - } - ) + field_dict.update({ + "clusterId": cluster_id, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -54,3 +55,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return cluster_action_start_stop + diff --git a/exasol/saas/client/openapi/models/cluster_connection.py b/exasol/saas/client/openapi/models/cluster_connection.py index 8434e7c5..c979b57f 100644 --- a/exasol/saas/client/openapi/models/cluster_connection.py +++ b/exasol/saas/client/openapi/models/cluster_connection.py @@ -1,52 +1,49 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from typing import cast if TYPE_CHECKING: - from ..models.connection_i_ps import ConnectionIPs + from ..models.connection_i_ps import ConnectionIPs + + + T = TypeVar("T", bound="ClusterConnection") + @_attrs_define class ClusterConnection: - """ - Attributes: - dns (str): - port (int): - jdbc (str): - ips (ConnectionIPs): - db_username (str): - """ + """ + Attributes: + dns (str): + port (int): + jdbc (str): + ips (ConnectionIPs): + db_username (str): + """ dns: str port: int jdbc: str - ips: "ConnectionIPs" + ips: ConnectionIPs db_username: str + + + + def to_dict(self) -> dict[str, Any]: from ..models.connection_i_ps import ConnectionIPs - dns = self.dns port = self.port @@ -57,24 +54,24 @@ def to_dict(self) -> dict[str, Any]: db_username = self.db_username + field_dict: dict[str, Any] = {} - field_dict.update( - { - "dns": dns, - "port": port, - "jdbc": jdbc, - "ips": ips, - "dbUsername": db_username, - } - ) + field_dict.update({ + "dns": dns, + "port": port, + "jdbc": jdbc, + "ips": ips, + "dbUsername": db_username, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.connection_i_ps import ConnectionIPs - d = dict(src_dict) dns = d.pop("dns") @@ -84,6 +81,9 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ips = ConnectionIPs.from_dict(d.pop("ips")) + + + db_username = d.pop("dbUsername") cluster_connection = cls( @@ -95,3 +95,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return cluster_connection + diff --git a/exasol/saas/client/openapi/models/cluster_settings.py b/exasol/saas/client/openapi/models/cluster_settings.py index 441becea..e2be7b0e 100644 --- a/exasol/saas/client/openapi/models/cluster_settings.py +++ b/exasol/saas/client/openapi/models/cluster_settings.py @@ -1,54 +1,55 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="ClusterSettings") + @_attrs_define class ClusterSettings: - """ - Attributes: - offload_enabled (bool): - offload_timeout_min (int): - """ + """ + Attributes: + offload_enabled (bool): + offload_timeout_min (int): + """ offload_enabled: bool offload_timeout_min: int + + + + def to_dict(self) -> dict[str, Any]: offload_enabled = self.offload_enabled offload_timeout_min = self.offload_timeout_min + field_dict: dict[str, Any] = {} - field_dict.update( - { - "offloadEnabled": offload_enabled, - "offloadTimeoutMin": offload_timeout_min, - } - ) + field_dict.update({ + "offloadEnabled": offload_enabled, + "offloadTimeoutMin": offload_timeout_min, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -62,3 +63,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return cluster_settings + diff --git a/exasol/saas/client/openapi/models/cluster_settings_update.py b/exasol/saas/client/openapi/models/cluster_settings_update.py index d2d3ff2a..efd95e26 100644 --- a/exasol/saas/client/openapi/models/cluster_settings_update.py +++ b/exasol/saas/client/openapi/models/cluster_settings_update.py @@ -1,47 +1,49 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from ..types import UNSET, Unset + + + + + T = TypeVar("T", bound="ClusterSettingsUpdate") + @_attrs_define class ClusterSettingsUpdate: - """ - Attributes: - offload_enabled (Union[Unset, bool]): - offload_timeout_min (Union[Unset, int]): - """ + """ + Attributes: + offload_enabled (bool | Unset): + offload_timeout_min (int | Unset): + """ + + offload_enabled: bool | Unset = UNSET + offload_timeout_min: int | Unset = UNSET + + + - offload_enabled: Union[Unset, bool] = UNSET - offload_timeout_min: Union[Unset, int] = UNSET def to_dict(self) -> dict[str, Any]: offload_enabled = self.offload_enabled offload_timeout_min = self.offload_timeout_min + field_dict: dict[str, Any] = {} - field_dict.update({}) + field_dict.update({ + }) if offload_enabled is not UNSET: field_dict["offloadEnabled"] = offload_enabled if offload_timeout_min is not UNSET: @@ -49,6 +51,8 @@ def to_dict(self) -> dict[str, Any]: return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -62,3 +66,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return cluster_settings_update + diff --git a/exasol/saas/client/openapi/models/cluster_size_1.py b/exasol/saas/client/openapi/models/cluster_size_1.py index 8a339e2e..885b3b74 100644 --- a/exasol/saas/client/openapi/models/cluster_size_1.py +++ b/exasol/saas/client/openapi/models/cluster_size_1.py @@ -1,40 +1,36 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from ..types import UNSET, Unset + + + + + T = TypeVar("T", bound="ClusterSize1") + @_attrs_define class ClusterSize1: - """ - Attributes: - size (str): - price (float): - vcpu (float): - ram (float): - is_default (bool): - name (str): - family (Union[Unset, str]): - """ + """ + Attributes: + size (str): + price (float): + vcpu (float): + ram (float): + is_default (bool): + name (str): + family (str | Unset): + """ size: str price: float @@ -42,7 +38,11 @@ class ClusterSize1: ram: float is_default: bool name: str - family: Union[Unset, str] = UNSET + family: str | Unset = UNSET + + + + def to_dict(self) -> dict[str, Any]: size = self.size @@ -59,23 +59,24 @@ def to_dict(self) -> dict[str, Any]: family = self.family + field_dict: dict[str, Any] = {} - field_dict.update( - { - "size": size, - "price": price, - "vcpu": vcpu, - "ram": ram, - "isDefault": is_default, - "name": name, - } - ) + field_dict.update({ + "size": size, + "price": price, + "vcpu": vcpu, + "ram": ram, + "isDefault": is_default, + "name": name, + }) if family is not UNSET: field_dict["family"] = family return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -104,3 +105,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return cluster_size_1 + diff --git a/exasol/saas/client/openapi/models/connection_i_ps.py b/exasol/saas/client/openapi/models/connection_i_ps.py index 3128507d..2080be94 100644 --- a/exasol/saas/client/openapi/models/connection_i_ps.py +++ b/exasol/saas/client/openapi/models/connection_i_ps.py @@ -1,65 +1,73 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from typing import cast + + + + + T = TypeVar("T", bound="ConnectionIPs") + @_attrs_define class ConnectionIPs: - """ - Attributes: - private (list[str]): - public (list[str]): - """ + """ + Attributes: + private (list[str]): + public (list[str]): + """ private: list[str] public: list[str] + + + + def to_dict(self) -> dict[str, Any]: private = self.private + + public = self.public + + + field_dict: dict[str, Any] = {} - field_dict.update( - { - "private": private, - "public": public, - } - ) + field_dict.update({ + "private": private, + "public": public, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) private = cast(list[str], d.pop("private")) + public = cast(list[str], d.pop("public")) + connection_i_ps = cls( private=private, public=public, ) return connection_i_ps + diff --git a/exasol/saas/client/openapi/models/create_allowed_ip.py b/exasol/saas/client/openapi/models/create_allowed_ip.py index 7e6243d5..536f173f 100644 --- a/exasol/saas/client/openapi/models/create_allowed_ip.py +++ b/exasol/saas/client/openapi/models/create_allowed_ip.py @@ -1,54 +1,55 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="CreateAllowedIP") + @_attrs_define class CreateAllowedIP: - """ - Attributes: - name (str): - cidr_ip (str): - """ + """ + Attributes: + name (str): + cidr_ip (str): + """ name: str cidr_ip: str + + + + def to_dict(self) -> dict[str, Any]: name = self.name cidr_ip = self.cidr_ip + field_dict: dict[str, Any] = {} - field_dict.update( - { - "name": name, - "cidrIp": cidr_ip, - } - ) + field_dict.update({ + "name": name, + "cidrIp": cidr_ip, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -62,3 +63,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return create_allowed_ip + diff --git a/exasol/saas/client/openapi/models/create_cluster.py b/exasol/saas/client/openapi/models/create_cluster.py index bf7b9ab9..6ce03062 100644 --- a/exasol/saas/client/openapi/models/create_cluster.py +++ b/exasol/saas/client/openapi/models/create_cluster.py @@ -1,77 +1,73 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from ..types import UNSET, Unset +from typing import cast if TYPE_CHECKING: - from ..models.auto_stop import AutoStop - from ..models.cluster_settings_update import ClusterSettingsUpdate + from ..models.auto_stop import AutoStop + from ..models.cluster_settings_update import ClusterSettingsUpdate + + + T = TypeVar("T", bound="CreateCluster") + @_attrs_define class CreateCluster: - """ - Attributes: - name (str): - size (str): - family (Union[Unset, str]): - auto_stop (Union[Unset, AutoStop]): - settings (Union[Unset, ClusterSettingsUpdate]): - """ + """ + Attributes: + name (str): + size (str): + family (str | Unset): + auto_stop (AutoStop | Unset): + settings (ClusterSettingsUpdate | Unset): + """ name: str size: str - family: Union[Unset, str] = UNSET - auto_stop: Union[Unset, "AutoStop"] = UNSET - settings: Union[Unset, "ClusterSettingsUpdate"] = UNSET + family: str | Unset = UNSET + auto_stop: AutoStop | Unset = UNSET + settings: ClusterSettingsUpdate | Unset = UNSET + + + + def to_dict(self) -> dict[str, Any]: from ..models.auto_stop import AutoStop from ..models.cluster_settings_update import ClusterSettingsUpdate - name = self.name size = self.size family = self.family - auto_stop: Union[Unset, dict[str, Any]] = UNSET + auto_stop: dict[str, Any] | Unset = UNSET if not isinstance(self.auto_stop, Unset): auto_stop = self.auto_stop.to_dict() - settings: Union[Unset, dict[str, Any]] = UNSET + settings: dict[str, Any] | Unset = UNSET if not isinstance(self.settings, Unset): settings = self.settings.to_dict() + field_dict: dict[str, Any] = {} - field_dict.update( - { - "name": name, - "size": size, - } - ) + field_dict.update({ + "name": name, + "size": size, + }) if family is not UNSET: field_dict["family"] = family if auto_stop is not UNSET: @@ -81,11 +77,12 @@ def to_dict(self) -> dict[str, Any]: return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.auto_stop import AutoStop from ..models.cluster_settings_update import ClusterSettingsUpdate - d = dict(src_dict) name = d.pop("name") @@ -94,19 +91,25 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: family = d.pop("family", UNSET) _auto_stop = d.pop("autoStop", UNSET) - auto_stop: Union[Unset, AutoStop] - if isinstance(_auto_stop, Unset): + auto_stop: AutoStop | Unset + if isinstance(_auto_stop, Unset): auto_stop = UNSET else: auto_stop = AutoStop.from_dict(_auto_stop) + + + _settings = d.pop("settings", UNSET) - settings: Union[Unset, ClusterSettingsUpdate] - if isinstance(_settings, Unset): + settings: ClusterSettingsUpdate | Unset + if isinstance(_settings, Unset): settings = UNSET else: settings = ClusterSettingsUpdate.from_dict(_settings) + + + create_cluster = cls( name=name, size=size, @@ -116,3 +119,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return create_cluster + diff --git a/exasol/saas/client/openapi/models/create_database.py b/exasol/saas/client/openapi/models/create_database.py index 755a754e..e30b83c9 100644 --- a/exasol/saas/client/openapi/models/create_database.py +++ b/exasol/saas/client/openapi/models/create_database.py @@ -1,58 +1,53 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from ..types import UNSET, Unset +from typing import cast if TYPE_CHECKING: - from ..models.create_database_initial_cluster import CreateDatabaseInitialCluster + from ..models.create_database_initial_cluster import CreateDatabaseInitialCluster + + + T = TypeVar("T", bound="CreateDatabase") + @_attrs_define class CreateDatabase: - """ - Attributes: - name (str): - initial_cluster (CreateDatabaseInitialCluster): - provider (str): - region (str): - num_nodes (Union[Unset, int]): - stream_type (Union[Unset, str]): - """ + """ + Attributes: + name (str): + initial_cluster (CreateDatabaseInitialCluster): + provider (str): + region (str): + num_nodes (int | Unset): + stream_type (str | Unset): + """ name: str - initial_cluster: "CreateDatabaseInitialCluster" + initial_cluster: CreateDatabaseInitialCluster provider: str region: str - num_nodes: Union[Unset, int] = UNSET - stream_type: Union[Unset, str] = UNSET + num_nodes: int | Unset = UNSET + stream_type: str | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) - def to_dict(self) -> dict[str, Any]: - from ..models.create_database_initial_cluster import ( - CreateDatabaseInitialCluster, - ) + + + + def to_dict(self) -> dict[str, Any]: + from ..models.create_database_initial_cluster import CreateDatabaseInitialCluster name = self.name initial_cluster = self.initial_cluster.to_dict() @@ -65,16 +60,15 @@ def to_dict(self) -> dict[str, Any]: stream_type = self.stream_type + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) - field_dict.update( - { - "name": name, - "initialCluster": initial_cluster, - "provider": provider, - "region": region, - } - ) + field_dict.update({ + "name": name, + "initialCluster": initial_cluster, + "provider": provider, + "region": region, + }) if num_nodes is not UNSET: field_dict["numNodes"] = num_nodes if stream_type is not UNSET: @@ -82,18 +76,18 @@ def to_dict(self) -> dict[str, Any]: return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: - from ..models.create_database_initial_cluster import ( - CreateDatabaseInitialCluster, - ) - + from ..models.create_database_initial_cluster import CreateDatabaseInitialCluster d = dict(src_dict) name = d.pop("name") - initial_cluster = CreateDatabaseInitialCluster.from_dict( - d.pop("initialCluster") - ) + initial_cluster = CreateDatabaseInitialCluster.from_dict(d.pop("initialCluster")) + + + provider = d.pop("provider") @@ -112,6 +106,7 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: stream_type=stream_type, ) + create_database.additional_properties = d return create_database diff --git a/exasol/saas/client/openapi/models/create_database_initial_cluster.py b/exasol/saas/client/openapi/models/create_database_initial_cluster.py index 4405a68c..693952d4 100644 --- a/exasol/saas/client/openapi/models/create_database_initial_cluster.py +++ b/exasol/saas/client/openapi/models/create_database_initial_cluster.py @@ -1,77 +1,73 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from ..types import UNSET, Unset +from typing import cast if TYPE_CHECKING: - from ..models.auto_stop import AutoStop - from ..models.cluster_settings_update import ClusterSettingsUpdate + from ..models.auto_stop import AutoStop + from ..models.cluster_settings_update import ClusterSettingsUpdate + + + T = TypeVar("T", bound="CreateDatabaseInitialCluster") + @_attrs_define class CreateDatabaseInitialCluster: - """ - Attributes: - name (str): - size (str): - family (Union[Unset, str]): - auto_stop (Union[Unset, AutoStop]): - settings (Union[Unset, ClusterSettingsUpdate]): - """ + """ + Attributes: + name (str): + size (str): + family (str | Unset): + auto_stop (AutoStop | Unset): + settings (ClusterSettingsUpdate | Unset): + """ name: str size: str - family: Union[Unset, str] = UNSET - auto_stop: Union[Unset, "AutoStop"] = UNSET - settings: Union[Unset, "ClusterSettingsUpdate"] = UNSET + family: str | Unset = UNSET + auto_stop: AutoStop | Unset = UNSET + settings: ClusterSettingsUpdate | Unset = UNSET + + + + def to_dict(self) -> dict[str, Any]: from ..models.auto_stop import AutoStop from ..models.cluster_settings_update import ClusterSettingsUpdate - name = self.name size = self.size family = self.family - auto_stop: Union[Unset, dict[str, Any]] = UNSET + auto_stop: dict[str, Any] | Unset = UNSET if not isinstance(self.auto_stop, Unset): auto_stop = self.auto_stop.to_dict() - settings: Union[Unset, dict[str, Any]] = UNSET + settings: dict[str, Any] | Unset = UNSET if not isinstance(self.settings, Unset): settings = self.settings.to_dict() + field_dict: dict[str, Any] = {} - field_dict.update( - { - "name": name, - "size": size, - } - ) + field_dict.update({ + "name": name, + "size": size, + }) if family is not UNSET: field_dict["family"] = family if auto_stop is not UNSET: @@ -81,11 +77,12 @@ def to_dict(self) -> dict[str, Any]: return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.auto_stop import AutoStop from ..models.cluster_settings_update import ClusterSettingsUpdate - d = dict(src_dict) name = d.pop("name") @@ -94,19 +91,25 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: family = d.pop("family", UNSET) _auto_stop = d.pop("autoStop", UNSET) - auto_stop: Union[Unset, AutoStop] - if isinstance(_auto_stop, Unset): + auto_stop: AutoStop | Unset + if isinstance(_auto_stop, Unset): auto_stop = UNSET else: auto_stop = AutoStop.from_dict(_auto_stop) + + + _settings = d.pop("settings", UNSET) - settings: Union[Unset, ClusterSettingsUpdate] - if isinstance(_settings, Unset): + settings: ClusterSettingsUpdate | Unset + if isinstance(_settings, Unset): settings = UNSET else: settings = ClusterSettingsUpdate.from_dict(_settings) + + + create_database_initial_cluster = cls( name=name, size=size, @@ -116,3 +119,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return create_database_initial_cluster + diff --git a/exasol/saas/client/openapi/models/create_extension_instance.py b/exasol/saas/client/openapi/models/create_extension_instance.py index d23dd334..dd719644 100644 --- a/exasol/saas/client/openapi/models/create_extension_instance.py +++ b/exasol/saas/client/openapi/models/create_extension_instance.py @@ -1,75 +1,76 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from typing import cast if TYPE_CHECKING: - from ..models.extension_parameter_value import ExtensionParameterValue + from ..models.extension_parameter_value import ExtensionParameterValue + + + T = TypeVar("T", bound="CreateExtensionInstance") + @_attrs_define class CreateExtensionInstance: - """ - Attributes: - parameter_values (list['ExtensionParameterValue']): - """ + """ + Attributes: + parameter_values (list[ExtensionParameterValue]): + """ + + parameter_values: list[ExtensionParameterValue] + + + - parameter_values: list["ExtensionParameterValue"] def to_dict(self) -> dict[str, Any]: from ..models.extension_parameter_value import ExtensionParameterValue - parameter_values = [] for parameter_values_item_data in self.parameter_values: parameter_values_item = parameter_values_item_data.to_dict() parameter_values.append(parameter_values_item) + + + field_dict: dict[str, Any] = {} - field_dict.update( - { - "parameterValues": parameter_values, - } - ) + field_dict.update({ + "parameterValues": parameter_values, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.extension_parameter_value import ExtensionParameterValue - d = dict(src_dict) parameter_values = [] _parameter_values = d.pop("parameterValues") - for parameter_values_item_data in _parameter_values: - parameter_values_item = ExtensionParameterValue.from_dict( - parameter_values_item_data - ) + for parameter_values_item_data in (_parameter_values): + parameter_values_item = ExtensionParameterValue.from_dict(parameter_values_item_data) + + parameter_values.append(parameter_values_item) + create_extension_instance = cls( parameter_values=parameter_values, ) return create_extension_instance + diff --git a/exasol/saas/client/openapi/models/database_settings.py b/exasol/saas/client/openapi/models/database_settings.py index 15f7e866..21500a59 100644 --- a/exasol/saas/client/openapi/models/database_settings.py +++ b/exasol/saas/client/openapi/models/database_settings.py @@ -1,38 +1,34 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="DatabaseSettings") + @_attrs_define class DatabaseSettings: - """ - Attributes: - offload_enabled (bool): - auto_updates_enabled (bool): - auto_updates_hard_disabled (bool): - num_nodes (int): - stream_type (str): - stream_description (str): - """ + """ + Attributes: + offload_enabled (bool): + auto_updates_enabled (bool): + auto_updates_hard_disabled (bool): + num_nodes (int): + stream_type (str): + stream_description (str): + """ offload_enabled: bool auto_updates_enabled: bool @@ -41,6 +37,10 @@ class DatabaseSettings: stream_type: str stream_description: str + + + + def to_dict(self) -> dict[str, Any]: offload_enabled = self.offload_enabled @@ -54,21 +54,22 @@ def to_dict(self) -> dict[str, Any]: stream_description = self.stream_description + field_dict: dict[str, Any] = {} - field_dict.update( - { - "offloadEnabled": offload_enabled, - "autoUpdatesEnabled": auto_updates_enabled, - "autoUpdatesHardDisabled": auto_updates_hard_disabled, - "numNodes": num_nodes, - "streamType": stream_type, - "streamDescription": stream_description, - } - ) + field_dict.update({ + "offloadEnabled": offload_enabled, + "autoUpdatesEnabled": auto_updates_enabled, + "autoUpdatesHardDisabled": auto_updates_hard_disabled, + "numNodes": num_nodes, + "streamType": stream_type, + "streamDescription": stream_description, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -94,3 +95,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return database_settings + diff --git a/exasol/saas/client/openapi/models/database_upgrade_info.py b/exasol/saas/client/openapi/models/database_upgrade_info.py index e9cb29d0..79b9eedd 100644 --- a/exasol/saas/client/openapi/models/database_upgrade_info.py +++ b/exasol/saas/client/openapi/models/database_upgrade_info.py @@ -1,41 +1,41 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="DatabaseUpgradeInfo") + @_attrs_define class DatabaseUpgradeInfo: - """ - Attributes: - current_version (str): - update_version (str): - update_possible (bool): - """ + """ + Attributes: + current_version (str): + update_version (str): + update_possible (bool): + """ current_version: str update_version: str update_possible: bool additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + + + def to_dict(self) -> dict[str, Any]: current_version = self.current_version @@ -43,18 +43,19 @@ def to_dict(self) -> dict[str, Any]: update_possible = self.update_possible + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) - field_dict.update( - { - "currentVersion": current_version, - "updateVersion": update_version, - "updatePossible": update_possible, - } - ) + field_dict.update({ + "currentVersion": current_version, + "updateVersion": update_version, + "updatePossible": update_possible, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -70,6 +71,7 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: update_possible=update_possible, ) + database_upgrade_info.additional_properties = d return database_upgrade_info diff --git a/exasol/saas/client/openapi/models/dlhc_activate_status.py b/exasol/saas/client/openapi/models/dlhc_activate_status.py index e8ad86d5..9795e1b1 100644 --- a/exasol/saas/client/openapi/models/dlhc_activate_status.py +++ b/exasol/saas/client/openapi/models/dlhc_activate_status.py @@ -1,55 +1,56 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="DlhcActivateStatus") + @_attrs_define class DlhcActivateStatus: - """ - Attributes: - status (str): - created_at (str): - """ + """ + Attributes: + status (str): + created_at (str): + """ status: str created_at: str additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + + + def to_dict(self) -> dict[str, Any]: status = self.status created_at = self.created_at + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) - field_dict.update( - { - "status": status, - "created_at": created_at, - } - ) + field_dict.update({ + "status": status, + "created_at": created_at, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -62,6 +63,7 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: created_at=created_at, ) + dlhc_activate_status.additional_properties = d return dlhc_activate_status diff --git a/exasol/saas/client/openapi/models/download_file.py b/exasol/saas/client/openapi/models/download_file.py index 5dd5beaa..b9514ed2 100644 --- a/exasol/saas/client/openapi/models/download_file.py +++ b/exasol/saas/client/openapi/models/download_file.py @@ -1,49 +1,50 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="DownloadFile") + @_attrs_define class DownloadFile: - """ - Attributes: - url (str): - """ + """ + Attributes: + url (str): + """ url: str + + + + def to_dict(self) -> dict[str, Any]: url = self.url + field_dict: dict[str, Any] = {} - field_dict.update( - { - "url": url, - } - ) + field_dict.update({ + "url": url, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -54,3 +55,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return download_file + diff --git a/exasol/saas/client/openapi/models/exasol_database.py b/exasol/saas/client/openapi/models/exasol_database.py index 53cdb648..47e03d5c 100644 --- a/exasol/saas/client/openapi/models/exasol_database.py +++ b/exasol/saas/client/openapi/models/exasol_database.py @@ -1,75 +1,68 @@ -import datetime -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from dateutil.parser import isoparse + +from ..types import UNSET, Unset from ..models.status import Status -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset +from dateutil.parser import isoparse +from typing import cast +import datetime if TYPE_CHECKING: - from ..models.exasol_database_clusters import ExasolDatabaseClusters - from ..models.exasol_database_integrations_item import ( - ExasolDatabaseIntegrationsItem, - ) + from ..models.exasol_database_clusters import ExasolDatabaseClusters + from ..models.exasol_database_integrations_item import ExasolDatabaseIntegrationsItem + + + T = TypeVar("T", bound="ExasolDatabase") + @_attrs_define class ExasolDatabase: - """ - Attributes: - status (Status): - id (str): - name (str): - clusters (ExasolDatabaseClusters): - provider (str): - region (str): - created_at (datetime.datetime): - created_by (str): - integrations (Union[Unset, list['ExasolDatabaseIntegrationsItem']]): - deleted_by (Union[Unset, str]): - deleted_at (Union[Unset, datetime.datetime]): - """ + """ + Attributes: + status (Status): + id (str): + name (str): + clusters (ExasolDatabaseClusters): + provider (str): + region (str): + created_at (datetime.datetime): + created_by (str): + integrations (list[ExasolDatabaseIntegrationsItem] | Unset): + deleted_by (str | Unset): + deleted_at (datetime.datetime | Unset): + """ status: Status id: str name: str - clusters: "ExasolDatabaseClusters" + clusters: ExasolDatabaseClusters provider: str region: str created_at: datetime.datetime created_by: str - integrations: Union[Unset, list["ExasolDatabaseIntegrationsItem"]] = UNSET - deleted_by: Union[Unset, str] = UNSET - deleted_at: Union[Unset, datetime.datetime] = UNSET + integrations: list[ExasolDatabaseIntegrationsItem] | Unset = UNSET + deleted_by: str | Unset = UNSET + deleted_at: datetime.datetime | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + + + def to_dict(self) -> dict[str, Any]: + from ..models.exasol_database_integrations_item import ExasolDatabaseIntegrationsItem from ..models.exasol_database_clusters import ExasolDatabaseClusters - from ..models.exasol_database_integrations_item import ( - ExasolDatabaseIntegrationsItem, - ) - status = self.status.value id = self.id @@ -86,33 +79,34 @@ def to_dict(self) -> dict[str, Any]: created_by = self.created_by - integrations: Union[Unset, list[dict[str, Any]]] = UNSET + integrations: list[dict[str, Any]] | Unset = UNSET if not isinstance(self.integrations, Unset): integrations = [] for integrations_item_data in self.integrations: integrations_item = integrations_item_data.to_dict() integrations.append(integrations_item) + + deleted_by = self.deleted_by - deleted_at: Union[Unset, str] = UNSET + deleted_at: str | Unset = UNSET if not isinstance(self.deleted_at, Unset): deleted_at = self.deleted_at.isoformat() + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) - field_dict.update( - { - "status": status, - "id": id, - "name": name, - "clusters": clusters, - "provider": provider, - "region": region, - "createdAt": created_at, - "createdBy": created_by, - } - ) + field_dict.update({ + "status": status, + "id": id, + "name": name, + "clusters": clusters, + "provider": provider, + "region": region, + "createdAt": created_at, + "createdBy": created_by, + }) if integrations is not UNSET: field_dict["integrations"] = integrations if deleted_by is not UNSET: @@ -122,48 +116,62 @@ def to_dict(self) -> dict[str, Any]: return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.exasol_database_clusters import ExasolDatabaseClusters - from ..models.exasol_database_integrations_item import ( - ExasolDatabaseIntegrationsItem, - ) - + from ..models.exasol_database_integrations_item import ExasolDatabaseIntegrationsItem d = dict(src_dict) status = Status(d.pop("status")) + + + id = d.pop("id") name = d.pop("name") clusters = ExasolDatabaseClusters.from_dict(d.pop("clusters")) + + + provider = d.pop("provider") region = d.pop("region") created_at = isoparse(d.pop("createdAt")) + + + created_by = d.pop("createdBy") - integrations = [] _integrations = d.pop("integrations", UNSET) - for integrations_item_data in _integrations or []: - integrations_item = ExasolDatabaseIntegrationsItem.from_dict( - integrations_item_data - ) + integrations: list[ExasolDatabaseIntegrationsItem] | Unset = UNSET + if _integrations is not UNSET: + integrations = [] + for integrations_item_data in _integrations: + integrations_item = ExasolDatabaseIntegrationsItem.from_dict(integrations_item_data) + + + + integrations.append(integrations_item) - integrations.append(integrations_item) deleted_by = d.pop("deletedBy", UNSET) _deleted_at = d.pop("deletedAt", UNSET) - deleted_at: Union[Unset, datetime.datetime] - if isinstance(_deleted_at, Unset): + deleted_at: datetime.datetime | Unset + if isinstance(_deleted_at, Unset): deleted_at = UNSET else: deleted_at = isoparse(_deleted_at) + + + exasol_database = cls( status=status, id=id, @@ -178,6 +186,7 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: deleted_at=deleted_at, ) + exasol_database.additional_properties = d return exasol_database diff --git a/exasol/saas/client/openapi/models/exasol_database_clusters.py b/exasol/saas/client/openapi/models/exasol_database_clusters.py index 6e2d09e1..addd7e61 100644 --- a/exasol/saas/client/openapi/models/exasol_database_clusters.py +++ b/exasol/saas/client/openapi/models/exasol_database_clusters.py @@ -1,54 +1,55 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="ExasolDatabaseClusters") + @_attrs_define class ExasolDatabaseClusters: - """ - Attributes: - total (int): - running (int): - """ + """ + Attributes: + total (int): + running (int): + """ total: int running: int + + + + def to_dict(self) -> dict[str, Any]: total = self.total running = self.running + field_dict: dict[str, Any] = {} - field_dict.update( - { - "total": total, - "running": running, - } - ) + field_dict.update({ + "total": total, + "running": running, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -62,3 +63,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return exasol_database_clusters + diff --git a/exasol/saas/client/openapi/models/exasol_database_integrations_item.py b/exasol/saas/client/openapi/models/exasol_database_integrations_item.py index a1ba1933..c614526e 100644 --- a/exasol/saas/client/openapi/models/exasol_database_integrations_item.py +++ b/exasol/saas/client/openapi/models/exasol_database_integrations_item.py @@ -1,42 +1,42 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from ..types import UNSET, Unset + + + + + T = TypeVar("T", bound="ExasolDatabaseIntegrationsItem") + @_attrs_define class ExasolDatabaseIntegrationsItem: - """ - Attributes: - id (str): - name (str): - url (Union[Unset, str]): - """ + """ + Attributes: + id (str): + name (str): + url (str | Unset): + """ id: str name: str - url: Union[Unset, str] = UNSET + url: str | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + + + def to_dict(self) -> dict[str, Any]: id = self.id @@ -44,19 +44,20 @@ def to_dict(self) -> dict[str, Any]: url = self.url + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) - field_dict.update( - { - "id": id, - "name": name, - } - ) + field_dict.update({ + "id": id, + "name": name, + }) if url is not UNSET: field_dict["url"] = url return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -72,6 +73,7 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: url=url, ) + exasol_database_integrations_item.additional_properties = d return exasol_database_integrations_item diff --git a/exasol/saas/client/openapi/models/extension.py b/exasol/saas/client/openapi/models/extension.py index 1e0d7426..cd1fb3ee 100644 --- a/exasol/saas/client/openapi/models/extension.py +++ b/exasol/saas/client/openapi/models/extension.py @@ -1,52 +1,49 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from typing import cast if TYPE_CHECKING: - from ..models.extension_version import ExtensionVersion + from ..models.extension_version import ExtensionVersion + + + T = TypeVar("T", bound="Extension") + @_attrs_define class Extension: - """ - Attributes: - id (str): - name (str): - description (str): - category_id (str): - installable_versions (list['ExtensionVersion']): - """ + """ + Attributes: + id (str): + name (str): + description (str): + category_id (str): + installable_versions (list[ExtensionVersion]): + """ id: str name: str description: str category_id: str - installable_versions: list["ExtensionVersion"] + installable_versions: list[ExtensionVersion] + + + + def to_dict(self) -> dict[str, Any]: from ..models.extension_version import ExtensionVersion - id = self.id name = self.name @@ -60,24 +57,26 @@ def to_dict(self) -> dict[str, Any]: installable_versions_item = installable_versions_item_data.to_dict() installable_versions.append(installable_versions_item) + + + field_dict: dict[str, Any] = {} - field_dict.update( - { - "id": id, - "name": name, - "description": description, - "categoryId": category_id, - "installableVersions": installable_versions, - } - ) + field_dict.update({ + "id": id, + "name": name, + "description": description, + "categoryId": category_id, + "installableVersions": installable_versions, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.extension_version import ExtensionVersion - d = dict(src_dict) id = d.pop("id") @@ -89,13 +88,14 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: installable_versions = [] _installable_versions = d.pop("installableVersions") - for installable_versions_item_data in _installable_versions: - installable_versions_item = ExtensionVersion.from_dict( - installable_versions_item_data - ) + for installable_versions_item_data in (_installable_versions): + installable_versions_item = ExtensionVersion.from_dict(installable_versions_item_data) + + installable_versions.append(installable_versions_item) + extension = cls( id=id, name=name, @@ -105,3 +105,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return extension + diff --git a/exasol/saas/client/openapi/models/extension_detail.py b/exasol/saas/client/openapi/models/extension_detail.py index ba22653a..cf584f42 100644 --- a/exasol/saas/client/openapi/models/extension_detail.py +++ b/exasol/saas/client/openapi/models/extension_detail.py @@ -1,50 +1,45 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from typing import cast if TYPE_CHECKING: - from ..models.extension_parameter_definitions import ExtensionParameterDefinitions + from ..models.extension_parameter_definitions import ExtensionParameterDefinitions + + + T = TypeVar("T", bound="ExtensionDetail") + @_attrs_define class ExtensionDetail: - """ - Attributes: - id (str): - version (str): - parameter_definitions (list['ExtensionParameterDefinitions']): - """ + """ + Attributes: + id (str): + version (str): + parameter_definitions (list[ExtensionParameterDefinitions]): + """ id: str version: str - parameter_definitions: list["ExtensionParameterDefinitions"] + parameter_definitions: list[ExtensionParameterDefinitions] + - def to_dict(self) -> dict[str, Any]: - from ..models.extension_parameter_definitions import ( - ExtensionParameterDefinitions, - ) + + + def to_dict(self) -> dict[str, Any]: + from ..models.extension_parameter_definitions import ExtensionParameterDefinitions id = self.id version = self.version @@ -54,24 +49,24 @@ def to_dict(self) -> dict[str, Any]: parameter_definitions_item = parameter_definitions_item_data.to_dict() parameter_definitions.append(parameter_definitions_item) + + + field_dict: dict[str, Any] = {} - field_dict.update( - { - "id": id, - "version": version, - "parameterDefinitions": parameter_definitions, - } - ) + field_dict.update({ + "id": id, + "version": version, + "parameterDefinitions": parameter_definitions, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: - from ..models.extension_parameter_definitions import ( - ExtensionParameterDefinitions, - ) - + from ..models.extension_parameter_definitions import ExtensionParameterDefinitions d = dict(src_dict) id = d.pop("id") @@ -79,13 +74,14 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: parameter_definitions = [] _parameter_definitions = d.pop("parameterDefinitions") - for parameter_definitions_item_data in _parameter_definitions: - parameter_definitions_item = ExtensionParameterDefinitions.from_dict( - parameter_definitions_item_data - ) + for parameter_definitions_item_data in (_parameter_definitions): + parameter_definitions_item = ExtensionParameterDefinitions.from_dict(parameter_definitions_item_data) + + parameter_definitions.append(parameter_definitions_item) + extension_detail = cls( id=id, version=version, @@ -93,3 +89,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return extension_detail + diff --git a/exasol/saas/client/openapi/models/extension_instance.py b/exasol/saas/client/openapi/models/extension_instance.py index 6c0ca6da..c83d44df 100644 --- a/exasol/saas/client/openapi/models/extension_instance.py +++ b/exasol/saas/client/openapi/models/extension_instance.py @@ -1,54 +1,55 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="ExtensionInstance") + @_attrs_define class ExtensionInstance: - """ - Attributes: - id (str): - name (str): - """ + """ + Attributes: + id (str): + name (str): + """ id: str name: str + + + + def to_dict(self) -> dict[str, Any]: id = self.id name = self.name + field_dict: dict[str, Any] = {} - field_dict.update( - { - "id": id, - "name": name, - } - ) + field_dict.update({ + "id": id, + "name": name, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -62,3 +63,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return extension_instance + diff --git a/exasol/saas/client/openapi/models/extension_parameter_definitions.py b/exasol/saas/client/openapi/models/extension_parameter_definitions.py index 46a34ee1..4142a3b5 100644 --- a/exasol/saas/client/openapi/models/extension_parameter_definitions.py +++ b/exasol/saas/client/openapi/models/extension_parameter_definitions.py @@ -1,40 +1,40 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from ..types import UNSET, Unset + + + + + T = TypeVar("T", bound="ExtensionParameterDefinitions") + @_attrs_define class ExtensionParameterDefinitions: - """ - Attributes: - id (str): - name (str): - raw_definition (Union[Unset, Any]): - """ + """ + Attributes: + id (str): + name (str): + raw_definition (Any | Unset): + """ id: str name: str - raw_definition: Union[Unset, Any] = UNSET + raw_definition: Any | Unset = UNSET + + + + def to_dict(self) -> dict[str, Any]: id = self.id @@ -43,19 +43,20 @@ def to_dict(self) -> dict[str, Any]: raw_definition = self.raw_definition + field_dict: dict[str, Any] = {} - field_dict.update( - { - "id": id, - "name": name, - } - ) + field_dict.update({ + "id": id, + "name": name, + }) if raw_definition is not UNSET: field_dict["rawDefinition"] = raw_definition return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -72,3 +73,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return extension_parameter_definitions + diff --git a/exasol/saas/client/openapi/models/extension_parameter_value.py b/exasol/saas/client/openapi/models/extension_parameter_value.py index 459dcdc6..49be83bb 100644 --- a/exasol/saas/client/openapi/models/extension_parameter_value.py +++ b/exasol/saas/client/openapi/models/extension_parameter_value.py @@ -1,54 +1,55 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="ExtensionParameterValue") + @_attrs_define class ExtensionParameterValue: - """ - Attributes: - id (str): - value (str): - """ + """ + Attributes: + id (str): + value (str): + """ id: str value: str + + + + def to_dict(self) -> dict[str, Any]: id = self.id value = self.value + field_dict: dict[str, Any] = {} - field_dict.update( - { - "id": id, - "value": value, - } - ) + field_dict.update({ + "id": id, + "value": value, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -62,3 +63,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return extension_parameter_value + diff --git a/exasol/saas/client/openapi/models/extension_version.py b/exasol/saas/client/openapi/models/extension_version.py index 35c9669a..b92d5871 100644 --- a/exasol/saas/client/openapi/models/extension_version.py +++ b/exasol/saas/client/openapi/models/extension_version.py @@ -1,42 +1,42 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="ExtensionVersion") + @_attrs_define class ExtensionVersion: - """ - Attributes: - version (str): - latest (bool): - deprecated (bool): - installed (bool): - """ + """ + Attributes: + version (str): + latest (bool): + deprecated (bool): + installed (bool): + """ version: str latest: bool deprecated: bool installed: bool + + + + def to_dict(self) -> dict[str, Any]: version = self.version @@ -46,19 +46,20 @@ def to_dict(self) -> dict[str, Any]: installed = self.installed + field_dict: dict[str, Any] = {} - field_dict.update( - { - "version": version, - "latest": latest, - "deprecated": deprecated, - "installed": installed, - } - ) + field_dict.update({ + "version": version, + "latest": latest, + "deprecated": deprecated, + "installed": installed, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -78,3 +79,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return extension_version + diff --git a/exasol/saas/client/openapi/models/file.py b/exasol/saas/client/openapi/models/file.py index 570ab177..c7a09ddc 100644 --- a/exasol/saas/client/openapi/models/file.py +++ b/exasol/saas/client/openapi/models/file.py @@ -1,49 +1,49 @@ -import datetime -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +from ..types import UNSET, Unset from dateutil.parser import isoparse +from typing import cast +import datetime + + + + -from ..types import ( - UNSET, - Unset, -) T = TypeVar("T", bound="File") + @_attrs_define class File: - """ - Attributes: - name (str): - type_ (str): - path (str): - last_modified (datetime.datetime): - size (Union[Unset, int]): - children (Union[Unset, list['File']]): - """ + """ + Attributes: + name (str): + type_ (str): + path (str): + last_modified (datetime.datetime): + size (int | Unset): + children (list[File] | Unset): + """ name: str type_: str path: str last_modified: datetime.datetime - size: Union[Unset, int] = UNSET - children: Union[Unset, list["File"]] = UNSET + size: int | Unset = UNSET + children: list[File] | Unset = UNSET + + + + def to_dict(self) -> dict[str, Any]: name = self.name @@ -56,23 +56,24 @@ def to_dict(self) -> dict[str, Any]: size = self.size - children: Union[Unset, list[dict[str, Any]]] = UNSET + children: list[dict[str, Any]] | Unset = UNSET if not isinstance(self.children, Unset): children = [] for children_item_data in self.children: children_item = children_item_data.to_dict() children.append(children_item) + + + field_dict: dict[str, Any] = {} - field_dict.update( - { - "name": name, - "type": type_, - "path": path, - "lastModified": last_modified, - } - ) + field_dict.update({ + "name": name, + "type": type_, + "path": path, + "lastModified": last_modified, + }) if size is not UNSET: field_dict["size"] = size if children is not UNSET: @@ -80,6 +81,8 @@ def to_dict(self) -> dict[str, Any]: return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -91,14 +94,22 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: last_modified = isoparse(d.pop("lastModified")) + + + size = d.pop("size", UNSET) - children = [] _children = d.pop("children", UNSET) - for children_item_data in _children or []: - children_item = File.from_dict(children_item_data) + children: list[File] | Unset = UNSET + if _children is not UNSET: + children = [] + for children_item_data in _children: + children_item = File.from_dict(children_item_data) + + + + children.append(children_item) - children.append(children_item) file = cls( name=name, @@ -110,3 +121,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return file + diff --git a/exasol/saas/client/openapi/models/get_usage_type.py b/exasol/saas/client/openapi/models/get_usage_type.py index 723f200f..1d924bac 100644 --- a/exasol/saas/client/openapi/models/get_usage_type.py +++ b/exasol/saas/client/openapi/models/get_usage_type.py @@ -1,6 +1,5 @@ from enum import Enum - class GetUsageType(str, Enum): CSV = "csv" JSON = "json" diff --git a/exasol/saas/client/openapi/models/patch_user.py b/exasol/saas/client/openapi/models/patch_user.py index 718463ae..f0d261b2 100644 --- a/exasol/saas/client/openapi/models/patch_user.py +++ b/exasol/saas/client/openapi/models/patch_user.py @@ -1,60 +1,59 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from ..types import UNSET, Unset +from typing import cast if TYPE_CHECKING: - from ..models.patch_user_databases import PatchUserDatabases + from ..models.patch_user_databases import PatchUserDatabases + + + T = TypeVar("T", bound="PatchUser") + @_attrs_define class PatchUser: - """ - Attributes: - role_id (Union[Unset, str]): - databases (Union[Unset, PatchUserDatabases]): - db_username (Union[Unset, str]): - """ + """ + Attributes: + role_id (str | Unset): + databases (PatchUserDatabases | Unset): + db_username (str | Unset): + """ + + role_id: str | Unset = UNSET + databases: PatchUserDatabases | Unset = UNSET + db_username: str | Unset = UNSET + + + - role_id: Union[Unset, str] = UNSET - databases: Union[Unset, "PatchUserDatabases"] = UNSET - db_username: Union[Unset, str] = UNSET def to_dict(self) -> dict[str, Any]: from ..models.patch_user_databases import PatchUserDatabases - role_id = self.role_id - databases: Union[Unset, dict[str, Any]] = UNSET + databases: dict[str, Any] | Unset = UNSET if not isinstance(self.databases, Unset): databases = self.databases.to_dict() db_username = self.db_username + field_dict: dict[str, Any] = {} - field_dict.update({}) + field_dict.update({ + }) if role_id is not UNSET: field_dict["roleID"] = role_id if databases is not UNSET: @@ -64,20 +63,24 @@ def to_dict(self) -> dict[str, Any]: return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.patch_user_databases import PatchUserDatabases - d = dict(src_dict) role_id = d.pop("roleID", UNSET) _databases = d.pop("databases", UNSET) - databases: Union[Unset, PatchUserDatabases] - if isinstance(_databases, Unset): + databases: PatchUserDatabases | Unset + if isinstance(_databases, Unset): databases = UNSET else: databases = PatchUserDatabases.from_dict(_databases) + + + db_username = d.pop("dbUsername", UNSET) patch_user = cls( @@ -87,3 +90,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return patch_user + diff --git a/exasol/saas/client/openapi/models/patch_user_databases.py b/exasol/saas/client/openapi/models/patch_user_databases.py index ca1e5f4b..8b6c2598 100644 --- a/exasol/saas/client/openapi/models/patch_user_databases.py +++ b/exasol/saas/client/openapi/models/patch_user_databases.py @@ -1,65 +1,73 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from typing import cast + + + + + T = TypeVar("T", bound="PatchUserDatabases") + @_attrs_define class PatchUserDatabases: - """ - Attributes: - delete (list[str]): - add (list[str]): - """ + """ + Attributes: + delete (list[str]): + add (list[str]): + """ delete: list[str] add: list[str] + + + + def to_dict(self) -> dict[str, Any]: delete = self.delete + + add = self.add + + + field_dict: dict[str, Any] = {} - field_dict.update( - { - "delete": delete, - "add": add, - } - ) + field_dict.update({ + "delete": delete, + "add": add, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) delete = cast(list[str], d.pop("delete")) + add = cast(list[str], d.pop("add")) + patch_user_databases = cls( delete=delete, add=add, ) return patch_user_databases + diff --git a/exasol/saas/client/openapi/models/platform.py b/exasol/saas/client/openapi/models/platform.py index 872d85d1..e0c61489 100644 --- a/exasol/saas/client/openapi/models/platform.py +++ b/exasol/saas/client/openapi/models/platform.py @@ -1,54 +1,55 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="Platform") + @_attrs_define class Platform: - """ - Attributes: - id (str): - name (str): - """ + """ + Attributes: + id (str): + name (str): + """ id: str name: str + + + + def to_dict(self) -> dict[str, Any]: id = self.id name = self.name + field_dict: dict[str, Any] = {} - field_dict.update( - { - "id": id, - "name": name, - } - ) + field_dict.update({ + "id": id, + "name": name, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -62,3 +63,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return platform + diff --git a/exasol/saas/client/openapi/models/region.py b/exasol/saas/client/openapi/models/region.py index 72258642..91013d1a 100644 --- a/exasol/saas/client/openapi/models/region.py +++ b/exasol/saas/client/openapi/models/region.py @@ -1,42 +1,42 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="Region") + @_attrs_define class Region: - """ - Attributes: - id (str): - name (str): - price_multiplier (float): - storage_price (float): - """ + """ + Attributes: + id (str): + name (str): + price_multiplier (float): + storage_price (float): + """ id: str name: str price_multiplier: float storage_price: float + + + + def to_dict(self) -> dict[str, Any]: id = self.id @@ -46,19 +46,20 @@ def to_dict(self) -> dict[str, Any]: storage_price = self.storage_price + field_dict: dict[str, Any] = {} - field_dict.update( - { - "id": id, - "name": name, - "priceMultiplier": price_multiplier, - "storagePrice": storage_price, - } - ) + field_dict.update({ + "id": id, + "name": name, + "priceMultiplier": price_multiplier, + "storagePrice": storage_price, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -78,3 +79,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return region + diff --git a/exasol/saas/client/openapi/models/scale_cluster.py b/exasol/saas/client/openapi/models/scale_cluster.py index 85ee8265..825e477f 100644 --- a/exasol/saas/client/openapi/models/scale_cluster.py +++ b/exasol/saas/client/openapi/models/scale_cluster.py @@ -1,56 +1,57 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from ..types import UNSET, Unset + + + + + T = TypeVar("T", bound="ScaleCluster") + @_attrs_define class ScaleCluster: - """ - Attributes: - size (str): - family (Union[Unset, str]): - """ + """ + Attributes: + size (str): + family (str | Unset): + """ size: str - family: Union[Unset, str] = UNSET + family: str | Unset = UNSET + + + + def to_dict(self) -> dict[str, Any]: size = self.size family = self.family + field_dict: dict[str, Any] = {} - field_dict.update( - { - "size": size, - } - ) + field_dict.update({ + "size": size, + }) if family is not UNSET: field_dict["family"] = family return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -64,3 +65,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return scale_cluster + diff --git a/exasol/saas/client/openapi/models/schedule.py b/exasol/saas/client/openapi/models/schedule.py index 0da2d6ff..60ec00be 100644 --- a/exasol/saas/client/openapi/models/schedule.py +++ b/exasol/saas/client/openapi/models/schedule.py @@ -1,69 +1,67 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field +from ..types import UNSET, Unset + from ..models.schedule_action_type_0 import ScheduleActionType0 from ..models.schedule_state import ScheduleState -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset +from typing import cast if TYPE_CHECKING: - from ..models.cluster_action_scale import ClusterActionScale - from ..models.cluster_action_start_stop import ClusterActionStartStop + from ..models.cluster_action_scale import ClusterActionScale + from ..models.cluster_action_start_stop import ClusterActionStartStop + + + T = TypeVar("T", bound="Schedule") + @_attrs_define class Schedule: - """ - Attributes: - action (ScheduleActionType0): - cron_rule (str): cron rule in format: - id (Union[Unset, str]): - createdby_id (Union[Unset, str]): - createdby_first_name (Union[Unset, str]): - createdby_last_name (Union[Unset, str]): - cluster_name (Union[Unset, str]): - payload (Union['ClusterActionScale', 'ClusterActionStartStop', Unset]): - state (Union[Unset, ScheduleState]): - """ + """ + Attributes: + action (ScheduleActionType0): + cron_rule (str): cron rule in format: + id (str | Unset): + createdby_id (str | Unset): + createdby_first_name (str | Unset): + createdby_last_name (str | Unset): + cluster_name (str | Unset): + payload (ClusterActionScale | ClusterActionStartStop | Unset): + state (ScheduleState | Unset): + """ action: ScheduleActionType0 cron_rule: str - id: Union[Unset, str] = UNSET - createdby_id: Union[Unset, str] = UNSET - createdby_first_name: Union[Unset, str] = UNSET - createdby_last_name: Union[Unset, str] = UNSET - cluster_name: Union[Unset, str] = UNSET - payload: Union["ClusterActionScale", "ClusterActionStartStop", Unset] = UNSET - state: Union[Unset, ScheduleState] = UNSET + id: str | Unset = UNSET + createdby_id: str | Unset = UNSET + createdby_first_name: str | Unset = UNSET + createdby_last_name: str | Unset = UNSET + cluster_name: str | Unset = UNSET + payload: ClusterActionScale | ClusterActionStartStop | Unset = UNSET + state: ScheduleState | Unset = UNSET + + + + def to_dict(self) -> dict[str, Any]: - from ..models.cluster_action_scale import ClusterActionScale from ..models.cluster_action_start_stop import ClusterActionStartStop - + from ..models.cluster_action_scale import ClusterActionScale action: str if isinstance(self.action, ScheduleActionType0): action = self.action.value + cron_rule = self.cron_rule id = self.id @@ -76,7 +74,7 @@ def to_dict(self) -> dict[str, Any]: cluster_name = self.cluster_name - payload: Union[Unset, dict[str, Any]] + payload: dict[str, Any] | Unset if isinstance(self.payload, Unset): payload = UNSET elif isinstance(self.payload, ClusterActionScale): @@ -84,18 +82,19 @@ def to_dict(self) -> dict[str, Any]: else: payload = self.payload.to_dict() - state: Union[Unset, str] = UNSET + + state: str | Unset = UNSET if not isinstance(self.state, Unset): state = self.state.value + + field_dict: dict[str, Any] = {} - field_dict.update( - { - "action": action, - "cronRule": cron_rule, - } - ) + field_dict.update({ + "action": action, + "cronRule": cron_rule, + }) if id is not UNSET: field_dict["id"] = id if createdby_id is not UNSET: @@ -113,22 +112,25 @@ def to_dict(self) -> dict[str, Any]: return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.cluster_action_scale import ClusterActionScale from ..models.cluster_action_start_stop import ClusterActionStartStop - d = dict(src_dict) - def _parse_action(data: object) -> ScheduleActionType0: if not isinstance(data, str): raise TypeError() action_type_0 = ScheduleActionType0(data) + + return action_type_0 action = _parse_action(d.pop("action")) + cron_rule = d.pop("cronRule") id = d.pop("id", UNSET) @@ -141,9 +143,7 @@ def _parse_action(data: object) -> ScheduleActionType0: cluster_name = d.pop("clusterName", UNSET) - def _parse_payload( - data: object, - ) -> Union["ClusterActionScale", "ClusterActionStartStop", Unset]: + def _parse_payload(data: object) -> ClusterActionScale | ClusterActionStartStop | Unset: if isinstance(data, Unset): return data try: @@ -151,24 +151,32 @@ def _parse_payload( raise TypeError() payload_type_0 = ClusterActionScale.from_dict(data) + + return payload_type_0 - except: # noqa: E722 + except (TypeError, ValueError, AttributeError, KeyError): pass if not isinstance(data, dict): raise TypeError() payload_type_1 = ClusterActionStartStop.from_dict(data) + + return payload_type_1 payload = _parse_payload(d.pop("payload", UNSET)) + _state = d.pop("state", UNSET) - state: Union[Unset, ScheduleState] - if isinstance(_state, Unset): + state: ScheduleState | Unset + if isinstance(_state, Unset): state = UNSET else: state = ScheduleState(_state) + + + schedule = cls( action=action, cron_rule=cron_rule, @@ -182,3 +190,4 @@ def _parse_payload( ) return schedule + diff --git a/exasol/saas/client/openapi/models/schedule_action_type_0.py b/exasol/saas/client/openapi/models/schedule_action_type_0.py index a6bfe28c..72341a8f 100644 --- a/exasol/saas/client/openapi/models/schedule_action_type_0.py +++ b/exasol/saas/client/openapi/models/schedule_action_type_0.py @@ -1,6 +1,5 @@ from enum import Enum - class ScheduleActionType0(str, Enum): ACTIONCLUSTERSCALE = "ActionClusterScale" ACTIONCLUSTERSTART = "ActionClusterStart" diff --git a/exasol/saas/client/openapi/models/schedule_state.py b/exasol/saas/client/openapi/models/schedule_state.py index 0d2bb2ea..a2556e46 100644 --- a/exasol/saas/client/openapi/models/schedule_state.py +++ b/exasol/saas/client/openapi/models/schedule_state.py @@ -1,6 +1,5 @@ from enum import Enum - class ScheduleState(str, Enum): DISABLED = "DISABLED" ENABLED = "ENABLED" diff --git a/exasol/saas/client/openapi/models/set_auto_updates_database.py b/exasol/saas/client/openapi/models/set_auto_updates_database.py index 1000a6c9..7f8bfa7d 100644 --- a/exasol/saas/client/openapi/models/set_auto_updates_database.py +++ b/exasol/saas/client/openapi/models/set_auto_updates_database.py @@ -1,49 +1,50 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="SetAutoUpdatesDatabase") + @_attrs_define class SetAutoUpdatesDatabase: - """ - Attributes: - auto_updates_enabled (bool): - """ + """ + Attributes: + auto_updates_enabled (bool): + """ auto_updates_enabled: bool + + + + def to_dict(self) -> dict[str, Any]: auto_updates_enabled = self.auto_updates_enabled + field_dict: dict[str, Any] = {} - field_dict.update( - { - "autoUpdatesEnabled": auto_updates_enabled, - } - ) + field_dict.update({ + "autoUpdatesEnabled": auto_updates_enabled, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -54,3 +55,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return set_auto_updates_database + diff --git a/exasol/saas/client/openapi/models/status.py b/exasol/saas/client/openapi/models/status.py index 31e94e83..4fe66f85 100644 --- a/exasol/saas/client/openapi/models/status.py +++ b/exasol/saas/client/openapi/models/status.py @@ -1,6 +1,5 @@ from enum import Enum - class Status(str, Enum): CREATING = "creating" DELETED = "deleted" diff --git a/exasol/saas/client/openapi/models/update_allowed_ip.py b/exasol/saas/client/openapi/models/update_allowed_ip.py index 27d05c16..29d0b51d 100644 --- a/exasol/saas/client/openapi/models/update_allowed_ip.py +++ b/exasol/saas/client/openapi/models/update_allowed_ip.py @@ -1,54 +1,55 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="UpdateAllowedIP") + @_attrs_define class UpdateAllowedIP: - """ - Attributes: - name (str): - cidr_ip (str): - """ + """ + Attributes: + name (str): + cidr_ip (str): + """ name: str cidr_ip: str + + + + def to_dict(self) -> dict[str, Any]: name = self.name cidr_ip = self.cidr_ip + field_dict: dict[str, Any] = {} - field_dict.update( - { - "name": name, - "cidrIp": cidr_ip, - } - ) + field_dict.update({ + "name": name, + "cidrIp": cidr_ip, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -62,3 +63,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return update_allowed_ip + diff --git a/exasol/saas/client/openapi/models/update_cluster.py b/exasol/saas/client/openapi/models/update_cluster.py index b8e99a88..7e737f2a 100644 --- a/exasol/saas/client/openapi/models/update_cluster.py +++ b/exasol/saas/client/openapi/models/update_cluster.py @@ -1,64 +1,63 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from ..types import UNSET, Unset +from typing import cast if TYPE_CHECKING: - from ..models.auto_stop import AutoStop - from ..models.cluster_settings_update import ClusterSettingsUpdate + from ..models.auto_stop import AutoStop + from ..models.cluster_settings_update import ClusterSettingsUpdate + + + T = TypeVar("T", bound="UpdateCluster") + @_attrs_define class UpdateCluster: - """ - Attributes: - name (Union[Unset, str]): - auto_stop (Union[Unset, AutoStop]): - settings (Union[Unset, ClusterSettingsUpdate]): - """ + """ + Attributes: + name (str | Unset): + auto_stop (AutoStop | Unset): + settings (ClusterSettingsUpdate | Unset): + """ + + name: str | Unset = UNSET + auto_stop: AutoStop | Unset = UNSET + settings: ClusterSettingsUpdate | Unset = UNSET + + + - name: Union[Unset, str] = UNSET - auto_stop: Union[Unset, "AutoStop"] = UNSET - settings: Union[Unset, "ClusterSettingsUpdate"] = UNSET def to_dict(self) -> dict[str, Any]: from ..models.auto_stop import AutoStop from ..models.cluster_settings_update import ClusterSettingsUpdate - name = self.name - auto_stop: Union[Unset, dict[str, Any]] = UNSET + auto_stop: dict[str, Any] | Unset = UNSET if not isinstance(self.auto_stop, Unset): auto_stop = self.auto_stop.to_dict() - settings: Union[Unset, dict[str, Any]] = UNSET + settings: dict[str, Any] | Unset = UNSET if not isinstance(self.settings, Unset): settings = self.settings.to_dict() + field_dict: dict[str, Any] = {} - field_dict.update({}) + field_dict.update({ + }) if name is not UNSET: field_dict["name"] = name if auto_stop is not UNSET: @@ -68,28 +67,35 @@ def to_dict(self) -> dict[str, Any]: return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.auto_stop import AutoStop from ..models.cluster_settings_update import ClusterSettingsUpdate - d = dict(src_dict) name = d.pop("name", UNSET) _auto_stop = d.pop("autoStop", UNSET) - auto_stop: Union[Unset, AutoStop] - if isinstance(_auto_stop, Unset): + auto_stop: AutoStop | Unset + if isinstance(_auto_stop, Unset): auto_stop = UNSET else: auto_stop = AutoStop.from_dict(_auto_stop) + + + _settings = d.pop("settings", UNSET) - settings: Union[Unset, ClusterSettingsUpdate] - if isinstance(_settings, Unset): + settings: ClusterSettingsUpdate | Unset + if isinstance(_settings, Unset): settings = UNSET else: settings = ClusterSettingsUpdate.from_dict(_settings) + + + update_cluster = cls( name=name, auto_stop=auto_stop, @@ -97,3 +103,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return update_cluster + diff --git a/exasol/saas/client/openapi/models/update_database.py b/exasol/saas/client/openapi/models/update_database.py index 033a248f..15adaf7d 100644 --- a/exasol/saas/client/openapi/models/update_database.py +++ b/exasol/saas/client/openapi/models/update_database.py @@ -1,50 +1,51 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="UpdateDatabase") + @_attrs_define class UpdateDatabase: - """ - Attributes: - name (str): - """ + """ + Attributes: + name (str): + """ name: str additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + + + def to_dict(self) -> dict[str, Any]: name = self.name + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) - field_dict.update( - { - "name": name, - } - ) + field_dict.update({ + "name": name, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -54,6 +55,7 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: name=name, ) + update_database.additional_properties = d return update_database diff --git a/exasol/saas/client/openapi/models/update_profile.py b/exasol/saas/client/openapi/models/update_profile.py index d1c10272..b5dfed6e 100644 --- a/exasol/saas/client/openapi/models/update_profile.py +++ b/exasol/saas/client/openapi/models/update_profile.py @@ -1,54 +1,55 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="UpdateProfile") + @_attrs_define class UpdateProfile: - """ - Attributes: - first_name (str): - last_name (str): - """ + """ + Attributes: + first_name (str): + last_name (str): + """ first_name: str last_name: str + + + + def to_dict(self) -> dict[str, Any]: first_name = self.first_name last_name = self.last_name + field_dict: dict[str, Any] = {} - field_dict.update( - { - "firstName": first_name, - "lastName": last_name, - } - ) + field_dict.update({ + "firstName": first_name, + "lastName": last_name, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -62,3 +63,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return update_profile + diff --git a/exasol/saas/client/openapi/models/update_schedule_cron_rule.py b/exasol/saas/client/openapi/models/update_schedule_cron_rule.py index 4cef1ebf..88e34725 100644 --- a/exasol/saas/client/openapi/models/update_schedule_cron_rule.py +++ b/exasol/saas/client/openapi/models/update_schedule_cron_rule.py @@ -1,49 +1,50 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="UpdateScheduleCronRule") + @_attrs_define class UpdateScheduleCronRule: - """ - Attributes: - cron_rule (str): cron rule in format: - """ + """ + Attributes: + cron_rule (str): cron rule in format: + """ cron_rule: str + + + + def to_dict(self) -> dict[str, Any]: cron_rule = self.cron_rule + field_dict: dict[str, Any] = {} - field_dict.update( - { - "cronRule": cron_rule, - } - ) + field_dict.update({ + "cronRule": cron_rule, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -54,3 +55,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return update_schedule_cron_rule + diff --git a/exasol/saas/client/openapi/models/update_schedule_state.py b/exasol/saas/client/openapi/models/update_schedule_state.py index 3da1b1cb..7b269f18 100644 --- a/exasol/saas/client/openapi/models/update_schedule_state.py +++ b/exasol/saas/client/openapi/models/update_schedule_state.py @@ -1,57 +1,62 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field +from ..types import UNSET, Unset + from ..models.schedule_state import ScheduleState -from ..types import ( - UNSET, - Unset, -) + + + + + T = TypeVar("T", bound="UpdateScheduleState") + @_attrs_define class UpdateScheduleState: - """ - Attributes: - state (ScheduleState): - """ + """ + Attributes: + state (ScheduleState): + """ state: ScheduleState + + + + def to_dict(self) -> dict[str, Any]: state = self.state.value + field_dict: dict[str, Any] = {} - field_dict.update( - { - "state": state, - } - ) + field_dict.update({ + "state": state, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) state = ScheduleState(d.pop("state")) + + + update_schedule_state = cls( state=state, ) return update_schedule_state + diff --git a/exasol/saas/client/openapi/models/upload_file.py b/exasol/saas/client/openapi/models/upload_file.py index 292e67ec..4960745e 100644 --- a/exasol/saas/client/openapi/models/upload_file.py +++ b/exasol/saas/client/openapi/models/upload_file.py @@ -1,49 +1,50 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="UploadFile") + @_attrs_define class UploadFile: - """ - Attributes: - url (str): - """ + """ + Attributes: + url (str): + """ url: str + + + + def to_dict(self) -> dict[str, Any]: url = self.url + field_dict: dict[str, Any] = {} - field_dict.update( - { - "url": url, - } - ) + field_dict.update({ + "url": url, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -54,3 +55,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return upload_file + diff --git a/exasol/saas/client/openapi/models/usage.py b/exasol/saas/client/openapi/models/usage.py index d6b7952b..35a24479 100644 --- a/exasol/saas/client/openapi/models/usage.py +++ b/exasol/saas/client/openapi/models/usage.py @@ -1,43 +1,40 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from typing import cast if TYPE_CHECKING: - from ..models.usage_additional_property_item import UsageAdditionalPropertyItem + from ..models.usage_additional_property_item import UsageAdditionalPropertyItem + + + T = TypeVar("T", bound="Usage") + @_attrs_define class Usage: - """ """ + """ + """ + + additional_properties: dict[str, list[UsageAdditionalPropertyItem]] = _attrs_field(init=False, factory=dict) + + + - additional_properties: dict[str, list["UsageAdditionalPropertyItem"]] = ( - _attrs_field(init=False, factory=dict) - ) def to_dict(self) -> dict[str, Any]: from ..models.usage_additional_property_item import UsageAdditionalPropertyItem - + field_dict: dict[str, Any] = {} for prop_name, prop in self.additional_properties.items(): field_dict[prop_name] = [] @@ -45,23 +42,29 @@ def to_dict(self) -> dict[str, Any]: additional_property_item = additional_property_item_data.to_dict() field_dict[prop_name].append(additional_property_item) + + + return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.usage_additional_property_item import UsageAdditionalPropertyItem - d = dict(src_dict) - usage = cls() + usage = cls( + ) + additional_properties = {} for prop_name, prop_dict in d.items(): additional_property = [] _additional_property = prop_dict - for additional_property_item_data in _additional_property: - additional_property_item = UsageAdditionalPropertyItem.from_dict( - additional_property_item_data - ) + for additional_property_item_data in (_additional_property): + additional_property_item = UsageAdditionalPropertyItem.from_dict(additional_property_item_data) + + additional_property.append(additional_property_item) @@ -74,10 +77,10 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: def additional_keys(self) -> list[str]: return list(self.additional_properties.keys()) - def __getitem__(self, key: str) -> list["UsageAdditionalPropertyItem"]: + def __getitem__(self, key: str) -> list[UsageAdditionalPropertyItem]: return self.additional_properties[key] - def __setitem__(self, key: str, value: list["UsageAdditionalPropertyItem"]) -> None: + def __setitem__(self, key: str, value: list[UsageAdditionalPropertyItem]) -> None: self.additional_properties[key] = value def __delitem__(self, key: str) -> None: diff --git a/exasol/saas/client/openapi/models/usage_additional_property_item.py b/exasol/saas/client/openapi/models/usage_additional_property_item.py index b779e227..b4f8c9db 100644 --- a/exasol/saas/client/openapi/models/usage_additional_property_item.py +++ b/exasol/saas/client/openapi/models/usage_additional_property_item.py @@ -1,51 +1,48 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from ..types import UNSET, Unset +from typing import cast if TYPE_CHECKING: - from ..models.usage_cluster import UsageCluster + from ..models.usage_cluster import UsageCluster + + + T = TypeVar("T", bound="UsageAdditionalPropertyItem") + @_attrs_define class UsageAdditionalPropertyItem: - """ - Attributes: - id (str): - name (str): - clusters (list['UsageCluster']): - used_storage (Union[Unset, float]): - """ + """ + Attributes: + id (str): + name (str): + clusters (list[UsageCluster]): + used_storage (float | Unset): + """ id: str name: str - clusters: list["UsageCluster"] - used_storage: Union[Unset, float] = UNSET + clusters: list[UsageCluster] + used_storage: float | Unset = UNSET + + + + def to_dict(self) -> dict[str, Any]: from ..models.usage_cluster import UsageCluster - id = self.id name = self.name @@ -55,26 +52,28 @@ def to_dict(self) -> dict[str, Any]: clusters_item = clusters_item_data.to_dict() clusters.append(clusters_item) + + used_storage = self.used_storage + field_dict: dict[str, Any] = {} - field_dict.update( - { - "id": id, - "name": name, - "clusters": clusters, - } - ) + field_dict.update({ + "id": id, + "name": name, + "clusters": clusters, + }) if used_storage is not UNSET: field_dict["usedStorage"] = used_storage return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.usage_cluster import UsageCluster - d = dict(src_dict) id = d.pop("id") @@ -82,11 +81,14 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: clusters = [] _clusters = d.pop("clusters") - for clusters_item_data in _clusters: + for clusters_item_data in (_clusters): clusters_item = UsageCluster.from_dict(clusters_item_data) + + clusters.append(clusters_item) + used_storage = d.pop("usedStorage", UNSET) usage_additional_property_item = cls( @@ -97,3 +99,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return usage_additional_property_item + diff --git a/exasol/saas/client/openapi/models/usage_cluster.py b/exasol/saas/client/openapi/models/usage_cluster.py index a26529ab..dd8b8909 100644 --- a/exasol/saas/client/openapi/models/usage_cluster.py +++ b/exasol/saas/client/openapi/models/usage_cluster.py @@ -1,48 +1,48 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + +from ..types import UNSET, Unset + + + + + T = TypeVar("T", bound="UsageCluster") + @_attrs_define class UsageCluster: - """ - Attributes: - id (str): - size (str): - name (str): - compute (Union[Unset, float]): - out_same_region (Union[Unset, float]): - out_different_region (Union[Unset, float]): - out_internet (Union[Unset, float]): - """ + """ + Attributes: + id (str): + size (str): + name (str): + compute (float | Unset): + out_same_region (float | Unset): + out_different_region (float | Unset): + out_internet (float | Unset): + """ id: str size: str name: str - compute: Union[Unset, float] = UNSET - out_same_region: Union[Unset, float] = UNSET - out_different_region: Union[Unset, float] = UNSET - out_internet: Union[Unset, float] = UNSET + compute: float | Unset = UNSET + out_same_region: float | Unset = UNSET + out_different_region: float | Unset = UNSET + out_internet: float | Unset = UNSET + + + + def to_dict(self) -> dict[str, Any]: id = self.id @@ -59,15 +59,14 @@ def to_dict(self) -> dict[str, Any]: out_internet = self.out_internet + field_dict: dict[str, Any] = {} - field_dict.update( - { - "id": id, - "size": size, - "name": name, - } - ) + field_dict.update({ + "id": id, + "size": size, + "name": name, + }) if compute is not UNSET: field_dict["compute"] = compute if out_same_region is not UNSET: @@ -79,6 +78,8 @@ def to_dict(self) -> dict[str, Any]: return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -107,3 +108,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return usage_cluster + diff --git a/exasol/saas/client/openapi/models/user.py b/exasol/saas/client/openapi/models/user.py index df24eceb..7657cf20 100644 --- a/exasol/saas/client/openapi/models/user.py +++ b/exasol/saas/client/openapi/models/user.py @@ -1,70 +1,67 @@ -import datetime -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, - Union, - cast, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from dateutil.parser import isoparse + +from ..types import UNSET, Unset from ..models.user_status import UserStatus -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset +from dateutil.parser import isoparse +from typing import cast +import datetime if TYPE_CHECKING: - from ..models.user_database import UserDatabase - from ..models.user_role import UserRole + from ..models.user_database import UserDatabase + from ..models.user_role import UserRole + + + T = TypeVar("T", bound="User") + @_attrs_define class User: - """ - Attributes: - email (str): - id (str): - created_at (datetime.datetime): - created_by (str): - status (UserStatus): - roles (list['UserRole']): - is_deletable (bool): - first_name (Union[Unset, str]): - last_name (Union[Unset, str]): - databases (Union[Unset, list['UserDatabase']]): - db_username (Union[Unset, str]): - """ + """ + Attributes: + email (str): + id (str): + created_at (datetime.datetime): + created_by (str): + status (UserStatus): + roles (list[UserRole]): + is_deletable (bool): + first_name (str | Unset): + last_name (str | Unset): + databases (list[UserDatabase] | Unset): + db_username (str | Unset): + """ email: str id: str created_at: datetime.datetime created_by: str status: UserStatus - roles: list["UserRole"] + roles: list[UserRole] is_deletable: bool - first_name: Union[Unset, str] = UNSET - last_name: Union[Unset, str] = UNSET - databases: Union[Unset, list["UserDatabase"]] = UNSET - db_username: Union[Unset, str] = UNSET + first_name: str | Unset = UNSET + last_name: str | Unset = UNSET + databases: list[UserDatabase] | Unset = UNSET + db_username: str | Unset = UNSET + + + + def to_dict(self) -> dict[str, Any]: from ..models.user_database import UserDatabase from ..models.user_role import UserRole - email = self.email id = self.id @@ -80,34 +77,37 @@ def to_dict(self) -> dict[str, Any]: roles_item = roles_item_data.to_dict() roles.append(roles_item) + + is_deletable = self.is_deletable first_name = self.first_name last_name = self.last_name - databases: Union[Unset, list[dict[str, Any]]] = UNSET + databases: list[dict[str, Any]] | Unset = UNSET if not isinstance(self.databases, Unset): databases = [] for databases_item_data in self.databases: databases_item = databases_item_data.to_dict() databases.append(databases_item) + + db_username = self.db_username + field_dict: dict[str, Any] = {} - field_dict.update( - { - "email": email, - "id": id, - "createdAt": created_at, - "createdBy": created_by, - "status": status, - "roles": roles, - "isDeletable": is_deletable, - } - ) + field_dict.update({ + "email": email, + "id": id, + "createdAt": created_at, + "createdBy": created_by, + "status": status, + "roles": roles, + "isDeletable": is_deletable, + }) if first_name is not UNSET: field_dict["firstName"] = first_name if last_name is not UNSET: @@ -119,11 +119,12 @@ def to_dict(self) -> dict[str, Any]: return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.user_database import UserDatabase from ..models.user_role import UserRole - d = dict(src_dict) email = d.pop("email") @@ -131,29 +132,43 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: created_at = isoparse(d.pop("createdAt")) + + + created_by = d.pop("createdBy") status = UserStatus(d.pop("status")) + + + roles = [] _roles = d.pop("roles") - for roles_item_data in _roles: + for roles_item_data in (_roles): roles_item = UserRole.from_dict(roles_item_data) + + roles.append(roles_item) + is_deletable = d.pop("isDeletable") first_name = d.pop("firstName", UNSET) last_name = d.pop("lastName", UNSET) - databases = [] _databases = d.pop("databases", UNSET) - for databases_item_data in _databases or []: - databases_item = UserDatabase.from_dict(databases_item_data) + databases: list[UserDatabase] | Unset = UNSET + if _databases is not UNSET: + databases = [] + for databases_item_data in _databases: + databases_item = UserDatabase.from_dict(databases_item_data) + + + + databases.append(databases_item) - databases.append(databases_item) db_username = d.pop("dbUsername", UNSET) @@ -172,3 +187,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return user + diff --git a/exasol/saas/client/openapi/models/user_database.py b/exasol/saas/client/openapi/models/user_database.py index 9368189d..87502719 100644 --- a/exasol/saas/client/openapi/models/user_database.py +++ b/exasol/saas/client/openapi/models/user_database.py @@ -1,54 +1,55 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="UserDatabase") + @_attrs_define class UserDatabase: - """ - Attributes: - id (str): - name (str): - """ + """ + Attributes: + id (str): + name (str): + """ id: str name: str + + + + def to_dict(self) -> dict[str, Any]: id = self.id name = self.name + field_dict: dict[str, Any] = {} - field_dict.update( - { - "id": id, - "name": name, - } - ) + field_dict.update({ + "id": id, + "name": name, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -62,3 +63,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return user_database + diff --git a/exasol/saas/client/openapi/models/user_role.py b/exasol/saas/client/openapi/models/user_role.py index a192579c..bc823990 100644 --- a/exasol/saas/client/openapi/models/user_role.py +++ b/exasol/saas/client/openapi/models/user_role.py @@ -1,54 +1,55 @@ -from collections.abc import ( - Generator, - Mapping, -) -from typing import ( - TYPE_CHECKING, - Any, - BinaryIO, - Optional, - TextIO, - TypeVar, -) +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import ( - UNSET, - Unset, -) +from ..types import UNSET, Unset + + + + + + T = TypeVar("T", bound="UserRole") + @_attrs_define class UserRole: - """ - Attributes: - id (str): - name (str): - """ + """ + Attributes: + id (str): + name (str): + """ id: str name: str + + + + def to_dict(self) -> dict[str, Any]: id = self.id name = self.name + field_dict: dict[str, Any] = {} - field_dict.update( - { - "id": id, - "name": name, - } - ) + field_dict.update({ + "id": id, + "name": name, + }) return field_dict + + @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -62,3 +63,4 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return user_role + diff --git a/exasol/saas/client/openapi/models/user_status.py b/exasol/saas/client/openapi/models/user_status.py index e685862f..3524eb55 100644 --- a/exasol/saas/client/openapi/models/user_status.py +++ b/exasol/saas/client/openapi/models/user_status.py @@ -1,6 +1,5 @@ from enum import Enum - class UserStatus(str, Enum): ACTIVE = "active" DEACTIVATED = "deactivated" diff --git a/exasol/saas/client/openapi/types.py b/exasol/saas/client/openapi/types.py index dc61a306..f74db0ad 100644 --- a/exasol/saas/client/openapi/types.py +++ b/exasol/saas/client/openapi/types.py @@ -1,19 +1,8 @@ -"""Contains some shared types for properties""" +""" Contains some shared types for properties """ -from collections.abc import ( - Mapping, - MutableMapping, -) +from collections.abc import Mapping, MutableMapping from http import HTTPStatus -from typing import ( - IO, - BinaryIO, - Generic, - Literal, - Optional, - TypeVar, - Union, -) +from typing import BinaryIO, Generic, TypeVar, Literal, IO from attrs import define @@ -26,26 +15,25 @@ def __bool__(self) -> Literal[False]: UNSET: Unset = Unset() # The types that `httpx.Client(files=)` can accept, copied from that library. -FileContent = Union[IO[bytes], bytes, str] -FileTypes = Union[ +FileContent = IO[bytes] | bytes | str +FileTypes = ( # (filename, file (or bytes), content_type) - tuple[Optional[str], FileContent, Optional[str]], + tuple[str | None, FileContent, str | None] # (filename, file (or bytes), content_type, headers) - tuple[Optional[str], FileContent, Optional[str], Mapping[str, str]], -] + | tuple[str | None, FileContent, str | None, Mapping[str, str]] +) RequestFiles = list[tuple[str, FileTypes]] - @define class File: - """Contains information for file uploads""" + """ Contains information for file uploads """ payload: BinaryIO - file_name: Optional[str] = None - mime_type: Optional[str] = None + file_name: str | None = None + mime_type: str | None = None def to_tuple(self) -> FileTypes: - """Return a tuple representation that httpx will accept for multipart/form-data""" + """ Return a tuple representation that httpx will accept for multipart/form-data """ return self.file_name, self.payload, self.mime_type @@ -54,12 +42,12 @@ def to_tuple(self) -> FileTypes: @define class Response(Generic[T]): - """A response from an endpoint""" + """ A response from an endpoint """ status_code: HTTPStatus content: bytes headers: MutableMapping[str, str] - parsed: Optional[T] + parsed: T | None __all__ = ["UNSET", "File", "FileTypes", "RequestFiles", "Response", "Unset"] diff --git a/exasol/saas/version.py b/exasol/saas/version.py index ec718e99..47f184da 100644 --- a/exasol/saas/version.py +++ b/exasol/saas/version.py @@ -1,7 +1,7 @@ """ ATTENTION: This file is generated by exasol/toolbox/nox/_package_version.py when using: - * either "poetry run -- nox -s project:fix" + * either "poetry run -- nox -s format:fix" * or "poetry run -- nox -s version:check -- --fix" Do not edit this file manually! If you need to change the version, do so in the pyproject.toml, e.g. by using diff --git a/openapi.json b/openapi.json index bfe61096..064d8bd4 100644 --- a/openapi.json +++ b/openapi.json @@ -6,7 +6,7 @@ "version": "1.0", "download": { "source": "https://cloud.exasol.com/openapi.json", - "timestamp": "2026-02-11T08:12:54.599117+00:00" + "timestamp": "2026-02-16T07:33:57.444753+00:00" } }, "servers": [ From fa69368bad597d3a7746e30e52a438b8992e67ba Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 08:50:36 +0100 Subject: [PATCH 07/47] Wrapped calls to inner API to raise OpenApiError --- exasol/saas/client/api_access.py | 64 +++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 13 deletions(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index 273b84c9..22734543 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -44,6 +44,7 @@ list_allowed_i_ps, ) from exasol.saas.client.openapi.errors import UnexpectedStatus +from exasol.saas.client.openapi.models import ApiError from exasol.saas.client.openapi.models.exasol_database import ExasolDatabase from exasol.saas.client.openapi.models.status import Status from exasol.saas.client.openapi.types import UNSET @@ -104,6 +105,11 @@ class DatabaseDeleteTimeout(Exception): """ +class OpenApiError(RuntimeError): + def __init__(self, message: str, error: ApiError | None): + super().__init__(f"{message}: {error.message}." if error else message) + + def create_saas_client( host: str, pat: str, @@ -197,17 +203,21 @@ def get_connection_params( cluster_id = next( filter(lambda cl: cl.main_cluster, clusters) # type: ignore ).id - connections = get_cluster_connection.sync( + connection = get_cluster_connection.sync( account_id, database_id, cluster_id, client=client ) - if connections is None: - raise RuntimeError("Failed to get the SaaS connection data.") - connection_params = { - "dsn": f"{connections.dns}:{connections.port}", - "user": connections.db_username, + if connection is None or isinstance(connection, ApiError): + raise OpenApiError( + "Failed to get the connection data to" + f" host {host}, account {account_id}," + f" database with ID {database_id} named {database_name}", + connection, + ) + return { + "dsn": f"{connection.dns}:{connection.port}", + "user": connection.db_username, "password": pat, } - return connection_params class OpenApiAccess: @@ -241,7 +251,7 @@ def minutes(x: timedelta) -> int: ), ) LOG.info("Creating database %s", name) - return create_database.sync( + result = create_database.sync( self._account_id, client=self._client, body=openapi_models.CreateDatabase( @@ -252,6 +262,9 @@ def minutes(x: timedelta) -> int: stream_type="feature-release", ), ) + if isinstance(result, ApiError): + raise OpenApiError(f"Failed to create database {name}", result) + return result @contextmanager def _ignore_failures(self, ignore: bool = False): @@ -317,6 +330,8 @@ def delete_with_retry(): def list_database_ids(self) -> Iterable[str]: dbs = list_databases.sync(self._account_id, client=self._client) or [] + if isinstance(dbs, ApiError): + raise OpenApiError("Failed to list databases", dbs) return (db.id for db in dbs) @contextmanager @@ -342,12 +357,18 @@ def database( self.delete_database(db.id, ignore_delete_failure) LOG.info("Successfully deleted database %s.", db_repr) - def get_database(self, database_id: str) -> ExasolDatabase | None: - return get_database.sync( + def get_database( + self, + database_id: str, + ) -> openapi.models.ExasolDatabase | None: + result = get_database.sync( self._account_id, database_id, client=self._client, ) + if isinstance(result, ApiError): + raise OpenApiError(f"Failed to get database {database_id}", result) + return result def wait_until_running( self, @@ -373,23 +394,35 @@ def clusters( self, database_id: str, ) -> list[openapi_models.Cluster] | None: - return list_clusters.sync( + result = list_clusters.sync( self._account_id, database_id, client=self._client, ) + if isinstance(result, ApiError): + raise OpenApiError( + f"Failed to list clusters of database {database_id}", result + ) + return result def get_connection( self, database_id: str, cluster_id: str, ) -> openapi_models.ClusterConnection | None: - return get_cluster_connection.sync( + result = get_cluster_connection.sync( self._account_id, database_id, cluster_id, client=self._client, ) + if isinstance(result, ApiError): + raise OpenApiError( + "Failed to retrieve a connection to " + f"database {database_id} cluster {cluster_id}", + result, + ) + return result def list_allowed_ip_ids(self) -> Iterable[str]: ips = ( @@ -399,6 +432,8 @@ def list_allowed_ip_ids(self) -> Iterable[str]: ) or [] ) + if isinstance(ips, ApiError): + raise OpenApiError("Failed to retrieve the list of allowed ips", ips) return (x.id for x in ips) def add_allowed_ip( @@ -415,11 +450,14 @@ def add_allowed_ip( name=timestamp_name(), cidr_ip=cidr_ip, ) - return add_allowed_ip.sync( + result = add_allowed_ip.sync( self._account_id, client=self._client, body=rule, ) + if isinstance(result, ApiError): + raise OpenApiError(f"Failed to add allowed IP address {cidr_ip}", result) + return result def delete_allowed_ip(self, id: str, ignore_failures=False): with self._ignore_failures(ignore_failures) as client: From ceea86c712f513c1f6f0f0ca84e46558b7e16f1b Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 08:55:25 +0100 Subject: [PATCH 08/47] reformatted generated code --- exasol/saas/client/openapi/__init__.py | 7 +- exasol/saas/client/openapi/api/__init__.py | 2 +- .../client/openapi/api/clusters/__init__.py | 2 +- .../openapi/api/clusters/create_cluster.py | 104 +++++++-------- .../openapi/api/clusters/delete_cluster.py | 106 +++++++-------- .../openapi/api/clusters/get_cluster.py | 105 +++++++-------- .../api/clusters/get_cluster_connection.py | 105 +++++++-------- .../openapi/api/clusters/list_clusters.py | 98 ++++++-------- .../openapi/api/clusters/scale_cluster.py | 114 ++++++++-------- .../openapi/api/clusters/start_cluster.py | 106 +++++++-------- .../openapi/api/clusters/stop_cluster.py | 106 +++++++-------- .../openapi/api/clusters/update_cluster.py | 114 ++++++++-------- .../client/openapi/api/databases/__init__.py | 2 +- .../openapi/api/databases/create_database.py | 95 ++++++-------- .../openapi/api/databases/create_schedule.py | 104 +++++++-------- .../openapi/api/databases/delete_database.py | 97 ++++++-------- .../openapi/api/databases/delete_schedule.py | 106 +++++++-------- .../openapi/api/databases/dlhc_activate.py | 97 ++++++-------- .../openapi/api/databases/get_database.py | 96 ++++++-------- .../api/databases/get_database_settings.py | 96 ++++++-------- .../databases/get_database_upgrade_info.py | 96 ++++++-------- .../api/databases/get_dlhc_activate_status.py | 96 ++++++-------- .../openapi/api/databases/list_databases.py | 87 +++++------- .../openapi/api/databases/list_schedules.py | 98 ++++++-------- .../databases/set_auto_updates_database.py | 105 +++++++-------- .../openapi/api/databases/start_database.py | 97 ++++++-------- .../openapi/api/databases/stop_database.py | 97 ++++++-------- .../openapi/api/databases/update_database.py | 105 +++++++-------- .../databases/update_schedule_cron_rule.py | 114 ++++++++-------- .../api/databases/update_schedule_state.py | 114 ++++++++-------- .../openapi/api/databases/upgrade_database.py | 97 ++++++-------- .../client/openapi/api/extensions/__init__.py | 2 +- .../extensions/create_extension_instance.py | 124 ++++++++---------- .../extensions/delete_extension_instance.py | 124 ++++++++---------- .../openapi/api/extensions/get_extension.py | 116 +++++++--------- .../api/extensions/install_extension.py | 115 ++++++++-------- .../extensions/list_extension_instances.py | 118 +++++++---------- .../openapi/api/extensions/list_extensions.py | 98 ++++++-------- .../api/extensions/uninstall_extension.py | 115 ++++++++-------- .../saas/client/openapi/api/files/__init__.py | 2 +- .../client/openapi/api/files/create_folder.py | 106 +++++++-------- .../client/openapi/api/files/delete_file.py | 106 +++++++-------- .../client/openapi/api/files/delete_folder.py | 106 +++++++-------- .../client/openapi/api/files/download_file.py | 105 +++++++-------- .../client/openapi/api/files/list_files.py | 98 ++++++-------- .../client/openapi/api/files/upload_file.py | 105 +++++++-------- .../client/openapi/api/platform/__init__.py | 2 +- .../api/platform/list_cluster_sizes.py | 87 +++++------- .../openapi/api/platform/list_platforms.py | 89 +++++-------- .../openapi/api/platform/list_regions.py | 87 +++++------- .../client/openapi/api/profile/__init__.py | 2 +- .../openapi/api/profile/update_profile.py | 83 +++++------- .../client/openapi/api/security/__init__.py | 2 +- .../openapi/api/security/add_allowed_ip.py | 95 ++++++-------- .../openapi/api/security/delete_allowed_ip.py | 97 ++++++-------- .../openapi/api/security/get_allowed_ip.py | 96 ++++++-------- .../openapi/api/security/list_allowed_i_ps.py | 87 +++++------- .../openapi/api/security/update_allowed_ip.py | 105 +++++++-------- .../saas/client/openapi/api/usage/__init__.py | 2 +- .../client/openapi/api/usage/get_usage.py | 108 +++++++-------- .../saas/client/openapi/api/users/__init__.py | 2 +- .../client/openapi/api/users/delete_user.py | 97 ++++++-------- .../saas/client/openapi/api/users/get_user.py | 96 ++++++-------- .../client/openapi/api/users/list_users.py | 118 ++++++++--------- .../client/openapi/api/users/patch_user.py | 105 +++++++-------- exasol/saas/client/openapi/client.py | 39 ++++-- exasol/saas/client/openapi/errors.py | 4 +- exasol/saas/client/openapi/models/__init__.py | 2 +- .../saas/client/openapi/models/allowed_ip.py | 74 ++++------- .../saas/client/openapi/models/api_error.py | 73 +++++------ .../saas/client/openapi/models/auto_stop.py | 43 +++--- exasol/saas/client/openapi/models/cluster.py | 107 ++++++--------- .../openapi/models/cluster_action_scale.py | 43 +++--- .../models/cluster_action_start_stop.py | 39 ++---- .../openapi/models/cluster_connection.py | 62 ++++----- .../client/openapi/models/cluster_settings.py | 43 +++--- .../openapi/models/cluster_settings_update.py | 40 ++---- .../client/openapi/models/cluster_size_1.py | 65 ++++----- .../client/openapi/models/connection_i_ps.py | 51 +++---- .../openapi/models/create_allowed_ip.py | 43 +++--- .../client/openapi/models/create_cluster.py | 70 ++++------ .../client/openapi/models/create_database.py | 73 +++++------ .../models/create_database_initial_cluster.py | 70 ++++------ .../models/create_extension_instance.py | 54 +++----- .../openapi/models/database_settings.py | 59 ++++----- .../openapi/models/database_upgrade_info.py | 46 +++---- .../openapi/models/dlhc_activate_status.py | 42 +++--- .../client/openapi/models/download_file.py | 39 ++---- .../client/openapi/models/exasol_database.py | 116 +++++++--------- .../models/exasol_database_clusters.py | 43 +++--- .../exasol_database_integrations_item.py | 48 +++---- .../saas/client/openapi/models/extension.py | 70 ++++------ .../client/openapi/models/extension_detail.py | 66 ++++------ .../openapi/models/extension_instance.py | 43 +++--- .../models/extension_parameter_definitions.py | 49 +++---- .../models/extension_parameter_value.py | 43 +++--- .../openapi/models/extension_version.py | 51 +++---- exasol/saas/client/openapi/models/file.py | 70 ++++------ .../client/openapi/models/get_usage_type.py | 1 + .../saas/client/openapi/models/patch_user.py | 51 +++---- .../openapi/models/patch_user_databases.py | 51 +++---- exasol/saas/client/openapi/models/platform.py | 43 +++--- exasol/saas/client/openapi/models/region.py | 51 +++---- .../client/openapi/models/scale_cluster.py | 45 +++---- exasol/saas/client/openapi/models/schedule.py | 89 +++++-------- .../openapi/models/schedule_action_type_0.py | 1 + .../client/openapi/models/schedule_state.py | 1 + .../models/set_auto_updates_database.py | 39 ++---- exasol/saas/client/openapi/models/status.py | 1 + .../openapi/models/update_allowed_ip.py | 43 +++--- .../client/openapi/models/update_cluster.py | 59 +++------ .../client/openapi/models/update_database.py | 38 ++---- .../client/openapi/models/update_profile.py | 43 +++--- .../models/update_schedule_cron_rule.py | 39 ++---- .../openapi/models/update_schedule_state.py | 41 ++---- .../saas/client/openapi/models/upload_file.py | 39 ++---- exasol/saas/client/openapi/models/usage.py | 48 +++---- .../models/usage_additional_property_item.py | 64 ++++----- .../client/openapi/models/usage_cluster.py | 59 ++++----- exasol/saas/client/openapi/models/user.py | 104 ++++++--------- .../client/openapi/models/user_database.py | 43 +++--- .../saas/client/openapi/models/user_role.py | 43 +++--- .../saas/client/openapi/models/user_status.py | 1 + exasol/saas/client/openapi/types.py | 22 +++- noxconfig.py | 1 - 125 files changed, 3522 insertions(+), 4886 deletions(-) diff --git a/exasol/saas/client/openapi/__init__.py b/exasol/saas/client/openapi/__init__.py index 79f495ff..a900b767 100644 --- a/exasol/saas/client/openapi/__init__.py +++ b/exasol/saas/client/openapi/__init__.py @@ -1,6 +1,9 @@ +"""A client library for accessing Exasol SaaS REST-API""" -""" A client library for accessing Exasol SaaS REST-API """ -from .client import AuthenticatedClient, Client +from .client import ( + AuthenticatedClient, + Client, +) __all__ = ( "AuthenticatedClient", diff --git a/exasol/saas/client/openapi/api/__init__.py b/exasol/saas/client/openapi/api/__init__.py index dc035f4c..81f9fa24 100644 --- a/exasol/saas/client/openapi/api/__init__.py +++ b/exasol/saas/client/openapi/api/__init__.py @@ -1 +1 @@ -""" Contains methods for accessing the API """ +"""Contains methods for accessing the API""" diff --git a/exasol/saas/client/openapi/api/clusters/__init__.py b/exasol/saas/client/openapi/api/clusters/__init__.py index c9921b5f..2d7c0b23 100644 --- a/exasol/saas/client/openapi/api/clusters/__init__.py +++ b/exasol/saas/client/openapi/api/clusters/__init__.py @@ -1 +1 @@ -""" Contains endpoint functions for accessing the API """ +"""Contains endpoint functions for accessing the API""" diff --git a/exasol/saas/client/openapi/api/clusters/create_cluster.py b/exasol/saas/client/openapi/api/clusters/create_cluster.py index 3ee81e50..bec6f73f 100644 --- a/exasol/saas/client/openapi/api/clusters/create_cluster.py +++ b/exasol/saas/client/openapi/api/clusters/create_cluster.py @@ -1,18 +1,17 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.cluster import Cluster from ...models.create_cluster import CreateCluster -from typing import cast - +from ...types import Response def _get_kwargs( @@ -20,47 +19,41 @@ def _get_kwargs( database_id: str, *, body: CreateCluster, - ) -> dict[str, Any]: headers: dict[str, Any] = {} - - - - - _kwargs: dict[str, Any] = { "method": "post", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } _kwargs["json"] = body.to_dict() - headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | Cluster: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | Cluster: if response.status_code == 200: response_200 = Cluster.from_dict(response.json()) - - return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | Cluster]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | Cluster]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -75,9 +68,8 @@ def sync_detailed( *, client: AuthenticatedClient, body: CreateCluster, - ) -> Response[ApiError | Cluster]: - """ + """ Args: account_id (str): database_id (str): @@ -89,14 +81,12 @@ def sync_detailed( Returns: Response[ApiError | Cluster] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -body=body, - + database_id=database_id, + body=body, ) response = client.get_httpx_client().request( @@ -105,15 +95,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, body: CreateCluster, - ) -> ApiError | Cluster | None: - """ + """ Args: account_id (str): database_id (str): @@ -125,26 +115,24 @@ def sync( Returns: ApiError | Cluster - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, -body=body, - + database_id=database_id, + client=client, + body=body, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, body: CreateCluster, - ) -> Response[ApiError | Cluster]: - """ + """ Args: account_id (str): database_id (str): @@ -156,31 +144,27 @@ async def asyncio_detailed( Returns: Response[ApiError | Cluster] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -body=body, - + database_id=database_id, + body=body, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, body: CreateCluster, - ) -> ApiError | Cluster | None: - """ + """ Args: account_id (str): database_id (str): @@ -192,13 +176,13 @@ async def asyncio( Returns: ApiError | Cluster - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, -body=body, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + body=body, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/clusters/delete_cluster.py b/exasol/saas/client/openapi/api/clusters/delete_cluster.py index 58f874dc..8d6863db 100644 --- a/exasol/saas/client/openapi/api/clusters/delete_cluster.py +++ b/exasol/saas/client/openapi/api/clusters/delete_cluster.py @@ -1,54 +1,53 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, cluster_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "delete", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),cluster_id=quote(str(cluster_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + cluster_id=quote(str(cluster_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -63,9 +62,8 @@ def sync_detailed( cluster_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -77,14 +75,12 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, - + database_id=database_id, + cluster_id=cluster_id, ) response = client.get_httpx_client().request( @@ -93,15 +89,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -113,26 +109,24 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -client=client, - + database_id=database_id, + cluster_id=cluster_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -144,31 +138,27 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, - + database_id=database_id, + cluster_id=cluster_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -180,13 +170,13 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + cluster_id=cluster_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/clusters/get_cluster.py b/exasol/saas/client/openapi/api/clusters/get_cluster.py index a43b957f..4d73cf5e 100644 --- a/exasol/saas/client/openapi/api/clusters/get_cluster.py +++ b/exasol/saas/client/openapi/api/clusters/get_cluster.py @@ -1,58 +1,52 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.cluster import Cluster -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, cluster_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),cluster_id=quote(str(cluster_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + cluster_id=quote(str(cluster_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | Cluster: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | Cluster: if response.status_code == 200: response_200 = Cluster.from_dict(response.json()) - - return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | Cluster]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | Cluster]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -67,9 +61,8 @@ def sync_detailed( cluster_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | Cluster]: - """ + """ Args: account_id (str): database_id (str): @@ -81,14 +74,12 @@ def sync_detailed( Returns: Response[ApiError | Cluster] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, - + database_id=database_id, + cluster_id=cluster_id, ) response = client.get_httpx_client().request( @@ -97,15 +88,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, - ) -> ApiError | Cluster | None: - """ + """ Args: account_id (str): database_id (str): @@ -117,26 +108,24 @@ def sync( Returns: ApiError | Cluster - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -client=client, - + database_id=database_id, + cluster_id=cluster_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | Cluster]: - """ + """ Args: account_id (str): database_id (str): @@ -148,31 +137,27 @@ async def asyncio_detailed( Returns: Response[ApiError | Cluster] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, - + database_id=database_id, + cluster_id=cluster_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, - ) -> ApiError | Cluster | None: - """ + """ Args: account_id (str): database_id (str): @@ -184,13 +169,13 @@ async def asyncio( Returns: ApiError | Cluster - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + cluster_id=cluster_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/clusters/get_cluster_connection.py b/exasol/saas/client/openapi/api/clusters/get_cluster_connection.py index 7f75bd0f..af008e83 100644 --- a/exasol/saas/client/openapi/api/clusters/get_cluster_connection.py +++ b/exasol/saas/client/openapi/api/clusters/get_cluster_connection.py @@ -1,58 +1,52 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.cluster_connection import ClusterConnection -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, cluster_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/connect".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),cluster_id=quote(str(cluster_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/connect".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + cluster_id=quote(str(cluster_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | ClusterConnection: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | ClusterConnection: if response.status_code == 200: response_200 = ClusterConnection.from_dict(response.json()) - - return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | ClusterConnection]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | ClusterConnection]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -67,9 +61,8 @@ def sync_detailed( cluster_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | ClusterConnection]: - """ + """ Args: account_id (str): database_id (str): @@ -81,14 +74,12 @@ def sync_detailed( Returns: Response[ApiError | ClusterConnection] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, - + database_id=database_id, + cluster_id=cluster_id, ) response = client.get_httpx_client().request( @@ -97,15 +88,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, - ) -> ApiError | ClusterConnection | None: - """ + """ Args: account_id (str): database_id (str): @@ -117,26 +108,24 @@ def sync( Returns: ApiError | ClusterConnection - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -client=client, - + database_id=database_id, + cluster_id=cluster_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | ClusterConnection]: - """ + """ Args: account_id (str): database_id (str): @@ -148,31 +137,27 @@ async def asyncio_detailed( Returns: Response[ApiError | ClusterConnection] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, - + database_id=database_id, + cluster_id=cluster_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, - ) -> ApiError | ClusterConnection | None: - """ + """ Args: account_id (str): database_id (str): @@ -184,13 +169,13 @@ async def asyncio( Returns: ApiError | ClusterConnection - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + cluster_id=cluster_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/clusters/list_clusters.py b/exasol/saas/client/openapi/api/clusters/list_clusters.py index 0e0e637a..cc671ee5 100644 --- a/exasol/saas/client/openapi/api/clusters/list_clusters.py +++ b/exasol/saas/client/openapi/api/clusters/list_clusters.py @@ -1,62 +1,55 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.cluster import Cluster -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[Cluster]: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | list[Cluster]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in (_response_200): + for response_200_item_data in _response_200: response_200_item = Cluster.from_dict(response_200_item_data) - - response_200.append(response_200_item) return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[Cluster]]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | list[Cluster]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -70,9 +63,8 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[Cluster]]: - """ + """ Args: account_id (str): database_id (str): @@ -83,13 +75,11 @@ def sync_detailed( Returns: Response[ApiError | list[Cluster]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) response = client.get_httpx_client().request( @@ -98,14 +88,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | list[Cluster] | None: - """ + """ Args: account_id (str): database_id (str): @@ -116,24 +106,22 @@ def sync( Returns: ApiError | list[Cluster] - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, - + database_id=database_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[Cluster]]: - """ + """ Args: account_id (str): database_id (str): @@ -144,29 +132,25 @@ async def asyncio_detailed( Returns: Response[ApiError | list[Cluster]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | list[Cluster] | None: - """ + """ Args: account_id (str): database_id (str): @@ -177,12 +161,12 @@ async def asyncio( Returns: ApiError | list[Cluster] - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/clusters/scale_cluster.py b/exasol/saas/client/openapi/api/clusters/scale_cluster.py index b8bf795d..12f25ac0 100644 --- a/exasol/saas/client/openapi/api/clusters/scale_cluster.py +++ b/exasol/saas/client/openapi/api/clusters/scale_cluster.py @@ -1,17 +1,19 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.scale_cluster import ScaleCluster -from typing import cast - +from ...types import Response def _get_kwargs( @@ -20,44 +22,41 @@ def _get_kwargs( cluster_id: str, *, body: ScaleCluster, - ) -> dict[str, Any]: headers: dict[str, Any] = {} - - - - - _kwargs: dict[str, Any] = { "method": "put", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/scale".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),cluster_id=quote(str(cluster_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/scale".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + cluster_id=quote(str(cluster_id), safe=""), + ), } _kwargs["json"] = body.to_dict() - headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -73,9 +72,8 @@ def sync_detailed( *, client: AuthenticatedClient, body: ScaleCluster, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -88,15 +86,13 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -body=body, - + database_id=database_id, + cluster_id=cluster_id, + body=body, ) response = client.get_httpx_client().request( @@ -105,6 +101,7 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, @@ -112,9 +109,8 @@ def sync( *, client: AuthenticatedClient, body: ScaleCluster, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -127,18 +123,17 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -client=client, -body=body, - + database_id=database_id, + cluster_id=cluster_id, + client=client, + body=body, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, @@ -146,9 +141,8 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: ScaleCluster, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -161,23 +155,20 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -body=body, - + database_id=database_id, + cluster_id=cluster_id, + body=body, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, @@ -185,9 +176,8 @@ async def asyncio( *, client: AuthenticatedClient, body: ScaleCluster, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -200,14 +190,14 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -client=client, -body=body, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + cluster_id=cluster_id, + client=client, + body=body, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/clusters/start_cluster.py b/exasol/saas/client/openapi/api/clusters/start_cluster.py index 87ed9e00..88744c4b 100644 --- a/exasol/saas/client/openapi/api/clusters/start_cluster.py +++ b/exasol/saas/client/openapi/api/clusters/start_cluster.py @@ -1,54 +1,53 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, cluster_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "put", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/start".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),cluster_id=quote(str(cluster_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/start".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + cluster_id=quote(str(cluster_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -63,9 +62,8 @@ def sync_detailed( cluster_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -77,14 +75,12 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, - + database_id=database_id, + cluster_id=cluster_id, ) response = client.get_httpx_client().request( @@ -93,15 +89,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -113,26 +109,24 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -client=client, - + database_id=database_id, + cluster_id=cluster_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -144,31 +138,27 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, - + database_id=database_id, + cluster_id=cluster_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -180,13 +170,13 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + cluster_id=cluster_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/clusters/stop_cluster.py b/exasol/saas/client/openapi/api/clusters/stop_cluster.py index 8367a2ce..2fcdc37a 100644 --- a/exasol/saas/client/openapi/api/clusters/stop_cluster.py +++ b/exasol/saas/client/openapi/api/clusters/stop_cluster.py @@ -1,54 +1,53 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, cluster_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "put", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/stop".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),cluster_id=quote(str(cluster_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}/stop".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + cluster_id=quote(str(cluster_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -63,9 +62,8 @@ def sync_detailed( cluster_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -77,14 +75,12 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, - + database_id=database_id, + cluster_id=cluster_id, ) response = client.get_httpx_client().request( @@ -93,15 +89,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -113,26 +109,24 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -client=client, - + database_id=database_id, + cluster_id=cluster_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -144,31 +138,27 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, - + database_id=database_id, + cluster_id=cluster_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, cluster_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -180,13 +170,13 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + cluster_id=cluster_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/clusters/update_cluster.py b/exasol/saas/client/openapi/api/clusters/update_cluster.py index c369a8d9..2c4720b1 100644 --- a/exasol/saas/client/openapi/api/clusters/update_cluster.py +++ b/exasol/saas/client/openapi/api/clusters/update_cluster.py @@ -1,17 +1,19 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.update_cluster import UpdateCluster -from typing import cast - +from ...types import Response def _get_kwargs( @@ -20,44 +22,41 @@ def _get_kwargs( cluster_id: str, *, body: UpdateCluster, - ) -> dict[str, Any]: headers: dict[str, Any] = {} - - - - - _kwargs: dict[str, Any] = { "method": "put", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),cluster_id=quote(str(cluster_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/clusters/{cluster_id}".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + cluster_id=quote(str(cluster_id), safe=""), + ), } _kwargs["json"] = body.to_dict() - headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -73,9 +72,8 @@ def sync_detailed( *, client: AuthenticatedClient, body: UpdateCluster, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -88,15 +86,13 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -body=body, - + database_id=database_id, + cluster_id=cluster_id, + body=body, ) response = client.get_httpx_client().request( @@ -105,6 +101,7 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, @@ -112,9 +109,8 @@ def sync( *, client: AuthenticatedClient, body: UpdateCluster, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -127,18 +123,17 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -client=client, -body=body, - + database_id=database_id, + cluster_id=cluster_id, + client=client, + body=body, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, @@ -146,9 +141,8 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: UpdateCluster, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -161,23 +155,20 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -body=body, - + database_id=database_id, + cluster_id=cluster_id, + body=body, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, @@ -185,9 +176,8 @@ async def asyncio( *, client: AuthenticatedClient, body: UpdateCluster, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -200,14 +190,14 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -cluster_id=cluster_id, -client=client, -body=body, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + cluster_id=cluster_id, + client=client, + body=body, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/__init__.py b/exasol/saas/client/openapi/api/databases/__init__.py index c9921b5f..2d7c0b23 100644 --- a/exasol/saas/client/openapi/api/databases/__init__.py +++ b/exasol/saas/client/openapi/api/databases/__init__.py @@ -1 +1 @@ -""" Contains endpoint functions for accessing the API """ +"""Contains endpoint functions for accessing the API""" diff --git a/exasol/saas/client/openapi/api/databases/create_database.py b/exasol/saas/client/openapi/api/databases/create_database.py index 33a0aba6..22f12a30 100644 --- a/exasol/saas/client/openapi/api/databases/create_database.py +++ b/exasol/saas/client/openapi/api/databases/create_database.py @@ -1,65 +1,57 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.create_database import CreateDatabase from ...models.exasol_database import ExasolDatabase -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, *, body: CreateDatabase, - ) -> dict[str, Any]: headers: dict[str, Any] = {} - - - - - _kwargs: dict[str, Any] = { "method": "post", - "url": "/api/v1/accounts/{account_id}/databases".format(account_id=quote(str(account_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases".format( + account_id=quote(str(account_id), safe=""), + ), } _kwargs["json"] = body.to_dict() - headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | ExasolDatabase: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | ExasolDatabase: if response.status_code == 200: response_200 = ExasolDatabase.from_dict(response.json()) - - return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | ExasolDatabase]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | ExasolDatabase]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -73,9 +65,8 @@ def sync_detailed( *, client: AuthenticatedClient, body: CreateDatabase, - ) -> Response[ApiError | ExasolDatabase]: - """ + """ Args: account_id (str): body (CreateDatabase): @@ -86,13 +77,11 @@ def sync_detailed( Returns: Response[ApiError | ExasolDatabase] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -body=body, - + body=body, ) response = client.get_httpx_client().request( @@ -101,14 +90,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, *, client: AuthenticatedClient, body: CreateDatabase, - ) -> ApiError | ExasolDatabase | None: - """ + """ Args: account_id (str): body (CreateDatabase): @@ -119,24 +108,22 @@ def sync( Returns: ApiError | ExasolDatabase - """ - + """ return sync_detailed( account_id=account_id, -client=client, -body=body, - + client=client, + body=body, ).parsed + async def asyncio_detailed( account_id: str, *, client: AuthenticatedClient, body: CreateDatabase, - ) -> Response[ApiError | ExasolDatabase]: - """ + """ Args: account_id (str): body (CreateDatabase): @@ -147,29 +134,25 @@ async def asyncio_detailed( Returns: Response[ApiError | ExasolDatabase] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -body=body, - + body=body, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, *, client: AuthenticatedClient, body: CreateDatabase, - ) -> ApiError | ExasolDatabase | None: - """ + """ Args: account_id (str): body (CreateDatabase): @@ -180,12 +163,12 @@ async def asyncio( Returns: ApiError | ExasolDatabase - """ - - - return (await asyncio_detailed( - account_id=account_id, -client=client, -body=body, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + client=client, + body=body, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/create_schedule.py b/exasol/saas/client/openapi/api/databases/create_schedule.py index 6718d56e..0deab4c8 100644 --- a/exasol/saas/client/openapi/api/databases/create_schedule.py +++ b/exasol/saas/client/openapi/api/databases/create_schedule.py @@ -1,17 +1,16 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.schedule import Schedule -from typing import cast - +from ...types import Response def _get_kwargs( @@ -19,47 +18,41 @@ def _get_kwargs( database_id: str, *, body: Schedule, - ) -> dict[str, Any]: headers: dict[str, Any] = {} - - - - - _kwargs: dict[str, Any] = { "method": "post", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/schedules".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/schedules".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } _kwargs["json"] = body.to_dict() - headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | Schedule: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | Schedule: if response.status_code == 201: response_201 = Schedule.from_dict(response.json()) - - return response_201 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | Schedule]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | Schedule]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -74,9 +67,8 @@ def sync_detailed( *, client: AuthenticatedClient, body: Schedule, - ) -> Response[ApiError | Schedule]: - """ + """ Args: account_id (str): database_id (str): @@ -88,14 +80,12 @@ def sync_detailed( Returns: Response[ApiError | Schedule] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -body=body, - + database_id=database_id, + body=body, ) response = client.get_httpx_client().request( @@ -104,15 +94,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, body: Schedule, - ) -> ApiError | Schedule | None: - """ + """ Args: account_id (str): database_id (str): @@ -124,26 +114,24 @@ def sync( Returns: ApiError | Schedule - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, -body=body, - + database_id=database_id, + client=client, + body=body, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, body: Schedule, - ) -> Response[ApiError | Schedule]: - """ + """ Args: account_id (str): database_id (str): @@ -155,31 +143,27 @@ async def asyncio_detailed( Returns: Response[ApiError | Schedule] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -body=body, - + database_id=database_id, + body=body, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, body: Schedule, - ) -> ApiError | Schedule | None: - """ + """ Args: account_id (str): database_id (str): @@ -191,13 +175,13 @@ async def asyncio( Returns: ApiError | Schedule - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, -body=body, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + body=body, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/delete_database.py b/exasol/saas/client/openapi/api/databases/delete_database.py index 401cfc6d..41e22b2d 100644 --- a/exasol/saas/client/openapi/api/databases/delete_database.py +++ b/exasol/saas/client/openapi/api/databases/delete_database.py @@ -1,53 +1,51 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "delete", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -61,9 +59,8 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -74,13 +71,11 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) response = client.get_httpx_client().request( @@ -89,14 +84,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -107,24 +102,22 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, - + database_id=database_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -135,29 +128,25 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -168,12 +157,12 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/delete_schedule.py b/exasol/saas/client/openapi/api/databases/delete_schedule.py index 1a9f0b5d..63af683e 100644 --- a/exasol/saas/client/openapi/api/databases/delete_schedule.py +++ b/exasol/saas/client/openapi/api/databases/delete_schedule.py @@ -1,54 +1,53 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, action_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "delete", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/schedules/{action_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),action_id=quote(str(action_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/schedules/{action_id}".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + action_id=quote(str(action_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -63,9 +62,8 @@ def sync_detailed( action_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -77,14 +75,12 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -action_id=action_id, - + database_id=database_id, + action_id=action_id, ) response = client.get_httpx_client().request( @@ -93,15 +89,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, action_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -113,26 +109,24 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -action_id=action_id, -client=client, - + database_id=database_id, + action_id=action_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, action_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -144,31 +138,27 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -action_id=action_id, - + database_id=database_id, + action_id=action_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, action_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -180,13 +170,13 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -action_id=action_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + action_id=action_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/dlhc_activate.py b/exasol/saas/client/openapi/api/databases/dlhc_activate.py index 458fd09b..9ea8ce90 100644 --- a/exasol/saas/client/openapi/api/databases/dlhc_activate.py +++ b/exasol/saas/client/openapi/api/databases/dlhc_activate.py @@ -1,53 +1,51 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "post", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/dlhc-activate".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/dlhc-activate".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 202: response_202 = cast(Any, None) return response_202 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -61,9 +59,8 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -74,13 +71,11 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) response = client.get_httpx_client().request( @@ -89,14 +84,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -107,24 +102,22 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, - + database_id=database_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -135,29 +128,25 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -168,12 +157,12 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/get_database.py b/exasol/saas/client/openapi/api/databases/get_database.py index 9131a3e3..563ae8e0 100644 --- a/exasol/saas/client/openapi/api/databases/get_database.py +++ b/exasol/saas/client/openapi/api/databases/get_database.py @@ -1,57 +1,50 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.exasol_database import ExasolDatabase -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | ExasolDatabase: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | ExasolDatabase: if response.status_code == 200: response_200 = ExasolDatabase.from_dict(response.json()) - - return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | ExasolDatabase]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | ExasolDatabase]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -65,9 +58,8 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | ExasolDatabase]: - """ + """ Args: account_id (str): database_id (str): @@ -78,13 +70,11 @@ def sync_detailed( Returns: Response[ApiError | ExasolDatabase] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) response = client.get_httpx_client().request( @@ -93,14 +83,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | ExasolDatabase | None: - """ + """ Args: account_id (str): database_id (str): @@ -111,24 +101,22 @@ def sync( Returns: ApiError | ExasolDatabase - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, - + database_id=database_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | ExasolDatabase]: - """ + """ Args: account_id (str): database_id (str): @@ -139,29 +127,25 @@ async def asyncio_detailed( Returns: Response[ApiError | ExasolDatabase] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | ExasolDatabase | None: - """ + """ Args: account_id (str): database_id (str): @@ -172,12 +156,12 @@ async def asyncio( Returns: ApiError | ExasolDatabase - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/get_database_settings.py b/exasol/saas/client/openapi/api/databases/get_database_settings.py index f4e82539..65631339 100644 --- a/exasol/saas/client/openapi/api/databases/get_database_settings.py +++ b/exasol/saas/client/openapi/api/databases/get_database_settings.py @@ -1,57 +1,50 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.database_settings import DatabaseSettings -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/settings".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/settings".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | DatabaseSettings: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | DatabaseSettings: if response.status_code == 200: response_200 = DatabaseSettings.from_dict(response.json()) - - return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | DatabaseSettings]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | DatabaseSettings]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -65,9 +58,8 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | DatabaseSettings]: - """ + """ Args: account_id (str): database_id (str): @@ -78,13 +70,11 @@ def sync_detailed( Returns: Response[ApiError | DatabaseSettings] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) response = client.get_httpx_client().request( @@ -93,14 +83,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | DatabaseSettings | None: - """ + """ Args: account_id (str): database_id (str): @@ -111,24 +101,22 @@ def sync( Returns: ApiError | DatabaseSettings - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, - + database_id=database_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | DatabaseSettings]: - """ + """ Args: account_id (str): database_id (str): @@ -139,29 +127,25 @@ async def asyncio_detailed( Returns: Response[ApiError | DatabaseSettings] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | DatabaseSettings | None: - """ + """ Args: account_id (str): database_id (str): @@ -172,12 +156,12 @@ async def asyncio( Returns: ApiError | DatabaseSettings - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/get_database_upgrade_info.py b/exasol/saas/client/openapi/api/databases/get_database_upgrade_info.py index f8df3d51..c81bb002 100644 --- a/exasol/saas/client/openapi/api/databases/get_database_upgrade_info.py +++ b/exasol/saas/client/openapi/api/databases/get_database_upgrade_info.py @@ -1,57 +1,50 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.database_upgrade_info import DatabaseUpgradeInfo -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/upgrade".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/upgrade".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | DatabaseUpgradeInfo: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | DatabaseUpgradeInfo: if response.status_code == 200: response_200 = DatabaseUpgradeInfo.from_dict(response.json()) - - return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | DatabaseUpgradeInfo]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | DatabaseUpgradeInfo]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -65,9 +58,8 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | DatabaseUpgradeInfo]: - """ + """ Args: account_id (str): database_id (str): @@ -78,13 +70,11 @@ def sync_detailed( Returns: Response[ApiError | DatabaseUpgradeInfo] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) response = client.get_httpx_client().request( @@ -93,14 +83,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | DatabaseUpgradeInfo | None: - """ + """ Args: account_id (str): database_id (str): @@ -111,24 +101,22 @@ def sync( Returns: ApiError | DatabaseUpgradeInfo - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, - + database_id=database_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | DatabaseUpgradeInfo]: - """ + """ Args: account_id (str): database_id (str): @@ -139,29 +127,25 @@ async def asyncio_detailed( Returns: Response[ApiError | DatabaseUpgradeInfo] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | DatabaseUpgradeInfo | None: - """ + """ Args: account_id (str): database_id (str): @@ -172,12 +156,12 @@ async def asyncio( Returns: ApiError | DatabaseUpgradeInfo - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/get_dlhc_activate_status.py b/exasol/saas/client/openapi/api/databases/get_dlhc_activate_status.py index 6863e193..8a02355b 100644 --- a/exasol/saas/client/openapi/api/databases/get_dlhc_activate_status.py +++ b/exasol/saas/client/openapi/api/databases/get_dlhc_activate_status.py @@ -1,57 +1,50 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.dlhc_activate_status import DlhcActivateStatus -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/dlhc-activate".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/dlhc-activate".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | DlhcActivateStatus: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | DlhcActivateStatus: if response.status_code == 200: response_200 = DlhcActivateStatus.from_dict(response.json()) - - return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | DlhcActivateStatus]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | DlhcActivateStatus]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -65,9 +58,8 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | DlhcActivateStatus]: - """ + """ Args: account_id (str): database_id (str): @@ -78,13 +70,11 @@ def sync_detailed( Returns: Response[ApiError | DlhcActivateStatus] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) response = client.get_httpx_client().request( @@ -93,14 +83,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | DlhcActivateStatus | None: - """ + """ Args: account_id (str): database_id (str): @@ -111,24 +101,22 @@ def sync( Returns: ApiError | DlhcActivateStatus - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, - + database_id=database_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | DlhcActivateStatus]: - """ + """ Args: account_id (str): database_id (str): @@ -139,29 +127,25 @@ async def asyncio_detailed( Returns: Response[ApiError | DlhcActivateStatus] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | DlhcActivateStatus | None: - """ + """ Args: account_id (str): database_id (str): @@ -172,12 +156,12 @@ async def asyncio( Returns: ApiError | DlhcActivateStatus - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/list_databases.py b/exasol/saas/client/openapi/api/databases/list_databases.py index b01ed919..056bb0c4 100644 --- a/exasol/saas/client/openapi/api/databases/list_databases.py +++ b/exasol/saas/client/openapi/api/databases/list_databases.py @@ -1,61 +1,53 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.exasol_database import ExasolDatabase -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/databases".format(account_id=quote(str(account_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases".format( + account_id=quote(str(account_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[ExasolDatabase]: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | list[ExasolDatabase]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in (_response_200): + for response_200_item_data in _response_200: response_200_item = ExasolDatabase.from_dict(response_200_item_data) - - response_200.append(response_200_item) return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[ExasolDatabase]]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | list[ExasolDatabase]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -68,9 +60,8 @@ def sync_detailed( account_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[ExasolDatabase]]: - """ + """ Args: account_id (str): @@ -80,12 +71,10 @@ def sync_detailed( Returns: Response[ApiError | list[ExasolDatabase]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, - ) response = client.get_httpx_client().request( @@ -94,13 +83,13 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, *, client: AuthenticatedClient, - ) -> ApiError | list[ExasolDatabase] | None: - """ + """ Args: account_id (str): @@ -110,22 +99,20 @@ def sync( Returns: ApiError | list[ExasolDatabase] - """ - + """ return sync_detailed( account_id=account_id, -client=client, - + client=client, ).parsed + async def asyncio_detailed( account_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[ExasolDatabase]]: - """ + """ Args: account_id (str): @@ -135,27 +122,23 @@ async def asyncio_detailed( Returns: Response[ApiError | list[ExasolDatabase]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, - ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, *, client: AuthenticatedClient, - ) -> ApiError | list[ExasolDatabase] | None: - """ + """ Args: account_id (str): @@ -165,11 +148,11 @@ async def asyncio( Returns: ApiError | list[ExasolDatabase] - """ - + """ - return (await asyncio_detailed( - account_id=account_id, -client=client, - - )).parsed + return ( + await asyncio_detailed( + account_id=account_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/list_schedules.py b/exasol/saas/client/openapi/api/databases/list_schedules.py index ca5b53c0..3ff16f2e 100644 --- a/exasol/saas/client/openapi/api/databases/list_schedules.py +++ b/exasol/saas/client/openapi/api/databases/list_schedules.py @@ -1,62 +1,55 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.schedule import Schedule -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/schedules".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/schedules".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[Schedule]: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | list[Schedule]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in (_response_200): + for response_200_item_data in _response_200: response_200_item = Schedule.from_dict(response_200_item_data) - - response_200.append(response_200_item) return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[Schedule]]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | list[Schedule]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -70,9 +63,8 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[Schedule]]: - """ + """ Args: account_id (str): database_id (str): @@ -83,13 +75,11 @@ def sync_detailed( Returns: Response[ApiError | list[Schedule]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) response = client.get_httpx_client().request( @@ -98,14 +88,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | list[Schedule] | None: - """ + """ Args: account_id (str): database_id (str): @@ -116,24 +106,22 @@ def sync( Returns: ApiError | list[Schedule] - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, - + database_id=database_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[Schedule]]: - """ + """ Args: account_id (str): database_id (str): @@ -144,29 +132,25 @@ async def asyncio_detailed( Returns: Response[ApiError | list[Schedule]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | list[Schedule] | None: - """ + """ Args: account_id (str): database_id (str): @@ -177,12 +161,12 @@ async def asyncio( Returns: ApiError | list[Schedule] - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/set_auto_updates_database.py b/exasol/saas/client/openapi/api/databases/set_auto_updates_database.py index 70cc6011..ce78d29b 100644 --- a/exasol/saas/client/openapi/api/databases/set_auto_updates_database.py +++ b/exasol/saas/client/openapi/api/databases/set_auto_updates_database.py @@ -1,17 +1,19 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.set_auto_updates_database import SetAutoUpdatesDatabase -from typing import cast - +from ...types import Response def _get_kwargs( @@ -19,44 +21,40 @@ def _get_kwargs( database_id: str, *, body: SetAutoUpdatesDatabase, - ) -> dict[str, Any]: headers: dict[str, Any] = {} - - - - - _kwargs: dict[str, Any] = { "method": "patch", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/settings".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/settings".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } _kwargs["json"] = body.to_dict() - headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -71,9 +69,8 @@ def sync_detailed( *, client: AuthenticatedClient, body: SetAutoUpdatesDatabase, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -85,14 +82,12 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -body=body, - + database_id=database_id, + body=body, ) response = client.get_httpx_client().request( @@ -101,15 +96,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, body: SetAutoUpdatesDatabase, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -121,26 +116,24 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, -body=body, - + database_id=database_id, + client=client, + body=body, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, body: SetAutoUpdatesDatabase, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -152,31 +145,27 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -body=body, - + database_id=database_id, + body=body, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, body: SetAutoUpdatesDatabase, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -188,13 +177,13 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, -body=body, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + body=body, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/start_database.py b/exasol/saas/client/openapi/api/databases/start_database.py index fedb3cda..9c2aae9f 100644 --- a/exasol/saas/client/openapi/api/databases/start_database.py +++ b/exasol/saas/client/openapi/api/databases/start_database.py @@ -1,53 +1,51 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "put", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/start".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/start".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -61,9 +59,8 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -74,13 +71,11 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) response = client.get_httpx_client().request( @@ -89,14 +84,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -107,24 +102,22 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, - + database_id=database_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -135,29 +128,25 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -168,12 +157,12 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/stop_database.py b/exasol/saas/client/openapi/api/databases/stop_database.py index 2bc9ed21..3eb7b687 100644 --- a/exasol/saas/client/openapi/api/databases/stop_database.py +++ b/exasol/saas/client/openapi/api/databases/stop_database.py @@ -1,53 +1,51 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "put", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/stop".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/stop".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -61,9 +59,8 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -74,13 +71,11 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) response = client.get_httpx_client().request( @@ -89,14 +84,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -107,24 +102,22 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, - + database_id=database_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -135,29 +128,25 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -168,12 +157,12 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/update_database.py b/exasol/saas/client/openapi/api/databases/update_database.py index ee4e0165..3359d16c 100644 --- a/exasol/saas/client/openapi/api/databases/update_database.py +++ b/exasol/saas/client/openapi/api/databases/update_database.py @@ -1,17 +1,19 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.update_database import UpdateDatabase -from typing import cast - +from ...types import Response def _get_kwargs( @@ -19,44 +21,40 @@ def _get_kwargs( database_id: str, *, body: UpdateDatabase, - ) -> dict[str, Any]: headers: dict[str, Any] = {} - - - - - _kwargs: dict[str, Any] = { "method": "put", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } _kwargs["json"] = body.to_dict() - headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -71,9 +69,8 @@ def sync_detailed( *, client: AuthenticatedClient, body: UpdateDatabase, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -85,14 +82,12 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -body=body, - + database_id=database_id, + body=body, ) response = client.get_httpx_client().request( @@ -101,15 +96,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, body: UpdateDatabase, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -121,26 +116,24 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, -body=body, - + database_id=database_id, + client=client, + body=body, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, body: UpdateDatabase, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -152,31 +145,27 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -body=body, - + database_id=database_id, + body=body, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, body: UpdateDatabase, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -188,13 +177,13 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, -body=body, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + body=body, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/update_schedule_cron_rule.py b/exasol/saas/client/openapi/api/databases/update_schedule_cron_rule.py index d02cb23a..0c900437 100644 --- a/exasol/saas/client/openapi/api/databases/update_schedule_cron_rule.py +++ b/exasol/saas/client/openapi/api/databases/update_schedule_cron_rule.py @@ -1,17 +1,19 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.update_schedule_cron_rule import UpdateScheduleCronRule -from typing import cast - +from ...types import Response def _get_kwargs( @@ -20,44 +22,41 @@ def _get_kwargs( action_id: str, *, body: UpdateScheduleCronRule, - ) -> dict[str, Any]: headers: dict[str, Any] = {} - - - - - _kwargs: dict[str, Any] = { "method": "patch", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/schedules/{action_id}/cronRule".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),action_id=quote(str(action_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/schedules/{action_id}/cronRule".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + action_id=quote(str(action_id), safe=""), + ), } _kwargs["json"] = body.to_dict() - headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -73,9 +72,8 @@ def sync_detailed( *, client: AuthenticatedClient, body: UpdateScheduleCronRule, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -88,15 +86,13 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -action_id=action_id, -body=body, - + database_id=database_id, + action_id=action_id, + body=body, ) response = client.get_httpx_client().request( @@ -105,6 +101,7 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, @@ -112,9 +109,8 @@ def sync( *, client: AuthenticatedClient, body: UpdateScheduleCronRule, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -127,18 +123,17 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -action_id=action_id, -client=client, -body=body, - + database_id=database_id, + action_id=action_id, + client=client, + body=body, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, @@ -146,9 +141,8 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: UpdateScheduleCronRule, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -161,23 +155,20 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -action_id=action_id, -body=body, - + database_id=database_id, + action_id=action_id, + body=body, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, @@ -185,9 +176,8 @@ async def asyncio( *, client: AuthenticatedClient, body: UpdateScheduleCronRule, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -200,14 +190,14 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -action_id=action_id, -client=client, -body=body, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + action_id=action_id, + client=client, + body=body, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/update_schedule_state.py b/exasol/saas/client/openapi/api/databases/update_schedule_state.py index 581f8129..a18f9f36 100644 --- a/exasol/saas/client/openapi/api/databases/update_schedule_state.py +++ b/exasol/saas/client/openapi/api/databases/update_schedule_state.py @@ -1,17 +1,19 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.update_schedule_state import UpdateScheduleState -from typing import cast - +from ...types import Response def _get_kwargs( @@ -20,44 +22,41 @@ def _get_kwargs( action_id: str, *, body: UpdateScheduleState, - ) -> dict[str, Any]: headers: dict[str, Any] = {} - - - - - _kwargs: dict[str, Any] = { "method": "patch", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/schedules/{action_id}/state".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),action_id=quote(str(action_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/schedules/{action_id}/state".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + action_id=quote(str(action_id), safe=""), + ), } _kwargs["json"] = body.to_dict() - headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -73,9 +72,8 @@ def sync_detailed( *, client: AuthenticatedClient, body: UpdateScheduleState, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -88,15 +86,13 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -action_id=action_id, -body=body, - + database_id=database_id, + action_id=action_id, + body=body, ) response = client.get_httpx_client().request( @@ -105,6 +101,7 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, @@ -112,9 +109,8 @@ def sync( *, client: AuthenticatedClient, body: UpdateScheduleState, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -127,18 +123,17 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -action_id=action_id, -client=client, -body=body, - + database_id=database_id, + action_id=action_id, + client=client, + body=body, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, @@ -146,9 +141,8 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: UpdateScheduleState, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -161,23 +155,20 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -action_id=action_id, -body=body, - + database_id=database_id, + action_id=action_id, + body=body, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, @@ -185,9 +176,8 @@ async def asyncio( *, client: AuthenticatedClient, body: UpdateScheduleState, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -200,14 +190,14 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -action_id=action_id, -client=client, -body=body, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + action_id=action_id, + client=client, + body=body, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/databases/upgrade_database.py b/exasol/saas/client/openapi/api/databases/upgrade_database.py index f8c72d53..19d07784 100644 --- a/exasol/saas/client/openapi/api/databases/upgrade_database.py +++ b/exasol/saas/client/openapi/api/databases/upgrade_database.py @@ -1,53 +1,51 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "put", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/upgrade".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/upgrade".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -61,9 +59,8 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -74,13 +71,11 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) response = client.get_httpx_client().request( @@ -89,14 +84,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -107,24 +102,22 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, - + database_id=database_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -135,29 +128,25 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -168,12 +157,12 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/extensions/__init__.py b/exasol/saas/client/openapi/api/extensions/__init__.py index c9921b5f..2d7c0b23 100644 --- a/exasol/saas/client/openapi/api/extensions/__init__.py +++ b/exasol/saas/client/openapi/api/extensions/__init__.py @@ -1 +1 @@ -""" Contains endpoint functions for accessing the API """ +"""Contains endpoint functions for accessing the API""" diff --git a/exasol/saas/client/openapi/api/extensions/create_extension_instance.py b/exasol/saas/client/openapi/api/extensions/create_extension_instance.py index f9b806e0..868b2caf 100644 --- a/exasol/saas/client/openapi/api/extensions/create_extension_instance.py +++ b/exasol/saas/client/openapi/api/extensions/create_extension_instance.py @@ -1,18 +1,17 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.create_extension_instance import CreateExtensionInstance from ...models.extension_instance import ExtensionInstance -from typing import cast - +from ...types import Response def _get_kwargs( @@ -22,54 +21,48 @@ def _get_kwargs( extension_version: str, *, body: CreateExtensionInstance, - ) -> dict[str, Any]: headers: dict[str, Any] = {} - - - - - _kwargs: dict[str, Any] = { "method": "post", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/instances".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),extension_id=quote(str(extension_id), safe=""),extension_version=quote(str(extension_version), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/instances".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + extension_id=quote(str(extension_id), safe=""), + extension_version=quote(str(extension_version), safe=""), + ), } _kwargs["json"] = body.to_dict() - headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | ExtensionInstance: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | ExtensionInstance: if response.status_code == 200: response_200 = ExtensionInstance.from_dict(response.json()) - - return response_200 if response.status_code == 422: response_422 = ApiError.from_dict(response.json()) - - return response_422 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | ExtensionInstance]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | ExtensionInstance]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -86,9 +79,8 @@ def sync_detailed( *, client: AuthenticatedClient, body: CreateExtensionInstance, - ) -> Response[ApiError | ExtensionInstance]: - """ + """ Args: account_id (str): database_id (str): @@ -102,16 +94,14 @@ def sync_detailed( Returns: Response[ApiError | ExtensionInstance] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -body=body, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + body=body, ) response = client.get_httpx_client().request( @@ -120,6 +110,7 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, @@ -128,9 +119,8 @@ def sync( *, client: AuthenticatedClient, body: CreateExtensionInstance, - ) -> ApiError | ExtensionInstance | None: - """ + """ Args: account_id (str): database_id (str): @@ -144,19 +134,18 @@ def sync( Returns: ApiError | ExtensionInstance - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -client=client, -body=body, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + client=client, + body=body, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, @@ -165,9 +154,8 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: CreateExtensionInstance, - ) -> Response[ApiError | ExtensionInstance]: - """ + """ Args: account_id (str): database_id (str): @@ -181,24 +169,21 @@ async def asyncio_detailed( Returns: Response[ApiError | ExtensionInstance] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -body=body, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + body=body, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, @@ -207,9 +192,8 @@ async def asyncio( *, client: AuthenticatedClient, body: CreateExtensionInstance, - ) -> ApiError | ExtensionInstance | None: - """ + """ Args: account_id (str): database_id (str): @@ -223,15 +207,15 @@ async def asyncio( Returns: ApiError | ExtensionInstance - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -client=client, -body=body, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + client=client, + body=body, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/extensions/delete_extension_instance.py b/exasol/saas/client/openapi/api/extensions/delete_extension_instance.py index b067b39b..c1fd2f5b 100644 --- a/exasol/saas/client/openapi/api/extensions/delete_extension_instance.py +++ b/exasol/saas/client/openapi/api/extensions/delete_extension_instance.py @@ -1,16 +1,18 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( @@ -19,38 +21,37 @@ def _get_kwargs( extension_id: str, extension_version: str, instance_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "delete", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/instances/{instance_id}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),extension_id=quote(str(extension_id), safe=""),extension_version=quote(str(extension_version), safe=""),instance_id=quote(str(instance_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/instances/{instance_id}".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + extension_id=quote(str(extension_id), safe=""), + extension_version=quote(str(extension_version), safe=""), + instance_id=quote(str(instance_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -67,9 +68,8 @@ def sync_detailed( instance_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -83,16 +83,14 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -instance_id=instance_id, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + instance_id=instance_id, ) response = client.get_httpx_client().request( @@ -101,6 +99,7 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, @@ -109,9 +108,8 @@ def sync( instance_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -125,19 +123,18 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -instance_id=instance_id, -client=client, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + instance_id=instance_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, @@ -146,9 +143,8 @@ async def asyncio_detailed( instance_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -162,24 +158,21 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -instance_id=instance_id, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + instance_id=instance_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, @@ -188,9 +181,8 @@ async def asyncio( instance_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -204,15 +196,15 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -instance_id=instance_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + instance_id=instance_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/extensions/get_extension.py b/exasol/saas/client/openapi/api/extensions/get_extension.py index b2bf49cd..25dcb5da 100644 --- a/exasol/saas/client/openapi/api/extensions/get_extension.py +++ b/exasol/saas/client/openapi/api/extensions/get_extension.py @@ -1,17 +1,16 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.extension_detail import ExtensionDetail -from typing import cast - +from ...types import Response def _get_kwargs( @@ -19,48 +18,42 @@ def _get_kwargs( database_id: str, extension_id: str, extension_version: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),extension_id=quote(str(extension_id), safe=""),extension_version=quote(str(extension_version), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + extension_id=quote(str(extension_id), safe=""), + extension_version=quote(str(extension_version), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | ExtensionDetail: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | ExtensionDetail: if response.status_code == 200: response_200 = ExtensionDetail.from_dict(response.json()) - - return response_200 if response.status_code == 422: response_422 = ApiError.from_dict(response.json()) - - return response_422 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | ExtensionDetail]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | ExtensionDetail]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -76,9 +69,8 @@ def sync_detailed( extension_version: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | ExtensionDetail]: - """ + """ Args: account_id (str): database_id (str): @@ -91,15 +83,13 @@ def sync_detailed( Returns: Response[ApiError | ExtensionDetail] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, ) response = client.get_httpx_client().request( @@ -108,6 +98,7 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, @@ -115,9 +106,8 @@ def sync( extension_version: str, *, client: AuthenticatedClient, - ) -> ApiError | ExtensionDetail | None: - """ + """ Args: account_id (str): database_id (str): @@ -130,18 +120,17 @@ def sync( Returns: ApiError | ExtensionDetail - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -client=client, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, @@ -149,9 +138,8 @@ async def asyncio_detailed( extension_version: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | ExtensionDetail]: - """ + """ Args: account_id (str): database_id (str): @@ -164,23 +152,20 @@ async def asyncio_detailed( Returns: Response[ApiError | ExtensionDetail] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, @@ -188,9 +173,8 @@ async def asyncio( extension_version: str, *, client: AuthenticatedClient, - ) -> ApiError | ExtensionDetail | None: - """ + """ Args: account_id (str): database_id (str): @@ -203,14 +187,14 @@ async def asyncio( Returns: ApiError | ExtensionDetail - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/extensions/install_extension.py b/exasol/saas/client/openapi/api/extensions/install_extension.py index 12d6992f..d2640ff8 100644 --- a/exasol/saas/client/openapi/api/extensions/install_extension.py +++ b/exasol/saas/client/openapi/api/extensions/install_extension.py @@ -1,16 +1,18 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( @@ -18,38 +20,36 @@ def _get_kwargs( database_id: str, extension_id: str, extension_version: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "put", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/install".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),extension_id=quote(str(extension_id), safe=""),extension_version=quote(str(extension_version), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/install".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + extension_id=quote(str(extension_id), safe=""), + extension_version=quote(str(extension_version), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -65,9 +65,8 @@ def sync_detailed( extension_version: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -80,15 +79,13 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, ) response = client.get_httpx_client().request( @@ -97,6 +94,7 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, @@ -104,9 +102,8 @@ def sync( extension_version: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -119,18 +116,17 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -client=client, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, @@ -138,9 +134,8 @@ async def asyncio_detailed( extension_version: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -153,23 +148,20 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, @@ -177,9 +169,8 @@ async def asyncio( extension_version: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -192,14 +183,14 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/extensions/list_extension_instances.py b/exasol/saas/client/openapi/api/extensions/list_extension_instances.py index a051ded9..f796878a 100644 --- a/exasol/saas/client/openapi/api/extensions/list_extension_instances.py +++ b/exasol/saas/client/openapi/api/extensions/list_extension_instances.py @@ -1,17 +1,16 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.extension_instance import ExtensionInstance -from typing import cast - +from ...types import Response def _get_kwargs( @@ -19,33 +18,30 @@ def _get_kwargs( database_id: str, extension_id: str, extension_version: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/instances".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),extension_id=quote(str(extension_id), safe=""),extension_version=quote(str(extension_version), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/instances".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + extension_id=quote(str(extension_id), safe=""), + extension_version=quote(str(extension_version), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[ExtensionInstance]: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | list[ExtensionInstance]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in (_response_200): + for response_200_item_data in _response_200: response_200_item = ExtensionInstance.from_dict(response_200_item_data) - - response_200.append(response_200_item) return response_200 @@ -53,19 +49,16 @@ def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Res if response.status_code == 422: response_422 = ApiError.from_dict(response.json()) - - return response_422 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[ExtensionInstance]]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | list[ExtensionInstance]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -81,9 +74,8 @@ def sync_detailed( extension_version: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[ExtensionInstance]]: - """ + """ Args: account_id (str): database_id (str): @@ -96,15 +88,13 @@ def sync_detailed( Returns: Response[ApiError | list[ExtensionInstance]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, ) response = client.get_httpx_client().request( @@ -113,6 +103,7 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, @@ -120,9 +111,8 @@ def sync( extension_version: str, *, client: AuthenticatedClient, - ) -> ApiError | list[ExtensionInstance] | None: - """ + """ Args: account_id (str): database_id (str): @@ -135,18 +125,17 @@ def sync( Returns: ApiError | list[ExtensionInstance] - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -client=client, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, @@ -154,9 +143,8 @@ async def asyncio_detailed( extension_version: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[ExtensionInstance]]: - """ + """ Args: account_id (str): database_id (str): @@ -169,23 +157,20 @@ async def asyncio_detailed( Returns: Response[ApiError | list[ExtensionInstance]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, @@ -193,9 +178,8 @@ async def asyncio( extension_version: str, *, client: AuthenticatedClient, - ) -> ApiError | list[ExtensionInstance] | None: - """ + """ Args: account_id (str): database_id (str): @@ -208,14 +192,14 @@ async def asyncio( Returns: ApiError | list[ExtensionInstance] - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/extensions/list_extensions.py b/exasol/saas/client/openapi/api/extensions/list_extensions.py index 4ce62bff..26dcce55 100644 --- a/exasol/saas/client/openapi/api/extensions/list_extensions.py +++ b/exasol/saas/client/openapi/api/extensions/list_extensions.py @@ -1,62 +1,55 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.extension import Extension -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[Extension]: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | list[Extension]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in (_response_200): + for response_200_item_data in _response_200: response_200_item = Extension.from_dict(response_200_item_data) - - response_200.append(response_200_item) return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[Extension]]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | list[Extension]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -70,9 +63,8 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[Extension]]: - """ + """ Args: account_id (str): database_id (str): @@ -83,13 +75,11 @@ def sync_detailed( Returns: Response[ApiError | list[Extension]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) response = client.get_httpx_client().request( @@ -98,14 +88,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | list[Extension] | None: - """ + """ Args: account_id (str): database_id (str): @@ -116,24 +106,22 @@ def sync( Returns: ApiError | list[Extension] - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, - + database_id=database_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[Extension]]: - """ + """ Args: account_id (str): database_id (str): @@ -144,29 +132,25 @@ async def asyncio_detailed( Returns: Response[ApiError | list[Extension]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | list[Extension] | None: - """ + """ Args: account_id (str): database_id (str): @@ -177,12 +161,12 @@ async def asyncio( Returns: ApiError | list[Extension] - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/extensions/uninstall_extension.py b/exasol/saas/client/openapi/api/extensions/uninstall_extension.py index 22e550db..8a112030 100644 --- a/exasol/saas/client/openapi/api/extensions/uninstall_extension.py +++ b/exasol/saas/client/openapi/api/extensions/uninstall_extension.py @@ -1,16 +1,18 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( @@ -18,38 +20,36 @@ def _get_kwargs( database_id: str, extension_id: str, extension_version: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "put", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/uninstall".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),extension_id=quote(str(extension_id), safe=""),extension_version=quote(str(extension_version), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/extensions/{extension_id}/{extension_version}/uninstall".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + extension_id=quote(str(extension_id), safe=""), + extension_version=quote(str(extension_version), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -65,9 +65,8 @@ def sync_detailed( extension_version: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -80,15 +79,13 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, ) response = client.get_httpx_client().request( @@ -97,6 +94,7 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, @@ -104,9 +102,8 @@ def sync( extension_version: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -119,18 +116,17 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -client=client, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, @@ -138,9 +134,8 @@ async def asyncio_detailed( extension_version: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -153,23 +148,20 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, - + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, @@ -177,9 +169,8 @@ async def asyncio( extension_version: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -192,14 +183,14 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -extension_id=extension_id, -extension_version=extension_version, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + extension_id=extension_id, + extension_version=extension_version, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/files/__init__.py b/exasol/saas/client/openapi/api/files/__init__.py index c9921b5f..2d7c0b23 100644 --- a/exasol/saas/client/openapi/api/files/__init__.py +++ b/exasol/saas/client/openapi/api/files/__init__.py @@ -1 +1 @@ -""" Contains endpoint functions for accessing the API """ +"""Contains endpoint functions for accessing the API""" diff --git a/exasol/saas/client/openapi/api/files/create_folder.py b/exasol/saas/client/openapi/api/files/create_folder.py index 73794dbd..f09ffa4c 100644 --- a/exasol/saas/client/openapi/api/files/create_folder.py +++ b/exasol/saas/client/openapi/api/files/create_folder.py @@ -1,54 +1,53 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, key: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "post", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/folder/{key}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),key=quote(str(key), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/folder/{key}".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + key=quote(str(key), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -63,9 +62,8 @@ def sync_detailed( key: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -77,14 +75,12 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -key=key, - + database_id=database_id, + key=key, ) response = client.get_httpx_client().request( @@ -93,15 +89,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -113,26 +109,24 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -key=key, -client=client, - + database_id=database_id, + key=key, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -144,31 +138,27 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -key=key, - + database_id=database_id, + key=key, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -180,13 +170,13 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -key=key, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + key=key, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/files/delete_file.py b/exasol/saas/client/openapi/api/files/delete_file.py index 9efeb1b7..8419e8f0 100644 --- a/exasol/saas/client/openapi/api/files/delete_file.py +++ b/exasol/saas/client/openapi/api/files/delete_file.py @@ -1,54 +1,53 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, key: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "delete", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/files/{key}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),key=quote(str(key), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/files/{key}".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + key=quote(str(key), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -63,9 +62,8 @@ def sync_detailed( key: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -77,14 +75,12 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -key=key, - + database_id=database_id, + key=key, ) response = client.get_httpx_client().request( @@ -93,15 +89,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -113,26 +109,24 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -key=key, -client=client, - + database_id=database_id, + key=key, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -144,31 +138,27 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -key=key, - + database_id=database_id, + key=key, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -180,13 +170,13 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -key=key, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + key=key, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/files/delete_folder.py b/exasol/saas/client/openapi/api/files/delete_folder.py index 0d9a9475..a59cae9b 100644 --- a/exasol/saas/client/openapi/api/files/delete_folder.py +++ b/exasol/saas/client/openapi/api/files/delete_folder.py @@ -1,54 +1,53 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, key: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "delete", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/folder/{key}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),key=quote(str(key), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/folder/{key}".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + key=quote(str(key), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -63,9 +62,8 @@ def sync_detailed( key: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -77,14 +75,12 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -key=key, - + database_id=database_id, + key=key, ) response = client.get_httpx_client().request( @@ -93,15 +89,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -113,26 +109,24 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -key=key, -client=client, - + database_id=database_id, + key=key, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): database_id (str): @@ -144,31 +138,27 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -key=key, - + database_id=database_id, + key=key, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): database_id (str): @@ -180,13 +170,13 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -key=key, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + key=key, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/files/download_file.py b/exasol/saas/client/openapi/api/files/download_file.py index 751ca443..efb60f55 100644 --- a/exasol/saas/client/openapi/api/files/download_file.py +++ b/exasol/saas/client/openapi/api/files/download_file.py @@ -1,58 +1,52 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.download_file import DownloadFile -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, key: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/internal/accounts/{account_id}/databases/{database_id}/files/{key}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),key=quote(str(key), safe=""),), + "url": "/api/v1/internal/accounts/{account_id}/databases/{database_id}/files/{key}".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + key=quote(str(key), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | DownloadFile: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | DownloadFile: if response.status_code == 200: response_200 = DownloadFile.from_dict(response.json()) - - return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | DownloadFile]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | DownloadFile]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -67,9 +61,8 @@ def sync_detailed( key: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | DownloadFile]: - """ + """ Args: account_id (str): database_id (str): @@ -81,14 +74,12 @@ def sync_detailed( Returns: Response[ApiError | DownloadFile] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -key=key, - + database_id=database_id, + key=key, ) response = client.get_httpx_client().request( @@ -97,15 +88,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, - ) -> ApiError | DownloadFile | None: - """ + """ Args: account_id (str): database_id (str): @@ -117,26 +108,24 @@ def sync( Returns: ApiError | DownloadFile - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -key=key, -client=client, - + database_id=database_id, + key=key, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | DownloadFile]: - """ + """ Args: account_id (str): database_id (str): @@ -148,31 +137,27 @@ async def asyncio_detailed( Returns: Response[ApiError | DownloadFile] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -key=key, - + database_id=database_id, + key=key, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, - ) -> ApiError | DownloadFile | None: - """ + """ Args: account_id (str): database_id (str): @@ -184,13 +169,13 @@ async def asyncio( Returns: ApiError | DownloadFile - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -key=key, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + key=key, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/files/list_files.py b/exasol/saas/client/openapi/api/files/list_files.py index b16bb406..92a0e0ea 100644 --- a/exasol/saas/client/openapi/api/files/list_files.py +++ b/exasol/saas/client/openapi/api/files/list_files.py @@ -1,62 +1,55 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.file import File -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/files".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/files".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[File]: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | list[File]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in (_response_200): + for response_200_item_data in _response_200: response_200_item = File.from_dict(response_200_item_data) - - response_200.append(response_200_item) return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[File]]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | list[File]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -70,9 +63,8 @@ def sync_detailed( database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[File]]: - """ + """ Args: account_id (str): database_id (str): @@ -83,13 +75,11 @@ def sync_detailed( Returns: Response[ApiError | list[File]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) response = client.get_httpx_client().request( @@ -98,14 +88,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | list[File] | None: - """ + """ Args: account_id (str): database_id (str): @@ -116,24 +106,22 @@ def sync( Returns: ApiError | list[File] - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -client=client, - + database_id=database_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[File]]: - """ + """ Args: account_id (str): database_id (str): @@ -144,29 +132,25 @@ async def asyncio_detailed( Returns: Response[ApiError | list[File]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, - + database_id=database_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, *, client: AuthenticatedClient, - ) -> ApiError | list[File] | None: - """ + """ Args: account_id (str): database_id (str): @@ -177,12 +161,12 @@ async def asyncio( Returns: ApiError | list[File] - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/files/upload_file.py b/exasol/saas/client/openapi/api/files/upload_file.py index 29a69a06..1730398e 100644 --- a/exasol/saas/client/openapi/api/files/upload_file.py +++ b/exasol/saas/client/openapi/api/files/upload_file.py @@ -1,58 +1,52 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.upload_file import UploadFile -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, database_id: str, key: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "post", - "url": "/api/v1/accounts/{account_id}/databases/{database_id}/files/{key}".format(account_id=quote(str(account_id), safe=""),database_id=quote(str(database_id), safe=""),key=quote(str(key), safe=""),), + "url": "/api/v1/accounts/{account_id}/databases/{database_id}/files/{key}".format( + account_id=quote(str(account_id), safe=""), + database_id=quote(str(database_id), safe=""), + key=quote(str(key), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | UploadFile: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | UploadFile: if response.status_code == 200: response_200 = UploadFile.from_dict(response.json()) - - return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | UploadFile]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | UploadFile]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -67,9 +61,8 @@ def sync_detailed( key: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | UploadFile]: - """ + """ Args: account_id (str): database_id (str): @@ -81,14 +74,12 @@ def sync_detailed( Returns: Response[ApiError | UploadFile] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -key=key, - + database_id=database_id, + key=key, ) response = client.get_httpx_client().request( @@ -97,15 +88,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, - ) -> ApiError | UploadFile | None: - """ + """ Args: account_id (str): database_id (str): @@ -117,26 +108,24 @@ def sync( Returns: ApiError | UploadFile - """ - + """ return sync_detailed( account_id=account_id, -database_id=database_id, -key=key, -client=client, - + database_id=database_id, + key=key, + client=client, ).parsed + async def asyncio_detailed( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | UploadFile]: - """ + """ Args: account_id (str): database_id (str): @@ -148,31 +137,27 @@ async def asyncio_detailed( Returns: Response[ApiError | UploadFile] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -database_id=database_id, -key=key, - + database_id=database_id, + key=key, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, database_id: str, key: str, *, client: AuthenticatedClient, - ) -> ApiError | UploadFile | None: - """ + """ Args: account_id (str): database_id (str): @@ -184,13 +169,13 @@ async def asyncio( Returns: ApiError | UploadFile - """ - - - return (await asyncio_detailed( - account_id=account_id, -database_id=database_id, -key=key, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + database_id=database_id, + key=key, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/platform/__init__.py b/exasol/saas/client/openapi/api/platform/__init__.py index c9921b5f..2d7c0b23 100644 --- a/exasol/saas/client/openapi/api/platform/__init__.py +++ b/exasol/saas/client/openapi/api/platform/__init__.py @@ -1 +1 @@ -""" Contains endpoint functions for accessing the API """ +"""Contains endpoint functions for accessing the API""" diff --git a/exasol/saas/client/openapi/api/platform/list_cluster_sizes.py b/exasol/saas/client/openapi/api/platform/list_cluster_sizes.py index 91b4711a..df0dc142 100644 --- a/exasol/saas/client/openapi/api/platform/list_cluster_sizes.py +++ b/exasol/saas/client/openapi/api/platform/list_cluster_sizes.py @@ -1,61 +1,53 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.cluster_size_1 import ClusterSize1 -from typing import cast - +from ...types import Response def _get_kwargs( platform: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/platforms/{platform}/sizes".format(platform=quote(str(platform), safe=""),), + "url": "/api/v1/platforms/{platform}/sizes".format( + platform=quote(str(platform), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[ClusterSize1]: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | list[ClusterSize1]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in (_response_200): + for response_200_item_data in _response_200: response_200_item = ClusterSize1.from_dict(response_200_item_data) - - response_200.append(response_200_item) return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[ClusterSize1]]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | list[ClusterSize1]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -68,9 +60,8 @@ def sync_detailed( platform: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[ClusterSize1]]: - """ + """ Args: platform (str): @@ -80,12 +71,10 @@ def sync_detailed( Returns: Response[ApiError | list[ClusterSize1]] - """ - + """ kwargs = _get_kwargs( platform=platform, - ) response = client.get_httpx_client().request( @@ -94,13 +83,13 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( platform: str, *, client: AuthenticatedClient, - ) -> ApiError | list[ClusterSize1] | None: - """ + """ Args: platform (str): @@ -110,22 +99,20 @@ def sync( Returns: ApiError | list[ClusterSize1] - """ - + """ return sync_detailed( platform=platform, -client=client, - + client=client, ).parsed + async def asyncio_detailed( platform: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[ClusterSize1]]: - """ + """ Args: platform (str): @@ -135,27 +122,23 @@ async def asyncio_detailed( Returns: Response[ApiError | list[ClusterSize1]] - """ - + """ kwargs = _get_kwargs( platform=platform, - ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( platform: str, *, client: AuthenticatedClient, - ) -> ApiError | list[ClusterSize1] | None: - """ + """ Args: platform (str): @@ -165,11 +148,11 @@ async def asyncio( Returns: ApiError | list[ClusterSize1] - """ - + """ - return (await asyncio_detailed( - platform=platform, -client=client, - - )).parsed + return ( + await asyncio_detailed( + platform=platform, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/platform/list_platforms.py b/exasol/saas/client/openapi/api/platform/list_platforms.py index 960546c7..7c50835e 100644 --- a/exasol/saas/client/openapi/api/platform/list_platforms.py +++ b/exasol/saas/client/openapi/api/platform/list_platforms.py @@ -1,60 +1,48 @@ from http import HTTPStatus -from typing import Any, cast -from urllib.parse import quote +from typing import Any import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.platform import Platform -from typing import cast - - - -def _get_kwargs( - -) -> dict[str, Any]: - +from ...types import Response - - +def _get_kwargs() -> dict[str, Any]: _kwargs: dict[str, Any] = { "method": "get", "url": "/api/v1/platforms", } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[Platform]: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | list[Platform]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in (_response_200): + for response_200_item_data in _response_200: response_200_item = Platform.from_dict(response_200_item_data) - - response_200.append(response_200_item) return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[Platform]]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | list[Platform]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -66,21 +54,17 @@ def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Res def sync_detailed( *, client: AuthenticatedClient, - ) -> Response[ApiError | list[Platform]]: - """ + """ Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: Response[ApiError | list[Platform]] - """ - + """ - kwargs = _get_kwargs( - - ) + kwargs = _get_kwargs() response = client.get_httpx_client().request( **kwargs, @@ -88,67 +72,60 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( *, client: AuthenticatedClient, - ) -> ApiError | list[Platform] | None: - """ + """ Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: ApiError | list[Platform] - """ - + """ return sync_detailed( client=client, - ).parsed + async def asyncio_detailed( *, client: AuthenticatedClient, - ) -> Response[ApiError | list[Platform]]: - """ + """ Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: Response[ApiError | list[Platform]] - """ + """ + kwargs = _get_kwargs() - kwargs = _get_kwargs( - - ) - - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( *, client: AuthenticatedClient, - ) -> ApiError | list[Platform] | None: - """ + """ Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: ApiError | list[Platform] - """ - + """ - return (await asyncio_detailed( - client=client, - - )).parsed + return ( + await asyncio_detailed( + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/platform/list_regions.py b/exasol/saas/client/openapi/api/platform/list_regions.py index 91341a0a..f1be9589 100644 --- a/exasol/saas/client/openapi/api/platform/list_regions.py +++ b/exasol/saas/client/openapi/api/platform/list_regions.py @@ -1,61 +1,53 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.region import Region -from typing import cast - +from ...types import Response def _get_kwargs( platform: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/platforms/{platform}/regions".format(platform=quote(str(platform), safe=""),), + "url": "/api/v1/platforms/{platform}/regions".format( + platform=quote(str(platform), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[Region]: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | list[Region]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in (_response_200): + for response_200_item_data in _response_200: response_200_item = Region.from_dict(response_200_item_data) - - response_200.append(response_200_item) return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[Region]]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | list[Region]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -68,9 +60,8 @@ def sync_detailed( platform: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[Region]]: - """ + """ Args: platform (str): @@ -80,12 +71,10 @@ def sync_detailed( Returns: Response[ApiError | list[Region]] - """ - + """ kwargs = _get_kwargs( platform=platform, - ) response = client.get_httpx_client().request( @@ -94,13 +83,13 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( platform: str, *, client: AuthenticatedClient, - ) -> ApiError | list[Region] | None: - """ + """ Args: platform (str): @@ -110,22 +99,20 @@ def sync( Returns: ApiError | list[Region] - """ - + """ return sync_detailed( platform=platform, -client=client, - + client=client, ).parsed + async def asyncio_detailed( platform: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[Region]]: - """ + """ Args: platform (str): @@ -135,27 +122,23 @@ async def asyncio_detailed( Returns: Response[ApiError | list[Region]] - """ - + """ kwargs = _get_kwargs( platform=platform, - ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( platform: str, *, client: AuthenticatedClient, - ) -> ApiError | list[Region] | None: - """ + """ Args: platform (str): @@ -165,11 +148,11 @@ async def asyncio( Returns: ApiError | list[Region] - """ - + """ - return (await asyncio_detailed( - platform=platform, -client=client, - - )).parsed + return ( + await asyncio_detailed( + platform=platform, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/profile/__init__.py b/exasol/saas/client/openapi/api/profile/__init__.py index c9921b5f..2d7c0b23 100644 --- a/exasol/saas/client/openapi/api/profile/__init__.py +++ b/exasol/saas/client/openapi/api/profile/__init__.py @@ -1 +1 @@ -""" Contains endpoint functions for accessing the API """ +"""Contains endpoint functions for accessing the API""" diff --git a/exasol/saas/client/openapi/api/profile/update_profile.py b/exasol/saas/client/openapi/api/profile/update_profile.py index ccb2b2b3..b067bfac 100644 --- a/exasol/saas/client/openapi/api/profile/update_profile.py +++ b/exasol/saas/client/openapi/api/profile/update_profile.py @@ -1,31 +1,26 @@ from http import HTTPStatus -from typing import Any, cast -from urllib.parse import quote +from typing import ( + Any, + cast, +) import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.update_profile import UpdateProfile -from typing import cast - +from ...types import Response def _get_kwargs( *, body: UpdateProfile, - ) -> dict[str, Any]: headers: dict[str, Any] = {} - - - - - _kwargs: dict[str, Any] = { "method": "put", "url": "/api/v1/me", @@ -33,28 +28,27 @@ def _get_kwargs( _kwargs["json"] = body.to_dict() - headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -67,9 +61,8 @@ def sync_detailed( *, client: AuthenticatedClient, body: UpdateProfile, - ) -> Response[Any | ApiError]: - """ + """ Args: body (UpdateProfile): @@ -79,12 +72,10 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( body=body, - ) response = client.get_httpx_client().request( @@ -93,13 +84,13 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( *, client: AuthenticatedClient, body: UpdateProfile, - ) -> Any | ApiError | None: - """ + """ Args: body (UpdateProfile): @@ -109,22 +100,20 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( client=client, -body=body, - + body=body, ).parsed + async def asyncio_detailed( *, client: AuthenticatedClient, body: UpdateProfile, - ) -> Response[Any | ApiError]: - """ + """ Args: body (UpdateProfile): @@ -134,27 +123,23 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( body=body, - ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( *, client: AuthenticatedClient, body: UpdateProfile, - ) -> Any | ApiError | None: - """ + """ Args: body (UpdateProfile): @@ -164,11 +149,11 @@ async def asyncio( Returns: Any | ApiError - """ - + """ - return (await asyncio_detailed( - client=client, -body=body, - - )).parsed + return ( + await asyncio_detailed( + client=client, + body=body, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/security/__init__.py b/exasol/saas/client/openapi/api/security/__init__.py index c9921b5f..2d7c0b23 100644 --- a/exasol/saas/client/openapi/api/security/__init__.py +++ b/exasol/saas/client/openapi/api/security/__init__.py @@ -1 +1 @@ -""" Contains endpoint functions for accessing the API """ +"""Contains endpoint functions for accessing the API""" diff --git a/exasol/saas/client/openapi/api/security/add_allowed_ip.py b/exasol/saas/client/openapi/api/security/add_allowed_ip.py index aa0af46e..db48fa8b 100644 --- a/exasol/saas/client/openapi/api/security/add_allowed_ip.py +++ b/exasol/saas/client/openapi/api/security/add_allowed_ip.py @@ -1,65 +1,57 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.allowed_ip import AllowedIP from ...models.api_error import ApiError from ...models.create_allowed_ip import CreateAllowedIP -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, *, body: CreateAllowedIP, - ) -> dict[str, Any]: headers: dict[str, Any] = {} - - - - - _kwargs: dict[str, Any] = { "method": "post", - "url": "/api/v1/accounts/{account_id}/security/allowlist_ip".format(account_id=quote(str(account_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/security/allowlist_ip".format( + account_id=quote(str(account_id), safe=""), + ), } _kwargs["json"] = body.to_dict() - headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> AllowedIP | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> AllowedIP | ApiError: if response.status_code == 200: response_200 = AllowedIP.from_dict(response.json()) - - return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[AllowedIP | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[AllowedIP | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -73,9 +65,8 @@ def sync_detailed( *, client: AuthenticatedClient, body: CreateAllowedIP, - ) -> Response[AllowedIP | ApiError]: - """ + """ Args: account_id (str): body (CreateAllowedIP): @@ -86,13 +77,11 @@ def sync_detailed( Returns: Response[AllowedIP | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -body=body, - + body=body, ) response = client.get_httpx_client().request( @@ -101,14 +90,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, *, client: AuthenticatedClient, body: CreateAllowedIP, - ) -> AllowedIP | ApiError | None: - """ + """ Args: account_id (str): body (CreateAllowedIP): @@ -119,24 +108,22 @@ def sync( Returns: AllowedIP | ApiError - """ - + """ return sync_detailed( account_id=account_id, -client=client, -body=body, - + client=client, + body=body, ).parsed + async def asyncio_detailed( account_id: str, *, client: AuthenticatedClient, body: CreateAllowedIP, - ) -> Response[AllowedIP | ApiError]: - """ + """ Args: account_id (str): body (CreateAllowedIP): @@ -147,29 +134,25 @@ async def asyncio_detailed( Returns: Response[AllowedIP | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -body=body, - + body=body, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, *, client: AuthenticatedClient, body: CreateAllowedIP, - ) -> AllowedIP | ApiError | None: - """ + """ Args: account_id (str): body (CreateAllowedIP): @@ -180,12 +163,12 @@ async def asyncio( Returns: AllowedIP | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -client=client, -body=body, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + client=client, + body=body, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/security/delete_allowed_ip.py b/exasol/saas/client/openapi/api/security/delete_allowed_ip.py index 66cc320b..4b4ff65f 100644 --- a/exasol/saas/client/openapi/api/security/delete_allowed_ip.py +++ b/exasol/saas/client/openapi/api/security/delete_allowed_ip.py @@ -1,53 +1,51 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, allowlist_ip_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "delete", - "url": "/api/v1/accounts/{account_id}/security/allowlist_ip/{allowlist_ip_id}".format(account_id=quote(str(account_id), safe=""),allowlist_ip_id=quote(str(allowlist_ip_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/security/allowlist_ip/{allowlist_ip_id}".format( + account_id=quote(str(account_id), safe=""), + allowlist_ip_id=quote(str(allowlist_ip_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -61,9 +59,8 @@ def sync_detailed( allowlist_ip_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): allowlist_ip_id (str): @@ -74,13 +71,11 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -allowlist_ip_id=allowlist_ip_id, - + allowlist_ip_id=allowlist_ip_id, ) response = client.get_httpx_client().request( @@ -89,14 +84,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, allowlist_ip_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): allowlist_ip_id (str): @@ -107,24 +102,22 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -allowlist_ip_id=allowlist_ip_id, -client=client, - + allowlist_ip_id=allowlist_ip_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, allowlist_ip_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): allowlist_ip_id (str): @@ -135,29 +128,25 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -allowlist_ip_id=allowlist_ip_id, - + allowlist_ip_id=allowlist_ip_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, allowlist_ip_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): allowlist_ip_id (str): @@ -168,12 +157,12 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -allowlist_ip_id=allowlist_ip_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + allowlist_ip_id=allowlist_ip_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/security/get_allowed_ip.py b/exasol/saas/client/openapi/api/security/get_allowed_ip.py index cb903072..058bcbac 100644 --- a/exasol/saas/client/openapi/api/security/get_allowed_ip.py +++ b/exasol/saas/client/openapi/api/security/get_allowed_ip.py @@ -1,57 +1,50 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.allowed_ip import AllowedIP from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, allowlist_ip_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/security/allowlist_ip/{allowlist_ip_id}".format(account_id=quote(str(account_id), safe=""),allowlist_ip_id=quote(str(allowlist_ip_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/security/allowlist_ip/{allowlist_ip_id}".format( + account_id=quote(str(account_id), safe=""), + allowlist_ip_id=quote(str(allowlist_ip_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> AllowedIP | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> AllowedIP | ApiError: if response.status_code == 200: response_200 = AllowedIP.from_dict(response.json()) - - return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[AllowedIP | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[AllowedIP | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -65,9 +58,8 @@ def sync_detailed( allowlist_ip_id: str, *, client: AuthenticatedClient, - ) -> Response[AllowedIP | ApiError]: - """ + """ Args: account_id (str): allowlist_ip_id (str): @@ -78,13 +70,11 @@ def sync_detailed( Returns: Response[AllowedIP | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -allowlist_ip_id=allowlist_ip_id, - + allowlist_ip_id=allowlist_ip_id, ) response = client.get_httpx_client().request( @@ -93,14 +83,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, allowlist_ip_id: str, *, client: AuthenticatedClient, - ) -> AllowedIP | ApiError | None: - """ + """ Args: account_id (str): allowlist_ip_id (str): @@ -111,24 +101,22 @@ def sync( Returns: AllowedIP | ApiError - """ - + """ return sync_detailed( account_id=account_id, -allowlist_ip_id=allowlist_ip_id, -client=client, - + allowlist_ip_id=allowlist_ip_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, allowlist_ip_id: str, *, client: AuthenticatedClient, - ) -> Response[AllowedIP | ApiError]: - """ + """ Args: account_id (str): allowlist_ip_id (str): @@ -139,29 +127,25 @@ async def asyncio_detailed( Returns: Response[AllowedIP | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -allowlist_ip_id=allowlist_ip_id, - + allowlist_ip_id=allowlist_ip_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, allowlist_ip_id: str, *, client: AuthenticatedClient, - ) -> AllowedIP | ApiError | None: - """ + """ Args: account_id (str): allowlist_ip_id (str): @@ -172,12 +156,12 @@ async def asyncio( Returns: AllowedIP | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -allowlist_ip_id=allowlist_ip_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + allowlist_ip_id=allowlist_ip_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/security/list_allowed_i_ps.py b/exasol/saas/client/openapi/api/security/list_allowed_i_ps.py index 30c363f8..ab4a4eea 100644 --- a/exasol/saas/client/openapi/api/security/list_allowed_i_ps.py +++ b/exasol/saas/client/openapi/api/security/list_allowed_i_ps.py @@ -1,61 +1,53 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.allowed_ip import AllowedIP from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/security/allowlist_ip".format(account_id=quote(str(account_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/security/allowlist_ip".format( + account_id=quote(str(account_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[AllowedIP]: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | list[AllowedIP]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in (_response_200): + for response_200_item_data in _response_200: response_200_item = AllowedIP.from_dict(response_200_item_data) - - response_200.append(response_200_item) return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[AllowedIP]]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | list[AllowedIP]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -68,9 +60,8 @@ def sync_detailed( account_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[AllowedIP]]: - """ + """ Args: account_id (str): @@ -80,12 +71,10 @@ def sync_detailed( Returns: Response[ApiError | list[AllowedIP]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, - ) response = client.get_httpx_client().request( @@ -94,13 +83,13 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, *, client: AuthenticatedClient, - ) -> ApiError | list[AllowedIP] | None: - """ + """ Args: account_id (str): @@ -110,22 +99,20 @@ def sync( Returns: ApiError | list[AllowedIP] - """ - + """ return sync_detailed( account_id=account_id, -client=client, - + client=client, ).parsed + async def asyncio_detailed( account_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | list[AllowedIP]]: - """ + """ Args: account_id (str): @@ -135,27 +122,23 @@ async def asyncio_detailed( Returns: Response[ApiError | list[AllowedIP]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, - ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, *, client: AuthenticatedClient, - ) -> ApiError | list[AllowedIP] | None: - """ + """ Args: account_id (str): @@ -165,11 +148,11 @@ async def asyncio( Returns: ApiError | list[AllowedIP] - """ - + """ - return (await asyncio_detailed( - account_id=account_id, -client=client, - - )).parsed + return ( + await asyncio_detailed( + account_id=account_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/security/update_allowed_ip.py b/exasol/saas/client/openapi/api/security/update_allowed_ip.py index b04a3dc6..4e912bc9 100644 --- a/exasol/saas/client/openapi/api/security/update_allowed_ip.py +++ b/exasol/saas/client/openapi/api/security/update_allowed_ip.py @@ -1,17 +1,19 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.update_allowed_ip import UpdateAllowedIP -from typing import cast - +from ...types import Response def _get_kwargs( @@ -19,44 +21,40 @@ def _get_kwargs( allowlist_ip_id: str, *, body: UpdateAllowedIP, - ) -> dict[str, Any]: headers: dict[str, Any] = {} - - - - - _kwargs: dict[str, Any] = { "method": "put", - "url": "/api/v1/accounts/{account_id}/security/allowlist_ip/{allowlist_ip_id}".format(account_id=quote(str(account_id), safe=""),allowlist_ip_id=quote(str(allowlist_ip_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/security/allowlist_ip/{allowlist_ip_id}".format( + account_id=quote(str(account_id), safe=""), + allowlist_ip_id=quote(str(allowlist_ip_id), safe=""), + ), } _kwargs["json"] = body.to_dict() - headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -71,9 +69,8 @@ def sync_detailed( *, client: AuthenticatedClient, body: UpdateAllowedIP, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): allowlist_ip_id (str): @@ -85,14 +82,12 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -allowlist_ip_id=allowlist_ip_id, -body=body, - + allowlist_ip_id=allowlist_ip_id, + body=body, ) response = client.get_httpx_client().request( @@ -101,15 +96,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, allowlist_ip_id: str, *, client: AuthenticatedClient, body: UpdateAllowedIP, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): allowlist_ip_id (str): @@ -121,26 +116,24 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -allowlist_ip_id=allowlist_ip_id, -client=client, -body=body, - + allowlist_ip_id=allowlist_ip_id, + client=client, + body=body, ).parsed + async def asyncio_detailed( account_id: str, allowlist_ip_id: str, *, client: AuthenticatedClient, body: UpdateAllowedIP, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): allowlist_ip_id (str): @@ -152,31 +145,27 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -allowlist_ip_id=allowlist_ip_id, -body=body, - + allowlist_ip_id=allowlist_ip_id, + body=body, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, allowlist_ip_id: str, *, client: AuthenticatedClient, body: UpdateAllowedIP, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): allowlist_ip_id (str): @@ -188,13 +177,13 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -allowlist_ip_id=allowlist_ip_id, -client=client, -body=body, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + allowlist_ip_id=allowlist_ip_id, + client=client, + body=body, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/usage/__init__.py b/exasol/saas/client/openapi/api/usage/__init__.py index c9921b5f..2d7c0b23 100644 --- a/exasol/saas/client/openapi/api/usage/__init__.py +++ b/exasol/saas/client/openapi/api/usage/__init__.py @@ -1 +1 @@ -""" Contains endpoint functions for accessing the API """ +"""Contains endpoint functions for accessing the API""" diff --git a/exasol/saas/client/openapi/api/usage/get_usage.py b/exasol/saas/client/openapi/api/usage/get_usage.py index e943488d..28b21e05 100644 --- a/exasol/saas/client/openapi/api/usage/get_usage.py +++ b/exasol/saas/client/openapi/api/usage/get_usage.py @@ -1,19 +1,21 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.get_usage_type import GetUsageType from ...models.usage import Usage -from ...types import UNSET, Unset -from typing import cast - +from ...types import ( + UNSET, + Response, + Unset, +) def _get_kwargs( @@ -21,11 +23,7 @@ def _get_kwargs( *, year_month: str | Unset = UNSET, type_: GetUsageType | Unset = UNSET, - ) -> dict[str, Any]: - - - params: dict[str, Any] = {} @@ -37,38 +35,35 @@ def _get_kwargs( params["type"] = json_type_ - params = {k: v for k, v in params.items() if v is not UNSET and v is not None} - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/usage".format(account_id=quote(str(account_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/usage".format( + account_id=quote(str(account_id), safe=""), + ), "params": params, } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | Usage: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | Usage: if response.status_code == 200: response_200 = Usage.from_dict(response.json()) - - return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | Usage]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | Usage]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -83,9 +78,8 @@ def sync_detailed( client: AuthenticatedClient, year_month: str | Unset = UNSET, type_: GetUsageType | Unset = UNSET, - ) -> Response[ApiError | Usage]: - """ + """ Args: account_id (str): year_month (str | Unset): @@ -97,14 +91,12 @@ def sync_detailed( Returns: Response[ApiError | Usage] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -year_month=year_month, -type_=type_, - + year_month=year_month, + type_=type_, ) response = client.get_httpx_client().request( @@ -113,15 +105,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, *, client: AuthenticatedClient, year_month: str | Unset = UNSET, type_: GetUsageType | Unset = UNSET, - ) -> ApiError | Usage | None: - """ + """ Args: account_id (str): year_month (str | Unset): @@ -133,26 +125,24 @@ def sync( Returns: ApiError | Usage - """ - + """ return sync_detailed( account_id=account_id, -client=client, -year_month=year_month, -type_=type_, - + client=client, + year_month=year_month, + type_=type_, ).parsed + async def asyncio_detailed( account_id: str, *, client: AuthenticatedClient, year_month: str | Unset = UNSET, type_: GetUsageType | Unset = UNSET, - ) -> Response[ApiError | Usage]: - """ + """ Args: account_id (str): year_month (str | Unset): @@ -164,31 +154,27 @@ async def asyncio_detailed( Returns: Response[ApiError | Usage] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -year_month=year_month, -type_=type_, - + year_month=year_month, + type_=type_, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, *, client: AuthenticatedClient, year_month: str | Unset = UNSET, type_: GetUsageType | Unset = UNSET, - ) -> ApiError | Usage | None: - """ + """ Args: account_id (str): year_month (str | Unset): @@ -200,13 +186,13 @@ async def asyncio( Returns: ApiError | Usage - """ - - - return (await asyncio_detailed( - account_id=account_id, -client=client, -year_month=year_month, -type_=type_, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + client=client, + year_month=year_month, + type_=type_, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/users/__init__.py b/exasol/saas/client/openapi/api/users/__init__.py index c9921b5f..2d7c0b23 100644 --- a/exasol/saas/client/openapi/api/users/__init__.py +++ b/exasol/saas/client/openapi/api/users/__init__.py @@ -1 +1 @@ -""" Contains endpoint functions for accessing the API """ +"""Contains endpoint functions for accessing the API""" diff --git a/exasol/saas/client/openapi/api/users/delete_user.py b/exasol/saas/client/openapi/api/users/delete_user.py index bb48ed6c..d0851dc5 100644 --- a/exasol/saas/client/openapi/api/users/delete_user.py +++ b/exasol/saas/client/openapi/api/users/delete_user.py @@ -1,53 +1,51 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, user_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "delete", - "url": "/api/v1/accounts/{account_id}/users/{user_id}".format(account_id=quote(str(account_id), safe=""),user_id=quote(str(user_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/users/{user_id}".format( + account_id=quote(str(account_id), safe=""), + user_id=quote(str(user_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -61,9 +59,8 @@ def sync_detailed( user_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): user_id (str): @@ -74,13 +71,11 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -user_id=user_id, - + user_id=user_id, ) response = client.get_httpx_client().request( @@ -89,14 +84,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, user_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): user_id (str): @@ -107,24 +102,22 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -user_id=user_id, -client=client, - + user_id=user_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, user_id: str, *, client: AuthenticatedClient, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): user_id (str): @@ -135,29 +128,25 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -user_id=user_id, - + user_id=user_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, user_id: str, *, client: AuthenticatedClient, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): user_id (str): @@ -168,12 +157,12 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -user_id=user_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + user_id=user_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/users/get_user.py b/exasol/saas/client/openapi/api/users/get_user.py index d1f3484d..ddcfea5f 100644 --- a/exasol/saas/client/openapi/api/users/get_user.py +++ b/exasol/saas/client/openapi/api/users/get_user.py @@ -1,57 +1,50 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.user import User -from typing import cast - +from ...types import Response def _get_kwargs( account_id: str, user_id: str, - ) -> dict[str, Any]: - - - - - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/internal/accounts/{account_id}/users/{user_id}".format(account_id=quote(str(account_id), safe=""),user_id=quote(str(user_id), safe=""),), + "url": "/api/v1/internal/accounts/{account_id}/users/{user_id}".format( + account_id=quote(str(account_id), safe=""), + user_id=quote(str(user_id), safe=""), + ), } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | User: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | User: if response.status_code == 200: response_200 = User.from_dict(response.json()) - - return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | User]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | User]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -65,9 +58,8 @@ def sync_detailed( user_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | User]: - """ + """ Args: account_id (str): user_id (str): @@ -78,13 +70,11 @@ def sync_detailed( Returns: Response[ApiError | User] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -user_id=user_id, - + user_id=user_id, ) response = client.get_httpx_client().request( @@ -93,14 +83,14 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, user_id: str, *, client: AuthenticatedClient, - ) -> ApiError | User | None: - """ + """ Args: account_id (str): user_id (str): @@ -111,24 +101,22 @@ def sync( Returns: ApiError | User - """ - + """ return sync_detailed( account_id=account_id, -user_id=user_id, -client=client, - + user_id=user_id, + client=client, ).parsed + async def asyncio_detailed( account_id: str, user_id: str, *, client: AuthenticatedClient, - ) -> Response[ApiError | User]: - """ + """ Args: account_id (str): user_id (str): @@ -139,29 +127,25 @@ async def asyncio_detailed( Returns: Response[ApiError | User] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -user_id=user_id, - + user_id=user_id, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, user_id: str, *, client: AuthenticatedClient, - ) -> ApiError | User | None: - """ + """ Args: account_id (str): user_id (str): @@ -172,12 +156,12 @@ async def asyncio( Returns: ApiError | User - """ - - - return (await asyncio_detailed( - account_id=account_id, -user_id=user_id, -client=client, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + user_id=user_id, + client=client, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/users/list_users.py b/exasol/saas/client/openapi/api/users/list_users.py index 1ac69520..983ccd33 100644 --- a/exasol/saas/client/openapi/api/users/list_users.py +++ b/exasol/saas/client/openapi/api/users/list_users.py @@ -1,18 +1,20 @@ from http import HTTPStatus -from typing import Any, cast +from typing import Any from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.user import User -from ...types import UNSET, Unset -from typing import cast - +from ...types import ( + UNSET, + Response, + Unset, +) def _get_kwargs( @@ -21,11 +23,7 @@ def _get_kwargs( filter_: str | Unset = UNSET, next_: int | Unset = UNSET, limit: int | Unset = UNSET, - ) -> dict[str, Any]: - - - params: dict[str, Any] = {} @@ -35,43 +33,40 @@ def _get_kwargs( params["limit"] = limit - params = {k: v for k, v in params.items() if v is not UNSET and v is not None} - _kwargs: dict[str, Any] = { "method": "get", - "url": "/api/v1/accounts/{account_id}/users".format(account_id=quote(str(account_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/users".format( + account_id=quote(str(account_id), safe=""), + ), "params": params, } - return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> ApiError | list[User]: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ApiError | list[User]: if response.status_code == 200: response_200 = [] _response_200 = response.json() - for response_200_item_data in (_response_200): + for response_200_item_data in _response_200: response_200_item = User.from_dict(response_200_item_data) - - response_200.append(response_200_item) return response_200 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[ApiError | list[User]]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ApiError | list[User]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -87,9 +82,8 @@ def sync_detailed( filter_: str | Unset = UNSET, next_: int | Unset = UNSET, limit: int | Unset = UNSET, - ) -> Response[ApiError | list[User]]: - """ + """ Args: account_id (str): filter_ (str | Unset): @@ -102,15 +96,13 @@ def sync_detailed( Returns: Response[ApiError | list[User]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -filter_=filter_, -next_=next_, -limit=limit, - + filter_=filter_, + next_=next_, + limit=limit, ) response = client.get_httpx_client().request( @@ -119,6 +111,7 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, *, @@ -126,9 +119,8 @@ def sync( filter_: str | Unset = UNSET, next_: int | Unset = UNSET, limit: int | Unset = UNSET, - ) -> ApiError | list[User] | None: - """ + """ Args: account_id (str): filter_ (str | Unset): @@ -141,18 +133,17 @@ def sync( Returns: ApiError | list[User] - """ - + """ return sync_detailed( account_id=account_id, -client=client, -filter_=filter_, -next_=next_, -limit=limit, - + client=client, + filter_=filter_, + next_=next_, + limit=limit, ).parsed + async def asyncio_detailed( account_id: str, *, @@ -160,9 +151,8 @@ async def asyncio_detailed( filter_: str | Unset = UNSET, next_: int | Unset = UNSET, limit: int | Unset = UNSET, - ) -> Response[ApiError | list[User]]: - """ + """ Args: account_id (str): filter_ (str | Unset): @@ -175,23 +165,20 @@ async def asyncio_detailed( Returns: Response[ApiError | list[User]] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -filter_=filter_, -next_=next_, -limit=limit, - + filter_=filter_, + next_=next_, + limit=limit, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, *, @@ -199,9 +186,8 @@ async def asyncio( filter_: str | Unset = UNSET, next_: int | Unset = UNSET, limit: int | Unset = UNSET, - ) -> ApiError | list[User] | None: - """ + """ Args: account_id (str): filter_ (str | Unset): @@ -214,14 +200,14 @@ async def asyncio( Returns: ApiError | list[User] - """ - - - return (await asyncio_detailed( - account_id=account_id, -client=client, -filter_=filter_, -next_=next_, -limit=limit, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + client=client, + filter_=filter_, + next_=next_, + limit=limit, + ) + ).parsed diff --git a/exasol/saas/client/openapi/api/users/patch_user.py b/exasol/saas/client/openapi/api/users/patch_user.py index 10fe9b74..afa9baf8 100644 --- a/exasol/saas/client/openapi/api/users/patch_user.py +++ b/exasol/saas/client/openapi/api/users/patch_user.py @@ -1,17 +1,19 @@ from http import HTTPStatus -from typing import Any, cast +from typing import ( + Any, + cast, +) from urllib.parse import quote import httpx -from ...client import AuthenticatedClient, Client -from ...types import Response, UNSET -from ... import errors - +from ...client import ( + AuthenticatedClient, + Client, +) from ...models.api_error import ApiError from ...models.patch_user import PatchUser -from typing import cast - +from ...types import Response def _get_kwargs( @@ -19,44 +21,40 @@ def _get_kwargs( user_id: str, *, body: PatchUser, - ) -> dict[str, Any]: headers: dict[str, Any] = {} - - - - - _kwargs: dict[str, Any] = { "method": "patch", - "url": "/api/v1/accounts/{account_id}/users/{user_id}".format(account_id=quote(str(account_id), safe=""),user_id=quote(str(user_id), safe=""),), + "url": "/api/v1/accounts/{account_id}/users/{user_id}".format( + account_id=quote(str(account_id), safe=""), + user_id=quote(str(user_id), safe=""), + ), } _kwargs["json"] = body.to_dict() - headers["Content-Type"] = "application/json" _kwargs["headers"] = headers return _kwargs - -def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Any | ApiError: +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ApiError: if response.status_code == 204: response_204 = cast(Any, None) return response_204 response_default = ApiError.from_dict(response.json()) - - return response_default - -def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Any | ApiError]: +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ApiError]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -71,9 +69,8 @@ def sync_detailed( *, client: AuthenticatedClient, body: PatchUser, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): user_id (str): @@ -85,14 +82,12 @@ def sync_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -user_id=user_id, -body=body, - + user_id=user_id, + body=body, ) response = client.get_httpx_client().request( @@ -101,15 +96,15 @@ def sync_detailed( return _build_response(client=client, response=response) + def sync( account_id: str, user_id: str, *, client: AuthenticatedClient, body: PatchUser, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): user_id (str): @@ -121,26 +116,24 @@ def sync( Returns: Any | ApiError - """ - + """ return sync_detailed( account_id=account_id, -user_id=user_id, -client=client, -body=body, - + user_id=user_id, + client=client, + body=body, ).parsed + async def asyncio_detailed( account_id: str, user_id: str, *, client: AuthenticatedClient, body: PatchUser, - ) -> Response[Any | ApiError]: - """ + """ Args: account_id (str): user_id (str): @@ -152,31 +145,27 @@ async def asyncio_detailed( Returns: Response[Any | ApiError] - """ - + """ kwargs = _get_kwargs( account_id=account_id, -user_id=user_id, -body=body, - + user_id=user_id, + body=body, ) - response = await client.get_async_httpx_client().request( - **kwargs - ) + response = await client.get_async_httpx_client().request(**kwargs) return _build_response(client=client, response=response) + async def asyncio( account_id: str, user_id: str, *, client: AuthenticatedClient, body: PatchUser, - ) -> Any | ApiError | None: - """ + """ Args: account_id (str): user_id (str): @@ -188,13 +177,13 @@ async def asyncio( Returns: Any | ApiError - """ - - - return (await asyncio_detailed( - account_id=account_id, -user_id=user_id, -client=client, -body=body, - - )).parsed + """ + + return ( + await asyncio_detailed( + account_id=account_id, + user_id=user_id, + client=client, + body=body, + ) + ).parsed diff --git a/exasol/saas/client/openapi/client.py b/exasol/saas/client/openapi/client.py index 5eeb05a0..9ee315bc 100644 --- a/exasol/saas/client/openapi/client.py +++ b/exasol/saas/client/openapi/client.py @@ -1,11 +1,12 @@ import ssl from typing import Any -from attrs import define, field, evolve import httpx - - - +from attrs import ( + define, + evolve, + field, +) @define @@ -36,13 +37,18 @@ class Client: status code that was not documented in the source OpenAPI document. Can also be provided as a keyword argument to the constructor. """ + raise_on_unexpected_status: bool = field(default=False, kw_only=True) _base_url: str = field(alias="base_url") _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies") _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers") _timeout: httpx.Timeout | None = field(default=None, kw_only=True, alias="timeout") - _verify_ssl: str | bool | ssl.SSLContext = field(default=True, kw_only=True, alias="verify_ssl") - _follow_redirects: bool = field(default=False, kw_only=True, alias="follow_redirects") + _verify_ssl: str | bool | ssl.SSLContext = field( + default=True, kw_only=True, alias="verify_ssl" + ) + _follow_redirects: bool = field( + default=False, kw_only=True, alias="follow_redirects" + ) _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args") _client: httpx.Client | None = field(default=None, init=False) _async_client: httpx.AsyncClient | None = field(default=None, init=False) @@ -171,8 +177,12 @@ class AuthenticatedClient: _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies") _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers") _timeout: httpx.Timeout | None = field(default=None, kw_only=True, alias="timeout") - _verify_ssl: str | bool | ssl.SSLContext = field(default=True, kw_only=True, alias="verify_ssl") - _follow_redirects: bool = field(default=False, kw_only=True, alias="follow_redirects") + _verify_ssl: str | bool | ssl.SSLContext = field( + default=True, kw_only=True, alias="verify_ssl" + ) + _follow_redirects: bool = field( + default=False, kw_only=True, alias="follow_redirects" + ) _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args") _client: httpx.Client | None = field(default=None, init=False) _async_client: httpx.AsyncClient | None = field(default=None, init=False) @@ -216,7 +226,9 @@ def set_httpx_client(self, client: httpx.Client) -> "AuthenticatedClient": def get_httpx_client(self) -> httpx.Client: """Get the underlying httpx.Client, constructing a new one if not previously set""" if self._client is None: - self._headers[self.auth_header_name] = f"{self.prefix} {self.token}" if self.prefix else self.token + self._headers[self.auth_header_name] = ( + f"{self.prefix} {self.token}" if self.prefix else self.token + ) self._client = httpx.Client( base_url=self._base_url, cookies=self._cookies, @@ -237,7 +249,9 @@ def __exit__(self, *args: Any, **kwargs: Any) -> None: """Exit a context manager for internal httpx.Client (see httpx docs)""" self.get_httpx_client().__exit__(*args, **kwargs) - def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "AuthenticatedClient": + def set_async_httpx_client( + self, async_client: httpx.AsyncClient + ) -> "AuthenticatedClient": """Manually set the underlying httpx.AsyncClient **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout. @@ -248,7 +262,9 @@ def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "Authentica def get_async_httpx_client(self) -> httpx.AsyncClient: """Get the underlying httpx.AsyncClient, constructing a new one if not previously set""" if self._async_client is None: - self._headers[self.auth_header_name] = f"{self.prefix} {self.token}" if self.prefix else self.token + self._headers[self.auth_header_name] = ( + f"{self.prefix} {self.token}" if self.prefix else self.token + ) self._async_client = httpx.AsyncClient( base_url=self._base_url, cookies=self._cookies, @@ -268,4 +284,3 @@ async def __aenter__(self) -> "AuthenticatedClient": async def __aexit__(self, *args: Any, **kwargs: Any) -> None: """Exit a context manager for underlying httpx.AsyncClient (see httpx docs)""" await self.get_async_httpx_client().__aexit__(*args, **kwargs) - diff --git a/exasol/saas/client/openapi/errors.py b/exasol/saas/client/openapi/errors.py index b912123d..5f92e76a 100644 --- a/exasol/saas/client/openapi/errors.py +++ b/exasol/saas/client/openapi/errors.py @@ -1,4 +1,5 @@ -""" Contains shared errors types that can be raised from API functions """ +"""Contains shared errors types that can be raised from API functions""" + class UnexpectedStatus(Exception): """Raised by api functions when the response status an undocumented status and Client.raise_on_unexpected_status is True""" @@ -11,4 +12,5 @@ def __init__(self, status_code: int, content: bytes): f"Unexpected status code: {status_code}\n\nResponse content:\n{content.decode(errors='ignore')}" ) + __all__ = ["UnexpectedStatus"] diff --git a/exasol/saas/client/openapi/models/__init__.py b/exasol/saas/client/openapi/models/__init__.py index 31f833a2..1f043af4 100644 --- a/exasol/saas/client/openapi/models/__init__.py +++ b/exasol/saas/client/openapi/models/__init__.py @@ -1,4 +1,4 @@ -""" Contains all the data models used in inputs/outputs """ +"""Contains all the data models used in inputs/outputs""" from .allowed_ip import AllowedIP from .api_error import ApiError diff --git a/exasol/saas/client/openapi/models/allowed_ip.py b/exasol/saas/client/openapi/models/allowed_ip.py index 17e22b3e..ce24840c 100644 --- a/exasol/saas/client/openapi/models/allowed_ip.py +++ b/exasol/saas/client/openapi/models/allowed_ip.py @@ -1,39 +1,35 @@ from __future__ import annotations +import datetime from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - -from ..types import UNSET, Unset from dateutil.parser import isoparse -from typing import cast -import datetime - - - - +from ..types import ( + UNSET, + Unset, +) T = TypeVar("T", bound="AllowedIP") - @_attrs_define class AllowedIP: - """ - Attributes: - id (str): - name (str): - cidr_ip (str): - created_at (datetime.datetime): - created_by (str): - deleted_by (str | Unset): - deleted_at (datetime.datetime | Unset): - """ + """ + Attributes: + id (str): + name (str): + cidr_ip (str): + created_at (datetime.datetime): + created_by (str): + deleted_by (str | Unset): + deleted_at (datetime.datetime | Unset): + """ id: str name: str @@ -43,10 +39,6 @@ class AllowedIP: deleted_by: str | Unset = UNSET deleted_at: datetime.datetime | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: id = self.id @@ -64,16 +56,17 @@ def to_dict(self) -> dict[str, Any]: if not isinstance(self.deleted_at, Unset): deleted_at = self.deleted_at.isoformat() - field_dict: dict[str, Any] = {} - field_dict.update({ - "id": id, - "name": name, - "cidrIp": cidr_ip, - "createdAt": created_at, - "createdBy": created_by, - }) + field_dict.update( + { + "id": id, + "name": name, + "cidrIp": cidr_ip, + "createdAt": created_at, + "createdBy": created_by, + } + ) if deleted_by is not UNSET: field_dict["deletedBy"] = deleted_by if deleted_at is not UNSET: @@ -81,8 +74,6 @@ def to_dict(self) -> dict[str, Any]: return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -94,23 +85,17 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: created_at = isoparse(d.pop("createdAt")) - - - created_by = d.pop("createdBy") deleted_by = d.pop("deletedBy", UNSET) _deleted_at = d.pop("deletedAt", UNSET) deleted_at: datetime.datetime | Unset - if isinstance(_deleted_at, Unset): + if isinstance(_deleted_at, Unset): deleted_at = UNSET else: deleted_at = isoparse(_deleted_at) - - - allowed_ip = cls( id=id, name=name, @@ -122,4 +107,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return allowed_ip - diff --git a/exasol/saas/client/openapi/models/api_error.py b/exasol/saas/client/openapi/models/api_error.py index d0e13d8c..9159e046 100644 --- a/exasol/saas/client/openapi/models/api_error.py +++ b/exasol/saas/client/openapi/models/api_error.py @@ -1,38 +1,35 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - -from ..types import UNSET, Unset - - - - +from ..types import ( + UNSET, + Unset, +) T = TypeVar("T", bound="ApiError") - @_attrs_define class ApiError: - """ - Attributes: - status (float): - message (str): - request_id (str): - path (str): - method (str): - log_id (str): - handler (str): - timestamp (str): - causes (Any | Unset): - """ + """ + Attributes: + status (float): + message (str): + request_id (str): + path (str): + method (str): + log_id (str): + handler (str): + timestamp (str): + causes (Any | Unset): + """ status: float message: str @@ -44,10 +41,6 @@ class ApiError: timestamp: str causes: Any | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: status = self.status @@ -67,26 +60,25 @@ def to_dict(self) -> dict[str, Any]: causes = self.causes - field_dict: dict[str, Any] = {} - field_dict.update({ - "status": status, - "message": message, - "requestId": request_id, - "path": path, - "method": method, - "logId": log_id, - "handler": handler, - "timestamp": timestamp, - }) + field_dict.update( + { + "status": status, + "message": message, + "requestId": request_id, + "path": path, + "method": method, + "logId": log_id, + "handler": handler, + "timestamp": timestamp, + } + ) if causes is not UNSET: field_dict["causes"] = causes return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -121,4 +113,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return api_error - diff --git a/exasol/saas/client/openapi/models/auto_stop.py b/exasol/saas/client/openapi/models/auto_stop.py index 4e064f72..8f3b0f86 100644 --- a/exasol/saas/client/openapi/models/auto_stop.py +++ b/exasol/saas/client/openapi/models/auto_stop.py @@ -1,55 +1,43 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="AutoStop") - @_attrs_define class AutoStop: - """ - Attributes: - enabled (bool): - idle_time (int): - """ + """ + Attributes: + enabled (bool): + idle_time (int): + """ enabled: bool idle_time: int - - - - def to_dict(self) -> dict[str, Any]: enabled = self.enabled idle_time = self.idle_time - field_dict: dict[str, Any] = {} - field_dict.update({ - "enabled": enabled, - "idleTime": idle_time, - }) + field_dict.update( + { + "enabled": enabled, + "idleTime": idle_time, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -63,4 +51,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return auto_stop - diff --git a/exasol/saas/client/openapi/models/cluster.py b/exasol/saas/client/openapi/models/cluster.py index 0361d468..f76e56ef 100644 --- a/exasol/saas/client/openapi/models/cluster.py +++ b/exasol/saas/client/openapi/models/cluster.py @@ -1,47 +1,46 @@ from __future__ import annotations +import datetime from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + TYPE_CHECKING, + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset +from dateutil.parser import isoparse from ..models.status import Status -from ..types import UNSET, Unset -from dateutil.parser import isoparse -from typing import cast -import datetime +from ..types import ( + UNSET, + Unset, +) if TYPE_CHECKING: - from ..models.auto_stop import AutoStop - from ..models.cluster_settings import ClusterSettings - - - + from ..models.auto_stop import AutoStop + from ..models.cluster_settings import ClusterSettings T = TypeVar("T", bound="Cluster") - @_attrs_define class Cluster: - """ - Attributes: - status (Status): - id (str): - name (str): - size (str): - created_at (datetime.datetime): - created_by (str): - main_cluster (bool): - settings (ClusterSettings): - deleted_at (datetime.datetime | Unset): - deleted_by (str | Unset): - auto_stop (AutoStop | Unset): - """ + """ + Attributes: + status (Status): + id (str): + name (str): + size (str): + created_at (datetime.datetime): + created_by (str): + main_cluster (bool): + settings (ClusterSettings): + deleted_at (datetime.datetime | Unset): + deleted_by (str | Unset): + auto_stop (AutoStop | Unset): + """ status: Status id: str @@ -55,13 +54,7 @@ class Cluster: deleted_by: str | Unset = UNSET auto_stop: AutoStop | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: - from ..models.auto_stop import AutoStop - from ..models.cluster_settings import ClusterSettings status = self.status.value id = self.id @@ -88,19 +81,20 @@ def to_dict(self) -> dict[str, Any]: if not isinstance(self.auto_stop, Unset): auto_stop = self.auto_stop.to_dict() - field_dict: dict[str, Any] = {} - field_dict.update({ - "status": status, - "id": id, - "name": name, - "size": size, - "createdAt": created_at, - "createdBy": created_by, - "mainCluster": main_cluster, - "settings": settings, - }) + field_dict.update( + { + "status": status, + "id": id, + "name": name, + "size": size, + "createdAt": created_at, + "createdBy": created_by, + "mainCluster": main_cluster, + "settings": settings, + } + ) if deleted_at is not UNSET: field_dict["deletedAt"] = deleted_at if deleted_by is not UNSET: @@ -110,18 +104,14 @@ def to_dict(self) -> dict[str, Any]: return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.auto_stop import AutoStop from ..models.cluster_settings import ClusterSettings + d = dict(src_dict) status = Status(d.pop("status")) - - - id = d.pop("id") name = d.pop("name") @@ -130,40 +120,28 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: created_at = isoparse(d.pop("createdAt")) - - - created_by = d.pop("createdBy") main_cluster = d.pop("mainCluster") settings = ClusterSettings.from_dict(d.pop("settings")) - - - _deleted_at = d.pop("deletedAt", UNSET) deleted_at: datetime.datetime | Unset - if isinstance(_deleted_at, Unset): + if isinstance(_deleted_at, Unset): deleted_at = UNSET else: deleted_at = isoparse(_deleted_at) - - - deleted_by = d.pop("deletedBy", UNSET) _auto_stop = d.pop("autoStop", UNSET) auto_stop: AutoStop | Unset - if isinstance(_auto_stop, Unset): + if isinstance(_auto_stop, Unset): auto_stop = UNSET else: auto_stop = AutoStop.from_dict(_auto_stop) - - - cluster = cls( status=status, id=id, @@ -179,4 +157,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return cluster - diff --git a/exasol/saas/client/openapi/models/cluster_action_scale.py b/exasol/saas/client/openapi/models/cluster_action_scale.py index 03956758..d6d03fd2 100644 --- a/exasol/saas/client/openapi/models/cluster_action_scale.py +++ b/exasol/saas/client/openapi/models/cluster_action_scale.py @@ -1,55 +1,43 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="ClusterActionScale") - @_attrs_define class ClusterActionScale: - """ - Attributes: - cluster_id (str): - size (str): - """ + """ + Attributes: + cluster_id (str): + size (str): + """ cluster_id: str size: str - - - - def to_dict(self) -> dict[str, Any]: cluster_id = self.cluster_id size = self.size - field_dict: dict[str, Any] = {} - field_dict.update({ - "clusterId": cluster_id, - "size": size, - }) + field_dict.update( + { + "clusterId": cluster_id, + "size": size, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -63,4 +51,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return cluster_action_scale - diff --git a/exasol/saas/client/openapi/models/cluster_action_start_stop.py b/exasol/saas/client/openapi/models/cluster_action_start_stop.py index 980ef4cb..a294ad29 100644 --- a/exasol/saas/client/openapi/models/cluster_action_start_stop.py +++ b/exasol/saas/client/openapi/models/cluster_action_start_stop.py @@ -1,50 +1,38 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="ClusterActionStartStop") - @_attrs_define class ClusterActionStartStop: - """ - Attributes: - cluster_id (str): - """ + """ + Attributes: + cluster_id (str): + """ cluster_id: str - - - - def to_dict(self) -> dict[str, Any]: cluster_id = self.cluster_id - field_dict: dict[str, Any] = {} - field_dict.update({ - "clusterId": cluster_id, - }) + field_dict.update( + { + "clusterId": cluster_id, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -55,4 +43,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return cluster_action_start_stop - diff --git a/exasol/saas/client/openapi/models/cluster_connection.py b/exasol/saas/client/openapi/models/cluster_connection.py index c979b57f..8faea8a7 100644 --- a/exasol/saas/client/openapi/models/cluster_connection.py +++ b/exasol/saas/client/openapi/models/cluster_connection.py @@ -1,36 +1,31 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + TYPE_CHECKING, + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - -from typing import cast if TYPE_CHECKING: - from ..models.connection_i_ps import ConnectionIPs - - - + from ..models.connection_i_ps import ConnectionIPs T = TypeVar("T", bound="ClusterConnection") - @_attrs_define class ClusterConnection: - """ - Attributes: - dns (str): - port (int): - jdbc (str): - ips (ConnectionIPs): - db_username (str): - """ + """ + Attributes: + dns (str): + port (int): + jdbc (str): + ips (ConnectionIPs): + db_username (str): + """ dns: str port: int @@ -38,12 +33,7 @@ class ClusterConnection: ips: ConnectionIPs db_username: str - - - - def to_dict(self) -> dict[str, Any]: - from ..models.connection_i_ps import ConnectionIPs dns = self.dns port = self.port @@ -54,24 +44,24 @@ def to_dict(self) -> dict[str, Any]: db_username = self.db_username - field_dict: dict[str, Any] = {} - field_dict.update({ - "dns": dns, - "port": port, - "jdbc": jdbc, - "ips": ips, - "dbUsername": db_username, - }) + field_dict.update( + { + "dns": dns, + "port": port, + "jdbc": jdbc, + "ips": ips, + "dbUsername": db_username, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.connection_i_ps import ConnectionIPs + d = dict(src_dict) dns = d.pop("dns") @@ -81,9 +71,6 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ips = ConnectionIPs.from_dict(d.pop("ips")) - - - db_username = d.pop("dbUsername") cluster_connection = cls( @@ -95,4 +82,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return cluster_connection - diff --git a/exasol/saas/client/openapi/models/cluster_settings.py b/exasol/saas/client/openapi/models/cluster_settings.py index e2be7b0e..ab08ee79 100644 --- a/exasol/saas/client/openapi/models/cluster_settings.py +++ b/exasol/saas/client/openapi/models/cluster_settings.py @@ -1,55 +1,43 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="ClusterSettings") - @_attrs_define class ClusterSettings: - """ - Attributes: - offload_enabled (bool): - offload_timeout_min (int): - """ + """ + Attributes: + offload_enabled (bool): + offload_timeout_min (int): + """ offload_enabled: bool offload_timeout_min: int - - - - def to_dict(self) -> dict[str, Any]: offload_enabled = self.offload_enabled offload_timeout_min = self.offload_timeout_min - field_dict: dict[str, Any] = {} - field_dict.update({ - "offloadEnabled": offload_enabled, - "offloadTimeoutMin": offload_timeout_min, - }) + field_dict.update( + { + "offloadEnabled": offload_enabled, + "offloadTimeoutMin": offload_timeout_min, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -63,4 +51,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return cluster_settings - diff --git a/exasol/saas/client/openapi/models/cluster_settings_update.py b/exasol/saas/client/openapi/models/cluster_settings_update.py index efd95e26..aaff4994 100644 --- a/exasol/saas/client/openapi/models/cluster_settings_update.py +++ b/exasol/saas/client/openapi/models/cluster_settings_update.py @@ -1,49 +1,40 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - -from ..types import UNSET, Unset - - - - +from ..types import ( + UNSET, + Unset, +) T = TypeVar("T", bound="ClusterSettingsUpdate") - @_attrs_define class ClusterSettingsUpdate: - """ - Attributes: - offload_enabled (bool | Unset): - offload_timeout_min (int | Unset): - """ + """ + Attributes: + offload_enabled (bool | Unset): + offload_timeout_min (int | Unset): + """ offload_enabled: bool | Unset = UNSET offload_timeout_min: int | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: offload_enabled = self.offload_enabled offload_timeout_min = self.offload_timeout_min - field_dict: dict[str, Any] = {} - field_dict.update({ - }) + field_dict.update({}) if offload_enabled is not UNSET: field_dict["offloadEnabled"] = offload_enabled if offload_timeout_min is not UNSET: @@ -51,8 +42,6 @@ def to_dict(self) -> dict[str, Any]: return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -66,4 +55,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return cluster_settings_update - diff --git a/exasol/saas/client/openapi/models/cluster_size_1.py b/exasol/saas/client/openapi/models/cluster_size_1.py index 885b3b74..65023f06 100644 --- a/exasol/saas/client/openapi/models/cluster_size_1.py +++ b/exasol/saas/client/openapi/models/cluster_size_1.py @@ -1,36 +1,33 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - -from ..types import UNSET, Unset - - - - +from ..types import ( + UNSET, + Unset, +) T = TypeVar("T", bound="ClusterSize1") - @_attrs_define class ClusterSize1: - """ - Attributes: - size (str): - price (float): - vcpu (float): - ram (float): - is_default (bool): - name (str): - family (str | Unset): - """ + """ + Attributes: + size (str): + price (float): + vcpu (float): + ram (float): + is_default (bool): + name (str): + family (str | Unset): + """ size: str price: float @@ -40,10 +37,6 @@ class ClusterSize1: name: str family: str | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: size = self.size @@ -59,24 +52,23 @@ def to_dict(self) -> dict[str, Any]: family = self.family - field_dict: dict[str, Any] = {} - field_dict.update({ - "size": size, - "price": price, - "vcpu": vcpu, - "ram": ram, - "isDefault": is_default, - "name": name, - }) + field_dict.update( + { + "size": size, + "price": price, + "vcpu": vcpu, + "ram": ram, + "isDefault": is_default, + "name": name, + } + ) if family is not UNSET: field_dict["family"] = family return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -105,4 +97,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return cluster_size_1 - diff --git a/exasol/saas/client/openapi/models/connection_i_ps.py b/exasol/saas/client/openapi/models/connection_i_ps.py index 2080be94..d3816b1b 100644 --- a/exasol/saas/client/openapi/models/connection_i_ps.py +++ b/exasol/saas/client/openapi/models/connection_i_ps.py @@ -1,73 +1,54 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, + cast, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - -from typing import cast - - - - - T = TypeVar("T", bound="ConnectionIPs") - @_attrs_define class ConnectionIPs: - """ - Attributes: - private (list[str]): - public (list[str]): - """ + """ + Attributes: + private (list[str]): + public (list[str]): + """ private: list[str] public: list[str] - - - - def to_dict(self) -> dict[str, Any]: private = self.private - - public = self.public - - - field_dict: dict[str, Any] = {} - field_dict.update({ - "private": private, - "public": public, - }) + field_dict.update( + { + "private": private, + "public": public, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) private = cast(list[str], d.pop("private")) - public = cast(list[str], d.pop("public")) - connection_i_ps = cls( private=private, public=public, ) return connection_i_ps - diff --git a/exasol/saas/client/openapi/models/create_allowed_ip.py b/exasol/saas/client/openapi/models/create_allowed_ip.py index 536f173f..74bf2b0e 100644 --- a/exasol/saas/client/openapi/models/create_allowed_ip.py +++ b/exasol/saas/client/openapi/models/create_allowed_ip.py @@ -1,55 +1,43 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="CreateAllowedIP") - @_attrs_define class CreateAllowedIP: - """ - Attributes: - name (str): - cidr_ip (str): - """ + """ + Attributes: + name (str): + cidr_ip (str): + """ name: str cidr_ip: str - - - - def to_dict(self) -> dict[str, Any]: name = self.name cidr_ip = self.cidr_ip - field_dict: dict[str, Any] = {} - field_dict.update({ - "name": name, - "cidrIp": cidr_ip, - }) + field_dict.update( + { + "name": name, + "cidrIp": cidr_ip, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -63,4 +51,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return create_allowed_ip - diff --git a/exasol/saas/client/openapi/models/create_cluster.py b/exasol/saas/client/openapi/models/create_cluster.py index 6ce03062..70b7b7f3 100644 --- a/exasol/saas/client/openapi/models/create_cluster.py +++ b/exasol/saas/client/openapi/models/create_cluster.py @@ -1,38 +1,37 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + TYPE_CHECKING, + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field -from ..types import UNSET, Unset - -from ..types import UNSET, Unset -from typing import cast +from ..types import ( + UNSET, + Unset, +) if TYPE_CHECKING: - from ..models.auto_stop import AutoStop - from ..models.cluster_settings_update import ClusterSettingsUpdate - - - + from ..models.auto_stop import AutoStop + from ..models.cluster_settings_update import ClusterSettingsUpdate T = TypeVar("T", bound="CreateCluster") - @_attrs_define class CreateCluster: - """ - Attributes: - name (str): - size (str): - family (str | Unset): - auto_stop (AutoStop | Unset): - settings (ClusterSettingsUpdate | Unset): - """ + """ + Attributes: + name (str): + size (str): + family (str | Unset): + auto_stop (AutoStop | Unset): + settings (ClusterSettingsUpdate | Unset): + """ name: str size: str @@ -40,13 +39,7 @@ class CreateCluster: auto_stop: AutoStop | Unset = UNSET settings: ClusterSettingsUpdate | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: - from ..models.auto_stop import AutoStop - from ..models.cluster_settings_update import ClusterSettingsUpdate name = self.name size = self.size @@ -61,13 +54,14 @@ def to_dict(self) -> dict[str, Any]: if not isinstance(self.settings, Unset): settings = self.settings.to_dict() - field_dict: dict[str, Any] = {} - field_dict.update({ - "name": name, - "size": size, - }) + field_dict.update( + { + "name": name, + "size": size, + } + ) if family is not UNSET: field_dict["family"] = family if auto_stop is not UNSET: @@ -77,12 +71,11 @@ def to_dict(self) -> dict[str, Any]: return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.auto_stop import AutoStop from ..models.cluster_settings_update import ClusterSettingsUpdate + d = dict(src_dict) name = d.pop("name") @@ -92,24 +85,18 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: _auto_stop = d.pop("autoStop", UNSET) auto_stop: AutoStop | Unset - if isinstance(_auto_stop, Unset): + if isinstance(_auto_stop, Unset): auto_stop = UNSET else: auto_stop = AutoStop.from_dict(_auto_stop) - - - _settings = d.pop("settings", UNSET) settings: ClusterSettingsUpdate | Unset - if isinstance(_settings, Unset): + if isinstance(_settings, Unset): settings = UNSET else: settings = ClusterSettingsUpdate.from_dict(_settings) - - - create_cluster = cls( name=name, size=size, @@ -119,4 +106,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return create_cluster - diff --git a/exasol/saas/client/openapi/models/create_database.py b/exasol/saas/client/openapi/models/create_database.py index e30b83c9..1986cd3e 100644 --- a/exasol/saas/client/openapi/models/create_database.py +++ b/exasol/saas/client/openapi/models/create_database.py @@ -1,38 +1,38 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + TYPE_CHECKING, + Any, + TypeVar, +) from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import UNSET, Unset - -from ..types import UNSET, Unset -from typing import cast +from ..types import ( + UNSET, + Unset, +) if TYPE_CHECKING: - from ..models.create_database_initial_cluster import CreateDatabaseInitialCluster - - - + from ..models.create_database_initial_cluster import CreateDatabaseInitialCluster T = TypeVar("T", bound="CreateDatabase") - @_attrs_define class CreateDatabase: - """ - Attributes: - name (str): - initial_cluster (CreateDatabaseInitialCluster): - provider (str): - region (str): - num_nodes (int | Unset): - stream_type (str | Unset): - """ + """ + Attributes: + name (str): + initial_cluster (CreateDatabaseInitialCluster): + provider (str): + region (str): + num_nodes (int | Unset): + stream_type (str | Unset): + """ name: str initial_cluster: CreateDatabaseInitialCluster @@ -42,12 +42,7 @@ class CreateDatabase: stream_type: str | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) - - - - def to_dict(self) -> dict[str, Any]: - from ..models.create_database_initial_cluster import CreateDatabaseInitialCluster name = self.name initial_cluster = self.initial_cluster.to_dict() @@ -60,15 +55,16 @@ def to_dict(self) -> dict[str, Any]: stream_type = self.stream_type - field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) - field_dict.update({ - "name": name, - "initialCluster": initial_cluster, - "provider": provider, - "region": region, - }) + field_dict.update( + { + "name": name, + "initialCluster": initial_cluster, + "provider": provider, + "region": region, + } + ) if num_nodes is not UNSET: field_dict["numNodes"] = num_nodes if stream_type is not UNSET: @@ -76,18 +72,18 @@ def to_dict(self) -> dict[str, Any]: return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: - from ..models.create_database_initial_cluster import CreateDatabaseInitialCluster + from ..models.create_database_initial_cluster import ( + CreateDatabaseInitialCluster, + ) + d = dict(src_dict) name = d.pop("name") - initial_cluster = CreateDatabaseInitialCluster.from_dict(d.pop("initialCluster")) - - - + initial_cluster = CreateDatabaseInitialCluster.from_dict( + d.pop("initialCluster") + ) provider = d.pop("provider") @@ -106,7 +102,6 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: stream_type=stream_type, ) - create_database.additional_properties = d return create_database diff --git a/exasol/saas/client/openapi/models/create_database_initial_cluster.py b/exasol/saas/client/openapi/models/create_database_initial_cluster.py index 693952d4..adb4102b 100644 --- a/exasol/saas/client/openapi/models/create_database_initial_cluster.py +++ b/exasol/saas/client/openapi/models/create_database_initial_cluster.py @@ -1,38 +1,37 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + TYPE_CHECKING, + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field -from ..types import UNSET, Unset - -from ..types import UNSET, Unset -from typing import cast +from ..types import ( + UNSET, + Unset, +) if TYPE_CHECKING: - from ..models.auto_stop import AutoStop - from ..models.cluster_settings_update import ClusterSettingsUpdate - - - + from ..models.auto_stop import AutoStop + from ..models.cluster_settings_update import ClusterSettingsUpdate T = TypeVar("T", bound="CreateDatabaseInitialCluster") - @_attrs_define class CreateDatabaseInitialCluster: - """ - Attributes: - name (str): - size (str): - family (str | Unset): - auto_stop (AutoStop | Unset): - settings (ClusterSettingsUpdate | Unset): - """ + """ + Attributes: + name (str): + size (str): + family (str | Unset): + auto_stop (AutoStop | Unset): + settings (ClusterSettingsUpdate | Unset): + """ name: str size: str @@ -40,13 +39,7 @@ class CreateDatabaseInitialCluster: auto_stop: AutoStop | Unset = UNSET settings: ClusterSettingsUpdate | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: - from ..models.auto_stop import AutoStop - from ..models.cluster_settings_update import ClusterSettingsUpdate name = self.name size = self.size @@ -61,13 +54,14 @@ def to_dict(self) -> dict[str, Any]: if not isinstance(self.settings, Unset): settings = self.settings.to_dict() - field_dict: dict[str, Any] = {} - field_dict.update({ - "name": name, - "size": size, - }) + field_dict.update( + { + "name": name, + "size": size, + } + ) if family is not UNSET: field_dict["family"] = family if auto_stop is not UNSET: @@ -77,12 +71,11 @@ def to_dict(self) -> dict[str, Any]: return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.auto_stop import AutoStop from ..models.cluster_settings_update import ClusterSettingsUpdate + d = dict(src_dict) name = d.pop("name") @@ -92,24 +85,18 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: _auto_stop = d.pop("autoStop", UNSET) auto_stop: AutoStop | Unset - if isinstance(_auto_stop, Unset): + if isinstance(_auto_stop, Unset): auto_stop = UNSET else: auto_stop = AutoStop.from_dict(_auto_stop) - - - _settings = d.pop("settings", UNSET) settings: ClusterSettingsUpdate | Unset - if isinstance(_settings, Unset): + if isinstance(_settings, Unset): settings = UNSET else: settings = ClusterSettingsUpdate.from_dict(_settings) - - - create_database_initial_cluster = cls( name=name, size=size, @@ -119,4 +106,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return create_database_initial_cluster - diff --git a/exasol/saas/client/openapi/models/create_extension_instance.py b/exasol/saas/client/openapi/models/create_extension_instance.py index dd719644..2f14e67c 100644 --- a/exasol/saas/client/openapi/models/create_extension_instance.py +++ b/exasol/saas/client/openapi/models/create_extension_instance.py @@ -1,76 +1,62 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + TYPE_CHECKING, + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - -from typing import cast if TYPE_CHECKING: - from ..models.extension_parameter_value import ExtensionParameterValue - - - + from ..models.extension_parameter_value import ExtensionParameterValue T = TypeVar("T", bound="CreateExtensionInstance") - @_attrs_define class CreateExtensionInstance: - """ - Attributes: - parameter_values (list[ExtensionParameterValue]): - """ + """ + Attributes: + parameter_values (list[ExtensionParameterValue]): + """ parameter_values: list[ExtensionParameterValue] - - - - def to_dict(self) -> dict[str, Any]: - from ..models.extension_parameter_value import ExtensionParameterValue parameter_values = [] for parameter_values_item_data in self.parameter_values: parameter_values_item = parameter_values_item_data.to_dict() parameter_values.append(parameter_values_item) - - - field_dict: dict[str, Any] = {} - field_dict.update({ - "parameterValues": parameter_values, - }) + field_dict.update( + { + "parameterValues": parameter_values, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.extension_parameter_value import ExtensionParameterValue + d = dict(src_dict) parameter_values = [] _parameter_values = d.pop("parameterValues") - for parameter_values_item_data in (_parameter_values): - parameter_values_item = ExtensionParameterValue.from_dict(parameter_values_item_data) - - + for parameter_values_item_data in _parameter_values: + parameter_values_item = ExtensionParameterValue.from_dict( + parameter_values_item_data + ) parameter_values.append(parameter_values_item) - create_extension_instance = cls( parameter_values=parameter_values, ) return create_extension_instance - diff --git a/exasol/saas/client/openapi/models/database_settings.py b/exasol/saas/client/openapi/models/database_settings.py index 21500a59..e3800745 100644 --- a/exasol/saas/client/openapi/models/database_settings.py +++ b/exasol/saas/client/openapi/models/database_settings.py @@ -1,34 +1,27 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="DatabaseSettings") - @_attrs_define class DatabaseSettings: - """ - Attributes: - offload_enabled (bool): - auto_updates_enabled (bool): - auto_updates_hard_disabled (bool): - num_nodes (int): - stream_type (str): - stream_description (str): - """ + """ + Attributes: + offload_enabled (bool): + auto_updates_enabled (bool): + auto_updates_hard_disabled (bool): + num_nodes (int): + stream_type (str): + stream_description (str): + """ offload_enabled: bool auto_updates_enabled: bool @@ -37,10 +30,6 @@ class DatabaseSettings: stream_type: str stream_description: str - - - - def to_dict(self) -> dict[str, Any]: offload_enabled = self.offload_enabled @@ -54,22 +43,21 @@ def to_dict(self) -> dict[str, Any]: stream_description = self.stream_description - field_dict: dict[str, Any] = {} - field_dict.update({ - "offloadEnabled": offload_enabled, - "autoUpdatesEnabled": auto_updates_enabled, - "autoUpdatesHardDisabled": auto_updates_hard_disabled, - "numNodes": num_nodes, - "streamType": stream_type, - "streamDescription": stream_description, - }) + field_dict.update( + { + "offloadEnabled": offload_enabled, + "autoUpdatesEnabled": auto_updates_enabled, + "autoUpdatesHardDisabled": auto_updates_hard_disabled, + "numNodes": num_nodes, + "streamType": stream_type, + "streamDescription": stream_description, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -95,4 +83,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return database_settings - diff --git a/exasol/saas/client/openapi/models/database_upgrade_info.py b/exasol/saas/client/openapi/models/database_upgrade_info.py index 79b9eedd..2d5908b7 100644 --- a/exasol/saas/client/openapi/models/database_upgrade_info.py +++ b/exasol/saas/client/openapi/models/database_upgrade_info.py @@ -1,41 +1,31 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import UNSET, Unset - - - - - - - T = TypeVar("T", bound="DatabaseUpgradeInfo") - @_attrs_define class DatabaseUpgradeInfo: - """ - Attributes: - current_version (str): - update_version (str): - update_possible (bool): - """ + """ + Attributes: + current_version (str): + update_version (str): + update_possible (bool): + """ current_version: str update_version: str update_possible: bool additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) - - - - def to_dict(self) -> dict[str, Any]: current_version = self.current_version @@ -43,19 +33,18 @@ def to_dict(self) -> dict[str, Any]: update_possible = self.update_possible - field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) - field_dict.update({ - "currentVersion": current_version, - "updateVersion": update_version, - "updatePossible": update_possible, - }) + field_dict.update( + { + "currentVersion": current_version, + "updateVersion": update_version, + "updatePossible": update_possible, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -71,7 +60,6 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: update_possible=update_possible, ) - database_upgrade_info.additional_properties = d return database_upgrade_info diff --git a/exasol/saas/client/openapi/models/dlhc_activate_status.py b/exasol/saas/client/openapi/models/dlhc_activate_status.py index 9795e1b1..4c8a210a 100644 --- a/exasol/saas/client/openapi/models/dlhc_activate_status.py +++ b/exasol/saas/client/openapi/models/dlhc_activate_status.py @@ -1,56 +1,45 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import UNSET, Unset - - - - - - - T = TypeVar("T", bound="DlhcActivateStatus") - @_attrs_define class DlhcActivateStatus: - """ - Attributes: - status (str): - created_at (str): - """ + """ + Attributes: + status (str): + created_at (str): + """ status: str created_at: str additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) - - - - def to_dict(self) -> dict[str, Any]: status = self.status created_at = self.created_at - field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) - field_dict.update({ - "status": status, - "created_at": created_at, - }) + field_dict.update( + { + "status": status, + "created_at": created_at, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -63,7 +52,6 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: created_at=created_at, ) - dlhc_activate_status.additional_properties = d return dlhc_activate_status diff --git a/exasol/saas/client/openapi/models/download_file.py b/exasol/saas/client/openapi/models/download_file.py index b9514ed2..bd8e5922 100644 --- a/exasol/saas/client/openapi/models/download_file.py +++ b/exasol/saas/client/openapi/models/download_file.py @@ -1,50 +1,38 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="DownloadFile") - @_attrs_define class DownloadFile: - """ - Attributes: - url (str): - """ + """ + Attributes: + url (str): + """ url: str - - - - def to_dict(self) -> dict[str, Any]: url = self.url - field_dict: dict[str, Any] = {} - field_dict.update({ - "url": url, - }) + field_dict.update( + { + "url": url, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -55,4 +43,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return download_file - diff --git a/exasol/saas/client/openapi/models/exasol_database.py b/exasol/saas/client/openapi/models/exasol_database.py index 47e03d5c..cfbe2e6b 100644 --- a/exasol/saas/client/openapi/models/exasol_database.py +++ b/exasol/saas/client/openapi/models/exasol_database.py @@ -1,47 +1,49 @@ from __future__ import annotations +import datetime from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + TYPE_CHECKING, + Any, + TypeVar, +) from attrs import define as _attrs_define from attrs import field as _attrs_field - -from ..types import UNSET, Unset +from dateutil.parser import isoparse from ..models.status import Status -from ..types import UNSET, Unset -from dateutil.parser import isoparse -from typing import cast -import datetime +from ..types import ( + UNSET, + Unset, +) if TYPE_CHECKING: - from ..models.exasol_database_clusters import ExasolDatabaseClusters - from ..models.exasol_database_integrations_item import ExasolDatabaseIntegrationsItem - - - + from ..models.exasol_database_clusters import ExasolDatabaseClusters + from ..models.exasol_database_integrations_item import ( + ExasolDatabaseIntegrationsItem, + ) T = TypeVar("T", bound="ExasolDatabase") - @_attrs_define class ExasolDatabase: - """ - Attributes: - status (Status): - id (str): - name (str): - clusters (ExasolDatabaseClusters): - provider (str): - region (str): - created_at (datetime.datetime): - created_by (str): - integrations (list[ExasolDatabaseIntegrationsItem] | Unset): - deleted_by (str | Unset): - deleted_at (datetime.datetime | Unset): - """ + """ + Attributes: + status (Status): + id (str): + name (str): + clusters (ExasolDatabaseClusters): + provider (str): + region (str): + created_at (datetime.datetime): + created_by (str): + integrations (list[ExasolDatabaseIntegrationsItem] | Unset): + deleted_by (str | Unset): + deleted_at (datetime.datetime | Unset): + """ status: Status id: str @@ -56,13 +58,7 @@ class ExasolDatabase: deleted_at: datetime.datetime | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) - - - - def to_dict(self) -> dict[str, Any]: - from ..models.exasol_database_integrations_item import ExasolDatabaseIntegrationsItem - from ..models.exasol_database_clusters import ExasolDatabaseClusters status = self.status.value id = self.id @@ -86,27 +82,26 @@ def to_dict(self) -> dict[str, Any]: integrations_item = integrations_item_data.to_dict() integrations.append(integrations_item) - - deleted_by = self.deleted_by deleted_at: str | Unset = UNSET if not isinstance(self.deleted_at, Unset): deleted_at = self.deleted_at.isoformat() - field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) - field_dict.update({ - "status": status, - "id": id, - "name": name, - "clusters": clusters, - "provider": provider, - "region": region, - "createdAt": created_at, - "createdBy": created_by, - }) + field_dict.update( + { + "status": status, + "id": id, + "name": name, + "clusters": clusters, + "provider": provider, + "region": region, + "createdAt": created_at, + "createdBy": created_by, + } + ) if integrations is not UNSET: field_dict["integrations"] = integrations if deleted_by is not UNSET: @@ -116,36 +111,28 @@ def to_dict(self) -> dict[str, Any]: return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.exasol_database_clusters import ExasolDatabaseClusters - from ..models.exasol_database_integrations_item import ExasolDatabaseIntegrationsItem + from ..models.exasol_database_integrations_item import ( + ExasolDatabaseIntegrationsItem, + ) + d = dict(src_dict) status = Status(d.pop("status")) - - - id = d.pop("id") name = d.pop("name") clusters = ExasolDatabaseClusters.from_dict(d.pop("clusters")) - - - provider = d.pop("provider") region = d.pop("region") created_at = isoparse(d.pop("createdAt")) - - - created_by = d.pop("createdBy") _integrations = d.pop("integrations", UNSET) @@ -153,25 +140,21 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: if _integrations is not UNSET: integrations = [] for integrations_item_data in _integrations: - integrations_item = ExasolDatabaseIntegrationsItem.from_dict(integrations_item_data) - - + integrations_item = ExasolDatabaseIntegrationsItem.from_dict( + integrations_item_data + ) integrations.append(integrations_item) - deleted_by = d.pop("deletedBy", UNSET) _deleted_at = d.pop("deletedAt", UNSET) deleted_at: datetime.datetime | Unset - if isinstance(_deleted_at, Unset): + if isinstance(_deleted_at, Unset): deleted_at = UNSET else: deleted_at = isoparse(_deleted_at) - - - exasol_database = cls( status=status, id=id, @@ -186,7 +169,6 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: deleted_at=deleted_at, ) - exasol_database.additional_properties = d return exasol_database diff --git a/exasol/saas/client/openapi/models/exasol_database_clusters.py b/exasol/saas/client/openapi/models/exasol_database_clusters.py index addd7e61..387607c2 100644 --- a/exasol/saas/client/openapi/models/exasol_database_clusters.py +++ b/exasol/saas/client/openapi/models/exasol_database_clusters.py @@ -1,55 +1,43 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="ExasolDatabaseClusters") - @_attrs_define class ExasolDatabaseClusters: - """ - Attributes: - total (int): - running (int): - """ + """ + Attributes: + total (int): + running (int): + """ total: int running: int - - - - def to_dict(self) -> dict[str, Any]: total = self.total running = self.running - field_dict: dict[str, Any] = {} - field_dict.update({ - "total": total, - "running": running, - }) + field_dict.update( + { + "total": total, + "running": running, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -63,4 +51,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return exasol_database_clusters - diff --git a/exasol/saas/client/openapi/models/exasol_database_integrations_item.py b/exasol/saas/client/openapi/models/exasol_database_integrations_item.py index c614526e..41bddfd9 100644 --- a/exasol/saas/client/openapi/models/exasol_database_integrations_item.py +++ b/exasol/saas/client/openapi/models/exasol_database_integrations_item.py @@ -1,42 +1,36 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import UNSET, Unset - -from ..types import UNSET, Unset - - - - - +from ..types import ( + UNSET, + Unset, +) T = TypeVar("T", bound="ExasolDatabaseIntegrationsItem") - @_attrs_define class ExasolDatabaseIntegrationsItem: - """ - Attributes: - id (str): - name (str): - url (str | Unset): - """ + """ + Attributes: + id (str): + name (str): + url (str | Unset): + """ id: str name: str url: str | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) - - - - def to_dict(self) -> dict[str, Any]: id = self.id @@ -44,20 +38,19 @@ def to_dict(self) -> dict[str, Any]: url = self.url - field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) - field_dict.update({ - "id": id, - "name": name, - }) + field_dict.update( + { + "id": id, + "name": name, + } + ) if url is not UNSET: field_dict["url"] = url return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -73,7 +66,6 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: url=url, ) - exasol_database_integrations_item.additional_properties = d return exasol_database_integrations_item diff --git a/exasol/saas/client/openapi/models/extension.py b/exasol/saas/client/openapi/models/extension.py index cd1fb3ee..ab47e546 100644 --- a/exasol/saas/client/openapi/models/extension.py +++ b/exasol/saas/client/openapi/models/extension.py @@ -1,36 +1,31 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + TYPE_CHECKING, + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - -from typing import cast if TYPE_CHECKING: - from ..models.extension_version import ExtensionVersion - - - + from ..models.extension_version import ExtensionVersion T = TypeVar("T", bound="Extension") - @_attrs_define class Extension: - """ - Attributes: - id (str): - name (str): - description (str): - category_id (str): - installable_versions (list[ExtensionVersion]): - """ + """ + Attributes: + id (str): + name (str): + description (str): + category_id (str): + installable_versions (list[ExtensionVersion]): + """ id: str name: str @@ -38,12 +33,7 @@ class Extension: category_id: str installable_versions: list[ExtensionVersion] - - - - def to_dict(self) -> dict[str, Any]: - from ..models.extension_version import ExtensionVersion id = self.id name = self.name @@ -57,26 +47,24 @@ def to_dict(self) -> dict[str, Any]: installable_versions_item = installable_versions_item_data.to_dict() installable_versions.append(installable_versions_item) - - - field_dict: dict[str, Any] = {} - field_dict.update({ - "id": id, - "name": name, - "description": description, - "categoryId": category_id, - "installableVersions": installable_versions, - }) + field_dict.update( + { + "id": id, + "name": name, + "description": description, + "categoryId": category_id, + "installableVersions": installable_versions, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.extension_version import ExtensionVersion + d = dict(src_dict) id = d.pop("id") @@ -88,14 +76,13 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: installable_versions = [] _installable_versions = d.pop("installableVersions") - for installable_versions_item_data in (_installable_versions): - installable_versions_item = ExtensionVersion.from_dict(installable_versions_item_data) - - + for installable_versions_item_data in _installable_versions: + installable_versions_item = ExtensionVersion.from_dict( + installable_versions_item_data + ) installable_versions.append(installable_versions_item) - extension = cls( id=id, name=name, @@ -105,4 +92,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return extension - diff --git a/exasol/saas/client/openapi/models/extension_detail.py b/exasol/saas/client/openapi/models/extension_detail.py index cf584f42..ecce152f 100644 --- a/exasol/saas/client/openapi/models/extension_detail.py +++ b/exasol/saas/client/openapi/models/extension_detail.py @@ -1,45 +1,35 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + TYPE_CHECKING, + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - -from typing import cast if TYPE_CHECKING: - from ..models.extension_parameter_definitions import ExtensionParameterDefinitions - - - + from ..models.extension_parameter_definitions import ExtensionParameterDefinitions T = TypeVar("T", bound="ExtensionDetail") - @_attrs_define class ExtensionDetail: - """ - Attributes: - id (str): - version (str): - parameter_definitions (list[ExtensionParameterDefinitions]): - """ + """ + Attributes: + id (str): + version (str): + parameter_definitions (list[ExtensionParameterDefinitions]): + """ id: str version: str parameter_definitions: list[ExtensionParameterDefinitions] - - - - def to_dict(self) -> dict[str, Any]: - from ..models.extension_parameter_definitions import ExtensionParameterDefinitions id = self.id version = self.version @@ -49,24 +39,24 @@ def to_dict(self) -> dict[str, Any]: parameter_definitions_item = parameter_definitions_item_data.to_dict() parameter_definitions.append(parameter_definitions_item) - - - field_dict: dict[str, Any] = {} - field_dict.update({ - "id": id, - "version": version, - "parameterDefinitions": parameter_definitions, - }) + field_dict.update( + { + "id": id, + "version": version, + "parameterDefinitions": parameter_definitions, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: - from ..models.extension_parameter_definitions import ExtensionParameterDefinitions + from ..models.extension_parameter_definitions import ( + ExtensionParameterDefinitions, + ) + d = dict(src_dict) id = d.pop("id") @@ -74,14 +64,13 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: parameter_definitions = [] _parameter_definitions = d.pop("parameterDefinitions") - for parameter_definitions_item_data in (_parameter_definitions): - parameter_definitions_item = ExtensionParameterDefinitions.from_dict(parameter_definitions_item_data) - - + for parameter_definitions_item_data in _parameter_definitions: + parameter_definitions_item = ExtensionParameterDefinitions.from_dict( + parameter_definitions_item_data + ) parameter_definitions.append(parameter_definitions_item) - extension_detail = cls( id=id, version=version, @@ -89,4 +78,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return extension_detail - diff --git a/exasol/saas/client/openapi/models/extension_instance.py b/exasol/saas/client/openapi/models/extension_instance.py index c83d44df..5214bfd7 100644 --- a/exasol/saas/client/openapi/models/extension_instance.py +++ b/exasol/saas/client/openapi/models/extension_instance.py @@ -1,55 +1,43 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="ExtensionInstance") - @_attrs_define class ExtensionInstance: - """ - Attributes: - id (str): - name (str): - """ + """ + Attributes: + id (str): + name (str): + """ id: str name: str - - - - def to_dict(self) -> dict[str, Any]: id = self.id name = self.name - field_dict: dict[str, Any] = {} - field_dict.update({ - "id": id, - "name": name, - }) + field_dict.update( + { + "id": id, + "name": name, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -63,4 +51,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return extension_instance - diff --git a/exasol/saas/client/openapi/models/extension_parameter_definitions.py b/exasol/saas/client/openapi/models/extension_parameter_definitions.py index 4142a3b5..54acbd79 100644 --- a/exasol/saas/client/openapi/models/extension_parameter_definitions.py +++ b/exasol/saas/client/openapi/models/extension_parameter_definitions.py @@ -1,41 +1,34 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - -from ..types import UNSET, Unset - - - - +from ..types import ( + UNSET, + Unset, +) T = TypeVar("T", bound="ExtensionParameterDefinitions") - @_attrs_define class ExtensionParameterDefinitions: - """ - Attributes: - id (str): - name (str): - raw_definition (Any | Unset): - """ + """ + Attributes: + id (str): + name (str): + raw_definition (Any | Unset): + """ id: str name: str raw_definition: Any | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: id = self.id @@ -43,20 +36,19 @@ def to_dict(self) -> dict[str, Any]: raw_definition = self.raw_definition - field_dict: dict[str, Any] = {} - field_dict.update({ - "id": id, - "name": name, - }) + field_dict.update( + { + "id": id, + "name": name, + } + ) if raw_definition is not UNSET: field_dict["rawDefinition"] = raw_definition return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -73,4 +65,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return extension_parameter_definitions - diff --git a/exasol/saas/client/openapi/models/extension_parameter_value.py b/exasol/saas/client/openapi/models/extension_parameter_value.py index 49be83bb..673b9935 100644 --- a/exasol/saas/client/openapi/models/extension_parameter_value.py +++ b/exasol/saas/client/openapi/models/extension_parameter_value.py @@ -1,55 +1,43 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="ExtensionParameterValue") - @_attrs_define class ExtensionParameterValue: - """ - Attributes: - id (str): - value (str): - """ + """ + Attributes: + id (str): + value (str): + """ id: str value: str - - - - def to_dict(self) -> dict[str, Any]: id = self.id value = self.value - field_dict: dict[str, Any] = {} - field_dict.update({ - "id": id, - "value": value, - }) + field_dict.update( + { + "id": id, + "value": value, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -63,4 +51,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return extension_parameter_value - diff --git a/exasol/saas/client/openapi/models/extension_version.py b/exasol/saas/client/openapi/models/extension_version.py index b92d5871..4a03a551 100644 --- a/exasol/saas/client/openapi/models/extension_version.py +++ b/exasol/saas/client/openapi/models/extension_version.py @@ -1,42 +1,31 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="ExtensionVersion") - @_attrs_define class ExtensionVersion: - """ - Attributes: - version (str): - latest (bool): - deprecated (bool): - installed (bool): - """ + """ + Attributes: + version (str): + latest (bool): + deprecated (bool): + installed (bool): + """ version: str latest: bool deprecated: bool installed: bool - - - - def to_dict(self) -> dict[str, Any]: version = self.version @@ -46,20 +35,19 @@ def to_dict(self) -> dict[str, Any]: installed = self.installed - field_dict: dict[str, Any] = {} - field_dict.update({ - "version": version, - "latest": latest, - "deprecated": deprecated, - "installed": installed, - }) + field_dict.update( + { + "version": version, + "latest": latest, + "deprecated": deprecated, + "installed": installed, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -79,4 +67,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return extension_version - diff --git a/exasol/saas/client/openapi/models/file.py b/exasol/saas/client/openapi/models/file.py index c7a09ddc..74d4e00a 100644 --- a/exasol/saas/client/openapi/models/file.py +++ b/exasol/saas/client/openapi/models/file.py @@ -1,38 +1,34 @@ from __future__ import annotations +import datetime from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - -from ..types import UNSET, Unset from dateutil.parser import isoparse -from typing import cast -import datetime - - - - +from ..types import ( + UNSET, + Unset, +) T = TypeVar("T", bound="File") - @_attrs_define class File: - """ - Attributes: - name (str): - type_ (str): - path (str): - last_modified (datetime.datetime): - size (int | Unset): - children (list[File] | Unset): - """ + """ + Attributes: + name (str): + type_ (str): + path (str): + last_modified (datetime.datetime): + size (int | Unset): + children (list[File] | Unset): + """ name: str type_: str @@ -41,10 +37,6 @@ class File: size: int | Unset = UNSET children: list[File] | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: name = self.name @@ -63,17 +55,16 @@ def to_dict(self) -> dict[str, Any]: children_item = children_item_data.to_dict() children.append(children_item) - - - field_dict: dict[str, Any] = {} - field_dict.update({ - "name": name, - "type": type_, - "path": path, - "lastModified": last_modified, - }) + field_dict.update( + { + "name": name, + "type": type_, + "path": path, + "lastModified": last_modified, + } + ) if size is not UNSET: field_dict["size"] = size if children is not UNSET: @@ -81,8 +72,6 @@ def to_dict(self) -> dict[str, Any]: return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -94,9 +83,6 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: last_modified = isoparse(d.pop("lastModified")) - - - size = d.pop("size", UNSET) _children = d.pop("children", UNSET) @@ -106,11 +92,8 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: for children_item_data in _children: children_item = File.from_dict(children_item_data) - - children.append(children_item) - file = cls( name=name, type_=type_, @@ -121,4 +104,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return file - diff --git a/exasol/saas/client/openapi/models/get_usage_type.py b/exasol/saas/client/openapi/models/get_usage_type.py index 1d924bac..723f200f 100644 --- a/exasol/saas/client/openapi/models/get_usage_type.py +++ b/exasol/saas/client/openapi/models/get_usage_type.py @@ -1,5 +1,6 @@ from enum import Enum + class GetUsageType(str, Enum): CSV = "csv" JSON = "json" diff --git a/exasol/saas/client/openapi/models/patch_user.py b/exasol/saas/client/openapi/models/patch_user.py index f0d261b2..ee2088ba 100644 --- a/exasol/saas/client/openapi/models/patch_user.py +++ b/exasol/saas/client/openapi/models/patch_user.py @@ -1,46 +1,40 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + TYPE_CHECKING, + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field -from ..types import UNSET, Unset - -from ..types import UNSET, Unset -from typing import cast +from ..types import ( + UNSET, + Unset, +) if TYPE_CHECKING: - from ..models.patch_user_databases import PatchUserDatabases - - - + from ..models.patch_user_databases import PatchUserDatabases T = TypeVar("T", bound="PatchUser") - @_attrs_define class PatchUser: - """ - Attributes: - role_id (str | Unset): - databases (PatchUserDatabases | Unset): - db_username (str | Unset): - """ + """ + Attributes: + role_id (str | Unset): + databases (PatchUserDatabases | Unset): + db_username (str | Unset): + """ role_id: str | Unset = UNSET databases: PatchUserDatabases | Unset = UNSET db_username: str | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: - from ..models.patch_user_databases import PatchUserDatabases role_id = self.role_id databases: dict[str, Any] | Unset = UNSET @@ -49,11 +43,9 @@ def to_dict(self) -> dict[str, Any]: db_username = self.db_username - field_dict: dict[str, Any] = {} - field_dict.update({ - }) + field_dict.update({}) if role_id is not UNSET: field_dict["roleID"] = role_id if databases is not UNSET: @@ -63,24 +55,20 @@ def to_dict(self) -> dict[str, Any]: return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.patch_user_databases import PatchUserDatabases + d = dict(src_dict) role_id = d.pop("roleID", UNSET) _databases = d.pop("databases", UNSET) databases: PatchUserDatabases | Unset - if isinstance(_databases, Unset): + if isinstance(_databases, Unset): databases = UNSET else: databases = PatchUserDatabases.from_dict(_databases) - - - db_username = d.pop("dbUsername", UNSET) patch_user = cls( @@ -90,4 +78,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return patch_user - diff --git a/exasol/saas/client/openapi/models/patch_user_databases.py b/exasol/saas/client/openapi/models/patch_user_databases.py index 8b6c2598..da82263b 100644 --- a/exasol/saas/client/openapi/models/patch_user_databases.py +++ b/exasol/saas/client/openapi/models/patch_user_databases.py @@ -1,73 +1,54 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, + cast, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - -from typing import cast - - - - - T = TypeVar("T", bound="PatchUserDatabases") - @_attrs_define class PatchUserDatabases: - """ - Attributes: - delete (list[str]): - add (list[str]): - """ + """ + Attributes: + delete (list[str]): + add (list[str]): + """ delete: list[str] add: list[str] - - - - def to_dict(self) -> dict[str, Any]: delete = self.delete - - add = self.add - - - field_dict: dict[str, Any] = {} - field_dict.update({ - "delete": delete, - "add": add, - }) + field_dict.update( + { + "delete": delete, + "add": add, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) delete = cast(list[str], d.pop("delete")) - add = cast(list[str], d.pop("add")) - patch_user_databases = cls( delete=delete, add=add, ) return patch_user_databases - diff --git a/exasol/saas/client/openapi/models/platform.py b/exasol/saas/client/openapi/models/platform.py index e0c61489..71b93a94 100644 --- a/exasol/saas/client/openapi/models/platform.py +++ b/exasol/saas/client/openapi/models/platform.py @@ -1,55 +1,43 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="Platform") - @_attrs_define class Platform: - """ - Attributes: - id (str): - name (str): - """ + """ + Attributes: + id (str): + name (str): + """ id: str name: str - - - - def to_dict(self) -> dict[str, Any]: id = self.id name = self.name - field_dict: dict[str, Any] = {} - field_dict.update({ - "id": id, - "name": name, - }) + field_dict.update( + { + "id": id, + "name": name, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -63,4 +51,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return platform - diff --git a/exasol/saas/client/openapi/models/region.py b/exasol/saas/client/openapi/models/region.py index 91013d1a..5ac2d887 100644 --- a/exasol/saas/client/openapi/models/region.py +++ b/exasol/saas/client/openapi/models/region.py @@ -1,42 +1,31 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="Region") - @_attrs_define class Region: - """ - Attributes: - id (str): - name (str): - price_multiplier (float): - storage_price (float): - """ + """ + Attributes: + id (str): + name (str): + price_multiplier (float): + storage_price (float): + """ id: str name: str price_multiplier: float storage_price: float - - - - def to_dict(self) -> dict[str, Any]: id = self.id @@ -46,20 +35,19 @@ def to_dict(self) -> dict[str, Any]: storage_price = self.storage_price - field_dict: dict[str, Any] = {} - field_dict.update({ - "id": id, - "name": name, - "priceMultiplier": price_multiplier, - "storagePrice": storage_price, - }) + field_dict.update( + { + "id": id, + "name": name, + "priceMultiplier": price_multiplier, + "storagePrice": storage_price, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -79,4 +67,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return region - diff --git a/exasol/saas/client/openapi/models/scale_cluster.py b/exasol/saas/client/openapi/models/scale_cluster.py index 825e477f..3b48e914 100644 --- a/exasol/saas/client/openapi/models/scale_cluster.py +++ b/exasol/saas/client/openapi/models/scale_cluster.py @@ -1,57 +1,49 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - -from ..types import UNSET, Unset - - - - +from ..types import ( + UNSET, + Unset, +) T = TypeVar("T", bound="ScaleCluster") - @_attrs_define class ScaleCluster: - """ - Attributes: - size (str): - family (str | Unset): - """ + """ + Attributes: + size (str): + family (str | Unset): + """ size: str family: str | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: size = self.size family = self.family - field_dict: dict[str, Any] = {} - field_dict.update({ - "size": size, - }) + field_dict.update( + { + "size": size, + } + ) if family is not UNSET: field_dict["family"] = family return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -65,4 +57,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return scale_cluster - diff --git a/exasol/saas/client/openapi/models/schedule.py b/exasol/saas/client/openapi/models/schedule.py index 60ec00be..189ce3cc 100644 --- a/exasol/saas/client/openapi/models/schedule.py +++ b/exasol/saas/client/openapi/models/schedule.py @@ -1,44 +1,43 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + TYPE_CHECKING, + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset from ..models.schedule_action_type_0 import ScheduleActionType0 from ..models.schedule_state import ScheduleState -from ..types import UNSET, Unset -from typing import cast +from ..types import ( + UNSET, + Unset, +) if TYPE_CHECKING: - from ..models.cluster_action_scale import ClusterActionScale - from ..models.cluster_action_start_stop import ClusterActionStartStop - - - + from ..models.cluster_action_scale import ClusterActionScale + from ..models.cluster_action_start_stop import ClusterActionStartStop T = TypeVar("T", bound="Schedule") - @_attrs_define class Schedule: - """ - Attributes: - action (ScheduleActionType0): - cron_rule (str): cron rule in format: - id (str | Unset): - createdby_id (str | Unset): - createdby_first_name (str | Unset): - createdby_last_name (str | Unset): - cluster_name (str | Unset): - payload (ClusterActionScale | ClusterActionStartStop | Unset): - state (ScheduleState | Unset): - """ + """ + Attributes: + action (ScheduleActionType0): + cron_rule (str): cron rule in format: + id (str | Unset): + createdby_id (str | Unset): + createdby_first_name (str | Unset): + createdby_last_name (str | Unset): + cluster_name (str | Unset): + payload (ClusterActionScale | ClusterActionStartStop | Unset): + state (ScheduleState | Unset): + """ action: ScheduleActionType0 cron_rule: str @@ -50,18 +49,13 @@ class Schedule: payload: ClusterActionScale | ClusterActionStartStop | Unset = UNSET state: ScheduleState | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: - from ..models.cluster_action_start_stop import ClusterActionStartStop from ..models.cluster_action_scale import ClusterActionScale + action: str if isinstance(self.action, ScheduleActionType0): action = self.action.value - cron_rule = self.cron_rule id = self.id @@ -82,19 +76,18 @@ def to_dict(self) -> dict[str, Any]: else: payload = self.payload.to_dict() - state: str | Unset = UNSET if not isinstance(self.state, Unset): state = self.state.value - - field_dict: dict[str, Any] = {} - field_dict.update({ - "action": action, - "cronRule": cron_rule, - }) + field_dict.update( + { + "action": action, + "cronRule": cron_rule, + } + ) if id is not UNSET: field_dict["id"] = id if createdby_id is not UNSET: @@ -112,25 +105,22 @@ def to_dict(self) -> dict[str, Any]: return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.cluster_action_scale import ClusterActionScale from ..models.cluster_action_start_stop import ClusterActionStartStop + d = dict(src_dict) + def _parse_action(data: object) -> ScheduleActionType0: if not isinstance(data, str): raise TypeError() action_type_0 = ScheduleActionType0(data) - - return action_type_0 action = _parse_action(d.pop("action")) - cron_rule = d.pop("cronRule") id = d.pop("id", UNSET) @@ -143,7 +133,9 @@ def _parse_action(data: object) -> ScheduleActionType0: cluster_name = d.pop("clusterName", UNSET) - def _parse_payload(data: object) -> ClusterActionScale | ClusterActionStartStop | Unset: + def _parse_payload( + data: object, + ) -> ClusterActionScale | ClusterActionStartStop | Unset: if isinstance(data, Unset): return data try: @@ -151,8 +143,6 @@ def _parse_payload(data: object) -> ClusterActionScale | ClusterActionStartStop raise TypeError() payload_type_0 = ClusterActionScale.from_dict(data) - - return payload_type_0 except (TypeError, ValueError, AttributeError, KeyError): pass @@ -160,23 +150,17 @@ def _parse_payload(data: object) -> ClusterActionScale | ClusterActionStartStop raise TypeError() payload_type_1 = ClusterActionStartStop.from_dict(data) - - return payload_type_1 payload = _parse_payload(d.pop("payload", UNSET)) - _state = d.pop("state", UNSET) state: ScheduleState | Unset - if isinstance(_state, Unset): + if isinstance(_state, Unset): state = UNSET else: state = ScheduleState(_state) - - - schedule = cls( action=action, cron_rule=cron_rule, @@ -190,4 +174,3 @@ def _parse_payload(data: object) -> ClusterActionScale | ClusterActionStartStop ) return schedule - diff --git a/exasol/saas/client/openapi/models/schedule_action_type_0.py b/exasol/saas/client/openapi/models/schedule_action_type_0.py index 72341a8f..a6bfe28c 100644 --- a/exasol/saas/client/openapi/models/schedule_action_type_0.py +++ b/exasol/saas/client/openapi/models/schedule_action_type_0.py @@ -1,5 +1,6 @@ from enum import Enum + class ScheduleActionType0(str, Enum): ACTIONCLUSTERSCALE = "ActionClusterScale" ACTIONCLUSTERSTART = "ActionClusterStart" diff --git a/exasol/saas/client/openapi/models/schedule_state.py b/exasol/saas/client/openapi/models/schedule_state.py index a2556e46..0d2bb2ea 100644 --- a/exasol/saas/client/openapi/models/schedule_state.py +++ b/exasol/saas/client/openapi/models/schedule_state.py @@ -1,5 +1,6 @@ from enum import Enum + class ScheduleState(str, Enum): DISABLED = "DISABLED" ENABLED = "ENABLED" diff --git a/exasol/saas/client/openapi/models/set_auto_updates_database.py b/exasol/saas/client/openapi/models/set_auto_updates_database.py index 7f8bfa7d..87946a5c 100644 --- a/exasol/saas/client/openapi/models/set_auto_updates_database.py +++ b/exasol/saas/client/openapi/models/set_auto_updates_database.py @@ -1,50 +1,38 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="SetAutoUpdatesDatabase") - @_attrs_define class SetAutoUpdatesDatabase: - """ - Attributes: - auto_updates_enabled (bool): - """ + """ + Attributes: + auto_updates_enabled (bool): + """ auto_updates_enabled: bool - - - - def to_dict(self) -> dict[str, Any]: auto_updates_enabled = self.auto_updates_enabled - field_dict: dict[str, Any] = {} - field_dict.update({ - "autoUpdatesEnabled": auto_updates_enabled, - }) + field_dict.update( + { + "autoUpdatesEnabled": auto_updates_enabled, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -55,4 +43,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return set_auto_updates_database - diff --git a/exasol/saas/client/openapi/models/status.py b/exasol/saas/client/openapi/models/status.py index 4fe66f85..31e94e83 100644 --- a/exasol/saas/client/openapi/models/status.py +++ b/exasol/saas/client/openapi/models/status.py @@ -1,5 +1,6 @@ from enum import Enum + class Status(str, Enum): CREATING = "creating" DELETED = "deleted" diff --git a/exasol/saas/client/openapi/models/update_allowed_ip.py b/exasol/saas/client/openapi/models/update_allowed_ip.py index 29d0b51d..3344fd75 100644 --- a/exasol/saas/client/openapi/models/update_allowed_ip.py +++ b/exasol/saas/client/openapi/models/update_allowed_ip.py @@ -1,55 +1,43 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="UpdateAllowedIP") - @_attrs_define class UpdateAllowedIP: - """ - Attributes: - name (str): - cidr_ip (str): - """ + """ + Attributes: + name (str): + cidr_ip (str): + """ name: str cidr_ip: str - - - - def to_dict(self) -> dict[str, Any]: name = self.name cidr_ip = self.cidr_ip - field_dict: dict[str, Any] = {} - field_dict.update({ - "name": name, - "cidrIp": cidr_ip, - }) + field_dict.update( + { + "name": name, + "cidrIp": cidr_ip, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -63,4 +51,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return update_allowed_ip - diff --git a/exasol/saas/client/openapi/models/update_cluster.py b/exasol/saas/client/openapi/models/update_cluster.py index 7e737f2a..9fa9aef7 100644 --- a/exasol/saas/client/openapi/models/update_cluster.py +++ b/exasol/saas/client/openapi/models/update_cluster.py @@ -1,48 +1,41 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + TYPE_CHECKING, + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field -from ..types import UNSET, Unset - -from ..types import UNSET, Unset -from typing import cast +from ..types import ( + UNSET, + Unset, +) if TYPE_CHECKING: - from ..models.auto_stop import AutoStop - from ..models.cluster_settings_update import ClusterSettingsUpdate - - - + from ..models.auto_stop import AutoStop + from ..models.cluster_settings_update import ClusterSettingsUpdate T = TypeVar("T", bound="UpdateCluster") - @_attrs_define class UpdateCluster: - """ - Attributes: - name (str | Unset): - auto_stop (AutoStop | Unset): - settings (ClusterSettingsUpdate | Unset): - """ + """ + Attributes: + name (str | Unset): + auto_stop (AutoStop | Unset): + settings (ClusterSettingsUpdate | Unset): + """ name: str | Unset = UNSET auto_stop: AutoStop | Unset = UNSET settings: ClusterSettingsUpdate | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: - from ..models.auto_stop import AutoStop - from ..models.cluster_settings_update import ClusterSettingsUpdate name = self.name auto_stop: dict[str, Any] | Unset = UNSET @@ -53,11 +46,9 @@ def to_dict(self) -> dict[str, Any]: if not isinstance(self.settings, Unset): settings = self.settings.to_dict() - field_dict: dict[str, Any] = {} - field_dict.update({ - }) + field_dict.update({}) if name is not UNSET: field_dict["name"] = name if auto_stop is not UNSET: @@ -67,35 +58,28 @@ def to_dict(self) -> dict[str, Any]: return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.auto_stop import AutoStop from ..models.cluster_settings_update import ClusterSettingsUpdate + d = dict(src_dict) name = d.pop("name", UNSET) _auto_stop = d.pop("autoStop", UNSET) auto_stop: AutoStop | Unset - if isinstance(_auto_stop, Unset): + if isinstance(_auto_stop, Unset): auto_stop = UNSET else: auto_stop = AutoStop.from_dict(_auto_stop) - - - _settings = d.pop("settings", UNSET) settings: ClusterSettingsUpdate | Unset - if isinstance(_settings, Unset): + if isinstance(_settings, Unset): settings = UNSET else: settings = ClusterSettingsUpdate.from_dict(_settings) - - - update_cluster = cls( name=name, auto_stop=auto_stop, @@ -103,4 +87,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return update_cluster - diff --git a/exasol/saas/client/openapi/models/update_database.py b/exasol/saas/client/openapi/models/update_database.py index 15adaf7d..4b814993 100644 --- a/exasol/saas/client/openapi/models/update_database.py +++ b/exasol/saas/client/openapi/models/update_database.py @@ -1,51 +1,40 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import UNSET, Unset - - - - - - - T = TypeVar("T", bound="UpdateDatabase") - @_attrs_define class UpdateDatabase: - """ - Attributes: - name (str): - """ + """ + Attributes: + name (str): + """ name: str additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) - - - - def to_dict(self) -> dict[str, Any]: name = self.name - field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) - field_dict.update({ - "name": name, - }) + field_dict.update( + { + "name": name, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -55,7 +44,6 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: name=name, ) - update_database.additional_properties = d return update_database diff --git a/exasol/saas/client/openapi/models/update_profile.py b/exasol/saas/client/openapi/models/update_profile.py index b5dfed6e..c5589a1e 100644 --- a/exasol/saas/client/openapi/models/update_profile.py +++ b/exasol/saas/client/openapi/models/update_profile.py @@ -1,55 +1,43 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="UpdateProfile") - @_attrs_define class UpdateProfile: - """ - Attributes: - first_name (str): - last_name (str): - """ + """ + Attributes: + first_name (str): + last_name (str): + """ first_name: str last_name: str - - - - def to_dict(self) -> dict[str, Any]: first_name = self.first_name last_name = self.last_name - field_dict: dict[str, Any] = {} - field_dict.update({ - "firstName": first_name, - "lastName": last_name, - }) + field_dict.update( + { + "firstName": first_name, + "lastName": last_name, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -63,4 +51,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return update_profile - diff --git a/exasol/saas/client/openapi/models/update_schedule_cron_rule.py b/exasol/saas/client/openapi/models/update_schedule_cron_rule.py index 88e34725..39c359fc 100644 --- a/exasol/saas/client/openapi/models/update_schedule_cron_rule.py +++ b/exasol/saas/client/openapi/models/update_schedule_cron_rule.py @@ -1,50 +1,38 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="UpdateScheduleCronRule") - @_attrs_define class UpdateScheduleCronRule: - """ - Attributes: - cron_rule (str): cron rule in format: - """ + """ + Attributes: + cron_rule (str): cron rule in format: + """ cron_rule: str - - - - def to_dict(self) -> dict[str, Any]: cron_rule = self.cron_rule - field_dict: dict[str, Any] = {} - field_dict.update({ - "cronRule": cron_rule, - }) + field_dict.update( + { + "cronRule": cron_rule, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -55,4 +43,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return update_schedule_cron_rule - diff --git a/exasol/saas/client/openapi/models/update_schedule_state.py b/exasol/saas/client/openapi/models/update_schedule_state.py index 7b269f18..a17272fa 100644 --- a/exasol/saas/client/openapi/models/update_schedule_state.py +++ b/exasol/saas/client/openapi/models/update_schedule_state.py @@ -1,62 +1,47 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset from ..models.schedule_state import ScheduleState - - - - - T = TypeVar("T", bound="UpdateScheduleState") - @_attrs_define class UpdateScheduleState: - """ - Attributes: - state (ScheduleState): - """ + """ + Attributes: + state (ScheduleState): + """ state: ScheduleState - - - - def to_dict(self) -> dict[str, Any]: state = self.state.value - field_dict: dict[str, Any] = {} - field_dict.update({ - "state": state, - }) + field_dict.update( + { + "state": state, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) state = ScheduleState(d.pop("state")) - - - update_schedule_state = cls( state=state, ) return update_schedule_state - diff --git a/exasol/saas/client/openapi/models/upload_file.py b/exasol/saas/client/openapi/models/upload_file.py index 4960745e..f051bc5f 100644 --- a/exasol/saas/client/openapi/models/upload_file.py +++ b/exasol/saas/client/openapi/models/upload_file.py @@ -1,50 +1,38 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="UploadFile") - @_attrs_define class UploadFile: - """ - Attributes: - url (str): - """ + """ + Attributes: + url (str): + """ url: str - - - - def to_dict(self) -> dict[str, Any]: url = self.url - field_dict: dict[str, Any] = {} - field_dict.update({ - "url": url, - }) + field_dict.update( + { + "url": url, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -55,4 +43,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return upload_file - diff --git a/exasol/saas/client/openapi/models/usage.py b/exasol/saas/client/openapi/models/usage.py index 35a24479..b277aba9 100644 --- a/exasol/saas/client/openapi/models/usage.py +++ b/exasol/saas/client/openapi/models/usage.py @@ -1,40 +1,32 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + TYPE_CHECKING, + Any, + TypeVar, +) from attrs import define as _attrs_define from attrs import field as _attrs_field -from ..types import UNSET, Unset - -from typing import cast - if TYPE_CHECKING: - from ..models.usage_additional_property_item import UsageAdditionalPropertyItem - - - + from ..models.usage_additional_property_item import UsageAdditionalPropertyItem T = TypeVar("T", bound="Usage") - @_attrs_define class Usage: - """ - """ - - additional_properties: dict[str, list[UsageAdditionalPropertyItem]] = _attrs_field(init=False, factory=dict) - - - + """ """ + additional_properties: dict[str, list[UsageAdditionalPropertyItem]] = _attrs_field( + init=False, factory=dict + ) def to_dict(self) -> dict[str, Any]: - from ..models.usage_additional_property_item import UsageAdditionalPropertyItem - + field_dict: dict[str, Any] = {} for prop_name, prop in self.additional_properties.items(): field_dict[prop_name] = [] @@ -42,29 +34,23 @@ def to_dict(self) -> dict[str, Any]: additional_property_item = additional_property_item_data.to_dict() field_dict[prop_name].append(additional_property_item) - - - return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.usage_additional_property_item import UsageAdditionalPropertyItem - d = dict(src_dict) - usage = cls( - ) + d = dict(src_dict) + usage = cls() additional_properties = {} for prop_name, prop_dict in d.items(): additional_property = [] _additional_property = prop_dict - for additional_property_item_data in (_additional_property): - additional_property_item = UsageAdditionalPropertyItem.from_dict(additional_property_item_data) - - + for additional_property_item_data in _additional_property: + additional_property_item = UsageAdditionalPropertyItem.from_dict( + additional_property_item_data + ) additional_property.append(additional_property_item) diff --git a/exasol/saas/client/openapi/models/usage_additional_property_item.py b/exasol/saas/client/openapi/models/usage_additional_property_item.py index b4f8c9db..17d88ee6 100644 --- a/exasol/saas/client/openapi/models/usage_additional_property_item.py +++ b/exasol/saas/client/openapi/models/usage_additional_property_item.py @@ -1,48 +1,42 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + TYPE_CHECKING, + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field -from ..types import UNSET, Unset - -from ..types import UNSET, Unset -from typing import cast +from ..types import ( + UNSET, + Unset, +) if TYPE_CHECKING: - from ..models.usage_cluster import UsageCluster - - - + from ..models.usage_cluster import UsageCluster T = TypeVar("T", bound="UsageAdditionalPropertyItem") - @_attrs_define class UsageAdditionalPropertyItem: - """ - Attributes: - id (str): - name (str): - clusters (list[UsageCluster]): - used_storage (float | Unset): - """ + """ + Attributes: + id (str): + name (str): + clusters (list[UsageCluster]): + used_storage (float | Unset): + """ id: str name: str clusters: list[UsageCluster] used_storage: float | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: - from ..models.usage_cluster import UsageCluster id = self.id name = self.name @@ -52,28 +46,26 @@ def to_dict(self) -> dict[str, Any]: clusters_item = clusters_item_data.to_dict() clusters.append(clusters_item) - - used_storage = self.used_storage - field_dict: dict[str, Any] = {} - field_dict.update({ - "id": id, - "name": name, - "clusters": clusters, - }) + field_dict.update( + { + "id": id, + "name": name, + "clusters": clusters, + } + ) if used_storage is not UNSET: field_dict["usedStorage"] = used_storage return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.usage_cluster import UsageCluster + d = dict(src_dict) id = d.pop("id") @@ -81,14 +73,11 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: clusters = [] _clusters = d.pop("clusters") - for clusters_item_data in (_clusters): + for clusters_item_data in _clusters: clusters_item = UsageCluster.from_dict(clusters_item_data) - - clusters.append(clusters_item) - used_storage = d.pop("usedStorage", UNSET) usage_additional_property_item = cls( @@ -99,4 +88,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return usage_additional_property_item - diff --git a/exasol/saas/client/openapi/models/usage_cluster.py b/exasol/saas/client/openapi/models/usage_cluster.py index dd8b8909..c6eecb1a 100644 --- a/exasol/saas/client/openapi/models/usage_cluster.py +++ b/exasol/saas/client/openapi/models/usage_cluster.py @@ -1,36 +1,33 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - -from ..types import UNSET, Unset - - - - +from ..types import ( + UNSET, + Unset, +) T = TypeVar("T", bound="UsageCluster") - @_attrs_define class UsageCluster: - """ - Attributes: - id (str): - size (str): - name (str): - compute (float | Unset): - out_same_region (float | Unset): - out_different_region (float | Unset): - out_internet (float | Unset): - """ + """ + Attributes: + id (str): + size (str): + name (str): + compute (float | Unset): + out_same_region (float | Unset): + out_different_region (float | Unset): + out_internet (float | Unset): + """ id: str size: str @@ -40,10 +37,6 @@ class UsageCluster: out_different_region: float | Unset = UNSET out_internet: float | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: id = self.id @@ -59,14 +52,15 @@ def to_dict(self) -> dict[str, Any]: out_internet = self.out_internet - field_dict: dict[str, Any] = {} - field_dict.update({ - "id": id, - "size": size, - "name": name, - }) + field_dict.update( + { + "id": id, + "size": size, + "name": name, + } + ) if compute is not UNSET: field_dict["compute"] = compute if out_same_region is not UNSET: @@ -78,8 +72,6 @@ def to_dict(self) -> dict[str, Any]: return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -108,4 +100,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return usage_cluster - diff --git a/exasol/saas/client/openapi/models/user.py b/exasol/saas/client/openapi/models/user.py index 7657cf20..6adbeaec 100644 --- a/exasol/saas/client/openapi/models/user.py +++ b/exasol/saas/client/openapi/models/user.py @@ -1,47 +1,46 @@ from __future__ import annotations +import datetime from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + TYPE_CHECKING, + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset +from dateutil.parser import isoparse from ..models.user_status import UserStatus -from ..types import UNSET, Unset -from dateutil.parser import isoparse -from typing import cast -import datetime +from ..types import ( + UNSET, + Unset, +) if TYPE_CHECKING: - from ..models.user_database import UserDatabase - from ..models.user_role import UserRole - - - + from ..models.user_database import UserDatabase + from ..models.user_role import UserRole T = TypeVar("T", bound="User") - @_attrs_define class User: - """ - Attributes: - email (str): - id (str): - created_at (datetime.datetime): - created_by (str): - status (UserStatus): - roles (list[UserRole]): - is_deletable (bool): - first_name (str | Unset): - last_name (str | Unset): - databases (list[UserDatabase] | Unset): - db_username (str | Unset): - """ + """ + Attributes: + email (str): + id (str): + created_at (datetime.datetime): + created_by (str): + status (UserStatus): + roles (list[UserRole]): + is_deletable (bool): + first_name (str | Unset): + last_name (str | Unset): + databases (list[UserDatabase] | Unset): + db_username (str | Unset): + """ email: str id: str @@ -55,13 +54,7 @@ class User: databases: list[UserDatabase] | Unset = UNSET db_username: str | Unset = UNSET - - - - def to_dict(self) -> dict[str, Any]: - from ..models.user_database import UserDatabase - from ..models.user_role import UserRole email = self.email id = self.id @@ -77,8 +70,6 @@ def to_dict(self) -> dict[str, Any]: roles_item = roles_item_data.to_dict() roles.append(roles_item) - - is_deletable = self.is_deletable first_name = self.first_name @@ -92,22 +83,21 @@ def to_dict(self) -> dict[str, Any]: databases_item = databases_item_data.to_dict() databases.append(databases_item) - - db_username = self.db_username - field_dict: dict[str, Any] = {} - field_dict.update({ - "email": email, - "id": id, - "createdAt": created_at, - "createdBy": created_by, - "status": status, - "roles": roles, - "isDeletable": is_deletable, - }) + field_dict.update( + { + "email": email, + "id": id, + "createdAt": created_at, + "createdBy": created_by, + "status": status, + "roles": roles, + "isDeletable": is_deletable, + } + ) if first_name is not UNSET: field_dict["firstName"] = first_name if last_name is not UNSET: @@ -119,12 +109,11 @@ def to_dict(self) -> dict[str, Any]: return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.user_database import UserDatabase from ..models.user_role import UserRole + d = dict(src_dict) email = d.pop("email") @@ -132,26 +121,17 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: created_at = isoparse(d.pop("createdAt")) - - - created_by = d.pop("createdBy") status = UserStatus(d.pop("status")) - - - roles = [] _roles = d.pop("roles") - for roles_item_data in (_roles): + for roles_item_data in _roles: roles_item = UserRole.from_dict(roles_item_data) - - roles.append(roles_item) - is_deletable = d.pop("isDeletable") first_name = d.pop("firstName", UNSET) @@ -165,11 +145,8 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: for databases_item_data in _databases: databases_item = UserDatabase.from_dict(databases_item_data) - - databases.append(databases_item) - db_username = d.pop("dbUsername", UNSET) user = cls( @@ -187,4 +164,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return user - diff --git a/exasol/saas/client/openapi/models/user_database.py b/exasol/saas/client/openapi/models/user_database.py index 87502719..847d8224 100644 --- a/exasol/saas/client/openapi/models/user_database.py +++ b/exasol/saas/client/openapi/models/user_database.py @@ -1,55 +1,43 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="UserDatabase") - @_attrs_define class UserDatabase: - """ - Attributes: - id (str): - name (str): - """ + """ + Attributes: + id (str): + name (str): + """ id: str name: str - - - - def to_dict(self) -> dict[str, Any]: id = self.id name = self.name - field_dict: dict[str, Any] = {} - field_dict.update({ - "id": id, - "name": name, - }) + field_dict.update( + { + "id": id, + "name": name, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -63,4 +51,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return user_database - diff --git a/exasol/saas/client/openapi/models/user_role.py b/exasol/saas/client/openapi/models/user_role.py index bc823990..d385252b 100644 --- a/exasol/saas/client/openapi/models/user_role.py +++ b/exasol/saas/client/openapi/models/user_role.py @@ -1,55 +1,43 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator +from typing import ( + Any, + TypeVar, +) from attrs import define as _attrs_define -from attrs import field as _attrs_field - -from ..types import UNSET, Unset - - - - - - T = TypeVar("T", bound="UserRole") - @_attrs_define class UserRole: - """ - Attributes: - id (str): - name (str): - """ + """ + Attributes: + id (str): + name (str): + """ id: str name: str - - - - def to_dict(self) -> dict[str, Any]: id = self.id name = self.name - field_dict: dict[str, Any] = {} - field_dict.update({ - "id": id, - "name": name, - }) + field_dict.update( + { + "id": id, + "name": name, + } + ) return field_dict - - @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) @@ -63,4 +51,3 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: ) return user_role - diff --git a/exasol/saas/client/openapi/models/user_status.py b/exasol/saas/client/openapi/models/user_status.py index 3524eb55..e685862f 100644 --- a/exasol/saas/client/openapi/models/user_status.py +++ b/exasol/saas/client/openapi/models/user_status.py @@ -1,5 +1,6 @@ from enum import Enum + class UserStatus(str, Enum): ACTIVE = "active" DEACTIVATED = "deactivated" diff --git a/exasol/saas/client/openapi/types.py b/exasol/saas/client/openapi/types.py index f74db0ad..c9f792b5 100644 --- a/exasol/saas/client/openapi/types.py +++ b/exasol/saas/client/openapi/types.py @@ -1,8 +1,17 @@ -""" Contains some shared types for properties """ +"""Contains some shared types for properties""" -from collections.abc import Mapping, MutableMapping +from collections.abc import ( + Mapping, + MutableMapping, +) from http import HTTPStatus -from typing import BinaryIO, Generic, TypeVar, Literal, IO +from typing import ( + IO, + BinaryIO, + Generic, + Literal, + TypeVar, +) from attrs import define @@ -24,16 +33,17 @@ def __bool__(self) -> Literal[False]: ) RequestFiles = list[tuple[str, FileTypes]] + @define class File: - """ Contains information for file uploads """ + """Contains information for file uploads""" payload: BinaryIO file_name: str | None = None mime_type: str | None = None def to_tuple(self) -> FileTypes: - """ Return a tuple representation that httpx will accept for multipart/form-data """ + """Return a tuple representation that httpx will accept for multipart/form-data""" return self.file_name, self.payload, self.mime_type @@ -42,7 +52,7 @@ def to_tuple(self) -> FileTypes: @define class Response(Generic[T]): - """ A response from an endpoint """ + """A response from an endpoint""" status_code: HTTPStatus content: bytes diff --git a/noxconfig.py b/noxconfig.py index 2b235a26..99c65a73 100644 --- a/noxconfig.py +++ b/noxconfig.py @@ -8,5 +8,4 @@ python_versions=("3.10", "3.11", "3.12", "3.13"), exasol_versions=("7.1.30",), # "exasol/saas/client/openapi/**" - add_to_excluded_python_paths=("openapi",), ) From 06cfb73defc85b4d703f42c27cbfd96c0db01d6e Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 08:58:52 +0100 Subject: [PATCH 09/47] Added missing import --- test/integration/databases_test.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/integration/databases_test.py b/test/integration/databases_test.py index 78fd9a1c..1c158700 100644 --- a/test/integration/databases_test.py +++ b/test/integration/databases_test.py @@ -3,6 +3,7 @@ timedelta, ) +import pytest from tenacity import RetryError from exasol.saas.client import PROMISING_STATES From 26e881d46702c61f2e48bda927955d064fcfc1dc Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 09:51:24 +0100 Subject: [PATCH 10/47] updated changelog --- doc/changes/unreleased.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/changes/unreleased.md b/doc/changes/unreleased.md index 5c1dbf41..cfb34ec2 100644 --- a/doc/changes/unreleased.md +++ b/doc/changes/unreleased.md @@ -2,8 +2,14 @@ ## Summary -This release fixes vulnerabilities by updating dependencies and updates openapi-python-client as this was blocked by a pending release of the Exasol SaaS REST API. +This release fixes vulnerabilities by updating dependencies and updates `openapi-python-client`. + +## Security + +* #140: Fixed vulnerabilities by updating dependencies ## Refactorings * #120: Updated openapi-python-client to version 0.26 or higher + * Re-generated the SaaS API client code +* #141: Updated PTB to version 5 and regenerated GitHub workflows From 3b29d6648cad9f2798b31fcba6ef1e7c54a006a8 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 10:12:33 +0100 Subject: [PATCH 11/47] increased timeout in tests --- noxconfig.py | 3 ++- pyproject.toml | 4 +--- test/integration/databases_test.py | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/noxconfig.py b/noxconfig.py index 99c65a73..ee60f5d2 100644 --- a/noxconfig.py +++ b/noxconfig.py @@ -6,6 +6,7 @@ root_path=Path(__file__).parent, project_name="saas", python_versions=("3.10", "3.11", "3.12", "3.13"), + # Actually SAPIPY itests don't use any (on-prem) database version, see + # https://github.com/exasol/python-toolbox/issues/682. exasol_versions=("7.1.30",), - # "exasol/saas/client/openapi/**" ) diff --git a/pyproject.toml b/pyproject.toml index cd574427..1a964653 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,9 +48,7 @@ build-backend = "poetry.core.masonry.api" pytest = "^7.1.1" pytest-mock = "^3.7.0" exasol-toolbox = "^5.1.1" -# See https://github.com/exasol/saas-api-python/issues/120 -# for using openapi-python-client version >= 0.26 -openapi-python-client = ">=0.21.5" +openapi-python-client = ">=0.26" pyexasol = ">=1.0.0, <2" toml = "^0.10.2" types-python-dateutil = "^2.9.0.20250516" diff --git a/test/integration/databases_test.py b/test/integration/databases_test.py index 1c158700..ec980bb4 100644 --- a/test/integration/databases_test.py +++ b/test/integration/databases_test.py @@ -58,5 +58,5 @@ def get_connection(db: ExasolDatabase): # delete database and verify database is not listed anymore api_access.delete_database(db.id) - api_access.wait_until_deleted(db.id) + api_access.wait_until_deleted(db.id, timeout=timedelta(minutes=30)) assert db.id not in api_access.list_database_ids() From fbd8087dbd545553a4093e25404e6727be883aa0 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 10:17:39 +0100 Subject: [PATCH 12/47] poetry lock --- poetry.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index b8b2c8db..a70afc8b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -4118,4 +4118,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = ">=3.10.0,<4.0" -content-hash = "200e260ff6efc78c2b82b501c62e1299c37848a3d0a9a508cb5b3234f610d2f3" +content-hash = "a8ad8c5a632c319daaf770b254a2c48dda51087f9a41d521c626d9f2b725ea65" From 4b7f5799a9fdd922bffda6cd5133b06126332f4f Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 11:41:26 +0100 Subject: [PATCH 13/47] Modified API --- exasol/saas/client/api_access.py | 6 +++++- test/integration/databases_test.py | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index 22734543..3064722d 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -281,7 +281,11 @@ def wait_until_deleted( ): @interval_retry(interval, timeout) def still_exists() -> bool: - result = database_id in self.list_database_ids() + # an exception ApiError / OpenApiError should be ignored here + try: + result = database_id in self.list_database_ids() + except OpenApiError: + return False if result: raise TryAgain return result diff --git a/test/integration/databases_test.py b/test/integration/databases_test.py index ec980bb4..05619d9c 100644 --- a/test/integration/databases_test.py +++ b/test/integration/databases_test.py @@ -58,5 +58,6 @@ def get_connection(db: ExasolDatabase): # delete database and verify database is not listed anymore api_access.delete_database(db.id) - api_access.wait_until_deleted(db.id, timeout=timedelta(minutes=30)) + # api_access.wait_until_deleted(db.id, timeout=timedelta(minutes=30)) + api_access.wait_until_deleted(db.id) assert db.id not in api_access.list_database_ids() From 6ec206dfadd49a27759660179ce44ab9f7cf4750 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 12:15:23 +0100 Subject: [PATCH 14/47] Added instrumentation for failing test --- exasol/saas/client/api_access.py | 4 +++- test/integration/databases_test.py | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index 3064722d..594a327b 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -282,10 +282,12 @@ def wait_until_deleted( @interval_retry(interval, timeout) def still_exists() -> bool: # an exception ApiError / OpenApiError should be ignored here + existing = self.list_database_ids() try: - result = database_id in self.list_database_ids() + result = database_id in existing except OpenApiError: return False + LOG.info(f"Found existing database IDs: {existing}") if result: raise TryAgain return result diff --git a/test/integration/databases_test.py b/test/integration/databases_test.py index 05619d9c..811def34 100644 --- a/test/integration/databases_test.py +++ b/test/integration/databases_test.py @@ -10,6 +10,14 @@ from exasol.saas.client.api_access import timestamp_name from exasol.saas.client.openapi.models.exasol_database import ExasolDatabase +import logging + +LOG = logging.getLogger(__name__) +logging.basicConfig( + level=logging.INFO, + format="[%(levelname)s] %(message)s", +) + @pytest.fixture def local_name(project_short_tag: str | None) -> str: @@ -57,7 +65,9 @@ def get_connection(db: ExasolDatabase): assert con.db_username is not None and con.port == 8563 # delete database and verify database is not listed anymore + LOG.info(f"TEST: Deleting database with ID {db.id}") api_access.delete_database(db.id) # api_access.wait_until_deleted(db.id, timeout=timedelta(minutes=30)) + LOG.info(f"TEST: Waiting until database with ID {db.id} is deleted") api_access.wait_until_deleted(db.id) assert db.id not in api_access.list_database_ids() From 9eb4ff874bc13fb7890e757aa6b6baedc3f30c66 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 13:01:01 +0100 Subject: [PATCH 15/47] nox -s format:fix --- test/integration/databases_test.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/integration/databases_test.py b/test/integration/databases_test.py index 811def34..3d366b81 100644 --- a/test/integration/databases_test.py +++ b/test/integration/databases_test.py @@ -1,3 +1,4 @@ +import logging from datetime import ( datetime, timedelta, @@ -10,8 +11,6 @@ from exasol.saas.client.api_access import timestamp_name from exasol.saas.client.openapi.models.exasol_database import ExasolDatabase -import logging - LOG = logging.getLogger(__name__) logging.basicConfig( level=logging.INFO, From a9ac03a8b9f5aecdeb4f7e46bc431bc5e1c0d4d6 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 13:06:47 +0100 Subject: [PATCH 16/47] More logs --- .github/workflows/slow-checks.yml | 1 + exasol/saas/client/api_access.py | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/slow-checks.yml b/.github/workflows/slow-checks.yml index 282a0ab8..43472754 100644 --- a/.github/workflows/slow-checks.yml +++ b/.github/workflows/slow-checks.yml @@ -40,6 +40,7 @@ jobs: SAAS_ACCOUNT_ID: ${{ secrets.INTEGRATION_TEAM_SAAS_STAGING_ACCOUNT_ID }} SAAS_PAT: ${{ secrets.INTEGRATION_TEAM_SAAS_STAGING_PAT }} PROJECT_SHORT_TAG: SAPIPY + PYTEST_ADDOPTS: '-o log_cli=true -o log_cli_level=INFO - name: Upload Artifacts uses: actions/upload-artifact@v6 diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index 594a327b..e5a2e9d7 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -282,7 +282,7 @@ def wait_until_deleted( @interval_retry(interval, timeout) def still_exists() -> bool: # an exception ApiError / OpenApiError should be ignored here - existing = self.list_database_ids() + existing = list(self.list_database_ids()) try: result = database_id in existing except OpenApiError: @@ -355,13 +355,13 @@ def database( finally: db_repr = f"{db.name} with ID {db.id}" if db else None if not db: - LOG.warning("Cannot delete database None") + LOG.warning("CTX: Cannot delete database None") elif keep: - LOG.info("Keeping database %s as keep = %s.", db_repr, keep) + LOG.info("CTX: Keeping database %s as keep = %s.", db_repr, keep) else: - LOG.info("Deleting database %s", db_repr) + LOG.info("CTX: Deleting database %s", db_repr) self.delete_database(db.id, ignore_delete_failure) - LOG.info("Successfully deleted database %s.", db_repr) + LOG.info("CTX: Successfully deleted database %s.", db_repr) def get_database( self, From e99393fcb7c59a6185ea30dc319aae68b0dcd84d Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 13:09:40 +0100 Subject: [PATCH 17/47] Fixed workflow file --- .github/workflows/slow-checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/slow-checks.yml b/.github/workflows/slow-checks.yml index 43472754..6455b424 100644 --- a/.github/workflows/slow-checks.yml +++ b/.github/workflows/slow-checks.yml @@ -40,7 +40,7 @@ jobs: SAAS_ACCOUNT_ID: ${{ secrets.INTEGRATION_TEAM_SAAS_STAGING_ACCOUNT_ID }} SAAS_PAT: ${{ secrets.INTEGRATION_TEAM_SAAS_STAGING_PAT }} PROJECT_SHORT_TAG: SAPIPY - PYTEST_ADDOPTS: '-o log_cli=true -o log_cli_level=INFO + PYTEST_ADDOPTS: '-o log_cli=true -o log_cli_level=INFO' - name: Upload Artifacts uses: actions/upload-artifact@v6 From 1bf55a2ce7090722018be5323b1aa45b6462e227 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 14:56:30 +0100 Subject: [PATCH 18/47] Hopefullly finally fixed delete implementation --- exasol/saas/client/api_access.py | 61 ++++++++++++++++++++---------- test/integration/databases_test.py | 18 +++++++-- 2 files changed, 56 insertions(+), 23 deletions(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index e5a2e9d7..f36f0d2f 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -1,6 +1,7 @@ from __future__ import annotations import getpass +import json import logging import time from collections.abc import Iterable @@ -14,9 +15,10 @@ import tenacity from tenacity import ( TryAgain, + RetryError, retry, ) -from tenacity.retry import retry_if_exception +from tenacity.retry import retry_if_exception_type from tenacity.stop import stop_after_delay from tenacity.wait import ( wait_exponential, @@ -51,6 +53,7 @@ LOG = logging.getLogger(__name__) LOG.setLevel(logging.INFO) +logging.getLogger("httpx").setLevel(logging.ERROR) def interval_retry(interval: timedelta, timeout: timedelta): @@ -79,11 +82,16 @@ def timestamp_name(project_short_tag: str | None = None) -> str: return candidate[: Limits.MAX_DATABASE_NAME_LENGTH] +# unused def indicates_retry(ex: BaseException) -> bool: """ When deleting a SaaS instance raises an UnexpectedStatus, then this function decides whether we should retry to delete the database instance. """ + LOG.info( + "%d: %s: %s", + ex.status_code, type(ex).__name__, ex.content.decode("utf-8"), + ) return bool( isinstance(ex, UnexpectedStatus) and ex.status_code == 400 @@ -105,6 +113,12 @@ class DatabaseDeleteTimeout(Exception): """ +class DatabaseDeleteError(Exception): + """ + Unexpected failure when deleting a SaaS database. + """ + + class OpenApiError(RuntimeError): def __init__(self, message: str, error: ApiError | None): super().__init__(f"{message}: {error.message}." if error else message) @@ -262,6 +276,7 @@ def minutes(x: timedelta) -> int: stream_type="feature-release", ), ) + LOG.info("Created database with ID %s", result.id) if isinstance(result, ApiError): raise OpenApiError(f"Failed to create database {name}", result) return result @@ -281,19 +296,14 @@ def wait_until_deleted( ): @interval_retry(interval, timeout) def still_exists() -> bool: - # an exception ApiError / OpenApiError should be ignored here - existing = list(self.list_database_ids()) - try: - result = database_id in existing - except OpenApiError: - return False - LOG.info(f"Found existing database IDs: {existing}") - if result: + if database_id in self.list_database_ids(): raise TryAgain - return result + return False - if still_exists(): - raise DatabaseDeleteTimeout + try: + return still_exists() + except (TryAgain, RetryError) as ex: + raise DatabaseDeleteTimeout from ex def delete_database( self, @@ -303,24 +313,38 @@ def delete_database( min_interval: timedelta = timedelta(seconds=1), max_interval: timedelta = timedelta(minutes=2), ) -> None: + def status_and_message(resp) -> tuple[int, str]: + text = resp.content.decode("utf-8") + msg = json.loads(text).get("message") if text else "" + return resp.status_code, msg + @retry( - reraise=True, wait=wait_exponential( multiplier=1, min=min_interval, max=max_interval, ), stop=stop_after_delay(timeout), - retry=retry_if_exception(indicates_retry), + retry=retry_if_exception_type(TryAgain), ) - def delete_with_retry(): - LOG.info("Trying to delete database with ID %s ...", database_id) - delete_database.sync_detailed( + def delete_with_retry() -> None: + LOG.info("Trying to delete ...") + resp = delete_database.sync_detailed( self._account_id, database_id, client=self._client, ) + status, msg = status_and_message(resp) + if status in [204, 200]: + return + if status == 400 and "cluster is not in a proper state" in msg: + raise TryAgain + raise DatabaseDeleteError( + f"Failed to delete database with ID {database_id}." + f" Got HTTP {status}: {msg}." + ) + LOG.info("Got request to delete database with ID %s", database_id) try: delete_with_retry() LOG.info("Deleted database with ID %s", database_id) @@ -359,9 +383,8 @@ def database( elif keep: LOG.info("CTX: Keeping database %s as keep = %s.", db_repr, keep) else: - LOG.info("CTX: Deleting database %s", db_repr) self.delete_database(db.id, ignore_delete_failure) - LOG.info("CTX: Successfully deleted database %s.", db_repr) + LOG.info("Context assumes database %s as deleted.", db_repr) def get_database( self, diff --git a/test/integration/databases_test.py b/test/integration/databases_test.py index 3d366b81..a0b41187 100644 --- a/test/integration/databases_test.py +++ b/test/integration/databases_test.py @@ -8,7 +8,10 @@ from tenacity import RetryError from exasol.saas.client import PROMISING_STATES -from exasol.saas.client.api_access import timestamp_name +from exasol.saas.client.api_access import ( + DatabaseDeleteTimeout, + timestamp_name, +) from exasol.saas.client.openapi.models.exasol_database import ExasolDatabase LOG = logging.getLogger(__name__) @@ -64,9 +67,16 @@ def get_connection(db: ExasolDatabase): assert con.db_username is not None and con.port == 8563 # delete database and verify database is not listed anymore - LOG.info(f"TEST: Deleting database with ID {db.id}") api_access.delete_database(db.id) - # api_access.wait_until_deleted(db.id, timeout=timedelta(minutes=30)) - LOG.info(f"TEST: Waiting until database with ID {db.id} is deleted") api_access.wait_until_deleted(db.id) assert db.id not in api_access.list_database_ids() + + +def test_x1(api_access): + id = "wyZab-TzT76G6l7iDNGMuw" + api_access.delete_database(id) + try: + api_access.wait_until_deleted(id, timeout=timedelta(seconds=1)) + LOG.info(f'DB {id} seems to be deleted already') + except DatabaseDeleteTimeout: + LOG.error(f'Gave up waiting for DB {id} to be deleted') From 589556c8ccfeec4703d50bc9e7345bcb3e74f910 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 14:57:09 +0100 Subject: [PATCH 19/47] format:fix --- exasol/saas/client/api_access.py | 6 ++++-- test/integration/databases_test.py | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index f36f0d2f..0e68014d 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -14,8 +14,8 @@ import tenacity from tenacity import ( - TryAgain, RetryError, + TryAgain, retry, ) from tenacity.retry import retry_if_exception_type @@ -90,7 +90,9 @@ def indicates_retry(ex: BaseException) -> bool: """ LOG.info( "%d: %s: %s", - ex.status_code, type(ex).__name__, ex.content.decode("utf-8"), + ex.status_code, + type(ex).__name__, + ex.content.decode("utf-8"), ) return bool( isinstance(ex, UnexpectedStatus) diff --git a/test/integration/databases_test.py b/test/integration/databases_test.py index a0b41187..0a9613da 100644 --- a/test/integration/databases_test.py +++ b/test/integration/databases_test.py @@ -77,6 +77,6 @@ def test_x1(api_access): api_access.delete_database(id) try: api_access.wait_until_deleted(id, timeout=timedelta(seconds=1)) - LOG.info(f'DB {id} seems to be deleted already') + LOG.info(f"DB {id} seems to be deleted already") except DatabaseDeleteTimeout: - LOG.error(f'Gave up waiting for DB {id} to be deleted') + LOG.error(f"Gave up waiting for DB {id} to be deleted") From 95ae0e69c1643cda4683cb3feb18dc6a95413c3b Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 15:00:31 +0100 Subject: [PATCH 20/47] Cleanup --- exasol/saas/client/api_access.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index 0e68014d..f8c1622c 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -53,7 +53,7 @@ LOG = logging.getLogger(__name__) LOG.setLevel(logging.INFO) -logging.getLogger("httpx").setLevel(logging.ERROR) +logging.getLogger("httpx").setLevel(logging.WARNING) def interval_retry(interval: timedelta, timeout: timedelta): @@ -381,9 +381,9 @@ def database( finally: db_repr = f"{db.name} with ID {db.id}" if db else None if not db: - LOG.warning("CTX: Cannot delete database None") + LOG.warning("Cannot delete database None") elif keep: - LOG.info("CTX: Keeping database %s as keep = %s.", db_repr, keep) + LOG.info("Keeping database %s as keep = %s.", db_repr, keep) else: self.delete_database(db.id, ignore_delete_failure) LOG.info("Context assumes database %s as deleted.", db_repr) From 4291d07a0f1c4177e642b9bebd0e4025dabcd843 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 15:14:10 +0100 Subject: [PATCH 21/47] fixed lint errors --- exasol/saas/client/api_access.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index f8c1622c..becdff45 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -88,12 +88,6 @@ def indicates_retry(ex: BaseException) -> bool: When deleting a SaaS instance raises an UnexpectedStatus, then this function decides whether we should retry to delete the database instance. """ - LOG.info( - "%d: %s: %s", - ex.status_code, - type(ex).__name__, - ex.content.decode("utf-8"), - ) return bool( isinstance(ex, UnexpectedStatus) and ex.status_code == 400 @@ -278,9 +272,9 @@ def minutes(x: timedelta) -> int: stream_type="feature-release", ), ) - LOG.info("Created database with ID %s", result.id) - if isinstance(result, ApiError): + if (result is None) or isinstance(result, ApiError): raise OpenApiError(f"Failed to create database {name}", result) + LOG.info("Created database with ID %s", result.id) return result @contextmanager From ebd682f47cd76899566b96a6dc0f3a6d0307f0a3 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 16:33:55 +0100 Subject: [PATCH 22/47] Fixed unit tests --- exasol/saas/client/api_access.py | 18 +-------- test/unit/test_api_access.py | 67 +++++++++++++++++--------------- 2 files changed, 38 insertions(+), 47 deletions(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index becdff45..0328f765 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -45,7 +45,6 @@ delete_allowed_ip, list_allowed_i_ps, ) -from exasol.saas.client.openapi.errors import UnexpectedStatus from exasol.saas.client.openapi.models import ApiError from exasol.saas.client.openapi.models.exasol_database import ExasolDatabase from exasol.saas.client.openapi.models.status import Status @@ -82,19 +81,6 @@ def timestamp_name(project_short_tag: str | None = None) -> str: return candidate[: Limits.MAX_DATABASE_NAME_LENGTH] -# unused -def indicates_retry(ex: BaseException) -> bool: - """ - When deleting a SaaS instance raises an UnexpectedStatus, then this - function decides whether we should retry to delete the database instance. - """ - return bool( - isinstance(ex, UnexpectedStatus) - and ex.status_code == 400 - and "cluster is not in a proper state" in ex.content.decode("utf-8") - ) - - class DatabaseStartupFailure(Exception): """ If a SaaS database instance during startup reports a status other than @@ -335,7 +321,7 @@ def delete_with_retry() -> None: return if status == 400 and "cluster is not in a proper state" in msg: raise TryAgain - raise DatabaseDeleteError( + raise Exception( f"Failed to delete database with ID {database_id}." f" Got HTTP {status}: {msg}." ) @@ -352,7 +338,7 @@ def delete_with_retry() -> None: ex, ) else: - raise + raise DatabaseDeleteError(str(ex)) from ex def list_database_ids(self) -> Iterable[str]: dbs = list_databases.sync(self._account_id, client=self._client) or [] diff --git a/test/unit/test_api_access.py b/test/unit/test_api_access.py index b4a02167..edf9f7ca 100644 --- a/test/unit/test_api_access.py +++ b/test/unit/test_api_access.py @@ -1,3 +1,5 @@ +import json +import re from datetime import timedelta from test.util import not_raises from unittest.mock import Mock @@ -5,33 +7,23 @@ import pytest from exasol.saas.client.api_access import ( + DatabaseDeleteError, OpenApiAccess, - indicates_retry, timestamp_name, ) -from exasol.saas.client.openapi.errors import UnexpectedStatus -RETRY_EXCEPTION = UnexpectedStatus( - 400, b"Operation is not allowed:The cluster is not in a proper state!" -) +def response(status_code: int, message: str): + json_content = {"message": message} + return Mock( + status_code=status_code, + content=json.dumps(json_content).encode(), + ) -@pytest.mark.parametrize( - "exception, expected", - [ - pytest.param(RuntimeError("bla"), False, id="other_exception"), - pytest.param(UnexpectedStatus(404, b"bla"), False, id="other_status_code"), - pytest.param(UnexpectedStatus(400, b"bla"), False, id="other_message"), - pytest.param(RETRY_EXCEPTION, True, id="indicates_retry"), - ], + +RETRY = response( + 400, "Operation is not allowed:The cluster is not in a proper state!" ) -def test_indicates_retry(exception, expected): - """ - Call function api_access.indicates_retry() with different exceptions - in order to verify if it correctly rates the current exception as - indicating to retry deleting a SaaS database instance. - """ - assert indicates_retry(exception) == expected class ApiRunner: @@ -41,12 +33,22 @@ def __init__(self, mocker): self.mock = None def mock_delete(self, side_effect): + # import exasol.saas.client.api_access.delete_database as api + # api.sync_detailed self.mock = Mock(side_effect=side_effect) self._mocker.patch( - "exasol.saas.client.api_access." "delete_database.sync_detailed", self.mock + "exasol.saas.client.api_access.delete_database.sync_detailed", self.mock ) +def test_x1(): + m = response(21, "hello") + text = m.content.decode("utf-8") + msg = json.loads(text).get("message") if text else "" + print(f'{m.status_code} {msg}') + + + @pytest.fixture def api_runner(mocker) -> ApiRunner: return ApiRunner(mocker) @@ -68,20 +70,23 @@ def retry_timings() -> dict[str, timedelta]: @pytest.mark.parametrize( "side_effect", [ - pytest.param([UnexpectedStatus(400, b"bla")], id="immediate_failure"), pytest.param( - [RETRY_EXCEPTION, RETRY_EXCEPTION, UnexpectedStatus(400, b"bla")], + [response(400, "bla")], + id="immediate_failure", + ), + pytest.param( + [RETRY, RETRY, response(400, "bla")], id="failure_after_retry", ), pytest.param( - [RETRY_EXCEPTION for _ in range(4)], + [RETRY for _ in range(4)], id="timeout_after_too_many_retries", ), ], ) -def test_delete_fail(side_effect, api_runner, retry_timings) -> None: +def test_delete_fail(api_runner, side_effect, retry_timings) -> None: api_runner.mock_delete(side_effect) - with pytest.raises(UnexpectedStatus): + with pytest.raises(DatabaseDeleteError): api_runner.api.delete_database("123", **retry_timings) @@ -89,17 +94,17 @@ def test_delete_fail(side_effect, api_runner, retry_timings) -> None: "side_effect, ignore_failures, expected_log_message", [ pytest.param( - [RETRY_EXCEPTION, None], + [RETRY, response(200, "")], False, "", id="success_after_retry", ), pytest.param( - [UnexpectedStatus(400, b"bla")], + [response(400, "bla")], True, ( - "Ignoring failure when deleting database with" - " ID 123: Unexpected status code: 400" + "Ignoring failure when deleting database with ID 123: .*" + "Got HTTP 400" ), id="success_by_ignoring_failures", ), @@ -121,7 +126,7 @@ def test_delete_success( ignore_failures=ignore_failures, ) assert api_runner.mock.called - assert expected_log_message in caplog.text + assert re.search(expected_log_message, caplog.text, re.MULTILINE) def test_timestamp_name() -> None: From 7bd6c0cf395181b644dce697907a3edf470ad6f9 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 16:36:07 +0100 Subject: [PATCH 23/47] nox -s format:fix --- test/unit/test_api_access.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/test/unit/test_api_access.py b/test/unit/test_api_access.py index edf9f7ca..d82cd6d4 100644 --- a/test/unit/test_api_access.py +++ b/test/unit/test_api_access.py @@ -21,9 +21,7 @@ def response(status_code: int, message: str): ) -RETRY = response( - 400, "Operation is not allowed:The cluster is not in a proper state!" -) +RETRY = response(400, "Operation is not allowed:The cluster is not in a proper state!") class ApiRunner: @@ -45,8 +43,7 @@ def test_x1(): m = response(21, "hello") text = m.content.decode("utf-8") msg = json.loads(text).get("message") if text else "" - print(f'{m.status_code} {msg}') - + print(f"{m.status_code} {msg}") @pytest.fixture @@ -102,10 +99,7 @@ def test_delete_fail(api_runner, side_effect, retry_timings) -> None: pytest.param( [response(400, "bla")], True, - ( - "Ignoring failure when deleting database with ID 123: .*" - "Got HTTP 400" - ), + ("Ignoring failure when deleting database with ID 123: .*" "Got HTTP 400"), id="success_by_ignoring_failures", ), ], From 5ce143a479846e6683c24e21667eacc7d6b718db Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 17:13:48 +0100 Subject: [PATCH 24/47] Removed local test case --- test/integration/databases_test.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/test/integration/databases_test.py b/test/integration/databases_test.py index 0a9613da..5db8e78f 100644 --- a/test/integration/databases_test.py +++ b/test/integration/databases_test.py @@ -70,13 +70,3 @@ def get_connection(db: ExasolDatabase): api_access.delete_database(db.id) api_access.wait_until_deleted(db.id) assert db.id not in api_access.list_database_ids() - - -def test_x1(api_access): - id = "wyZab-TzT76G6l7iDNGMuw" - api_access.delete_database(id) - try: - api_access.wait_until_deleted(id, timeout=timedelta(seconds=1)) - LOG.info(f"DB {id} seems to be deleted already") - except DatabaseDeleteTimeout: - LOG.error(f"Gave up waiting for DB {id} to be deleted") From 163838b0efb4c7da14634dcc1c18a09bca2ed55d Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 17:14:33 +0100 Subject: [PATCH 25/47] Removed unused import --- test/integration/databases_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/databases_test.py b/test/integration/databases_test.py index 5db8e78f..4f269e6a 100644 --- a/test/integration/databases_test.py +++ b/test/integration/databases_test.py @@ -1,3 +1,4 @@ +import datetime import logging from datetime import ( datetime, @@ -9,7 +10,6 @@ from exasol.saas.client import PROMISING_STATES from exasol.saas.client.api_access import ( - DatabaseDeleteTimeout, timestamp_name, ) from exasol.saas.client.openapi.models.exasol_database import ExasolDatabase From 1eaa7ff56edf6bee6304dd954a34bdad9c42fa40 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 16 Feb 2026 17:42:20 +0100 Subject: [PATCH 26/47] Cleaned up log messages and unit test --- .github/workflows/slow-checks.yml | 16 +++------------- exasol/saas/client/api_access.py | 8 ++++---- test/unit/test_api_access.py | 22 ++++++---------------- 3 files changed, 13 insertions(+), 33 deletions(-) diff --git a/.github/workflows/slow-checks.yml b/.github/workflows/slow-checks.yml index 6455b424..e9684bc3 100644 --- a/.github/workflows/slow-checks.yml +++ b/.github/workflows/slow-checks.yml @@ -4,24 +4,14 @@ on: workflow_call: jobs: - build-matrix: - name: Generate Build Matrix - uses: ./.github/workflows/matrix-all.yml - permissions: - contents: read tests: - name: Integration-Tests (Python-${{ matrix.python-version }} - needs: - - build-matrix + name: Integration-Tests runs-on: "ubuntu-24.04" permissions: contents: read env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - strategy: - fail-fast: false - matrix: ${{ fromJson(needs.build-matrix.outputs.matrix) }} steps: - name: SCM Checkout @@ -30,7 +20,7 @@ jobs: - name: Setup Python & Poetry Environment uses: exasol/python-toolbox/.github/actions/python-environment@v5 with: - python-version: ${{ matrix.python-version }} + python-version: "3.10" poetry-version: "2.3.0" - name: Run Tests and Collect Coverage @@ -45,6 +35,6 @@ jobs: - name: Upload Artifacts uses: actions/upload-artifact@v6 with: - name: coverage-python${{ matrix.python-version }}-exasol${{ matrix.exasol-version }}-slow + name: coverage-python3.10-slow path: .coverage include-hidden-files: true diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index 0328f765..4beec533 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -310,7 +310,7 @@ def status_and_message(resp) -> tuple[int, str]: retry=retry_if_exception_type(TryAgain), ) def delete_with_retry() -> None: - LOG.info("Trying to delete ...") + LOG.info("- Trying to delete ...") resp = delete_database.sync_detailed( self._account_id, database_id, @@ -329,12 +329,11 @@ def delete_with_retry() -> None: LOG.info("Got request to delete database with ID %s", database_id) try: delete_with_retry() - LOG.info("Deleted database with ID %s", database_id) + LOG.info("Deleted database with") except Exception as ex: if ignore_failures: LOG.error( - "Ignoring failure when deleting database with ID %s: %s", - database_id, + "Ignoring failure when deleting database: %s", ex, ) else: @@ -398,6 +397,7 @@ def poll_status() -> Status: raise TryAgain return status + LOG.info("Waiting for database with ID %s to be available:", database_id) if poll_status() not in success: raise DatabaseStartupFailure() diff --git a/test/unit/test_api_access.py b/test/unit/test_api_access.py index d82cd6d4..afd80be6 100644 --- a/test/unit/test_api_access.py +++ b/test/unit/test_api_access.py @@ -25,30 +25,20 @@ def response(status_code: int, message: str): class ApiRunner: - def __init__(self, mocker): + def __init__(self, monkeypatch): self.api = OpenApiAccess(Mock(), account_id="A1") - self._mocker = mocker + self._monkeypatch = monkeypatch self.mock = None def mock_delete(self, side_effect): - # import exasol.saas.client.api_access.delete_database as api - # api.sync_detailed + from exasol.saas.client.api_access import delete_database as api self.mock = Mock(side_effect=side_effect) - self._mocker.patch( - "exasol.saas.client.api_access.delete_database.sync_detailed", self.mock - ) - - -def test_x1(): - m = response(21, "hello") - text = m.content.decode("utf-8") - msg = json.loads(text).get("message") if text else "" - print(f"{m.status_code} {msg}") + self._monkeypatch.setattr(api, "sync_detailed", self.mock) @pytest.fixture -def api_runner(mocker) -> ApiRunner: - return ApiRunner(mocker) +def api_runner(monkeypatch) -> ApiRunner: + return ApiRunner(monkeypatch) @pytest.fixture From 514a8820b3e583c6b6528be3086379c416944917 Mon Sep 17 00:00:00 2001 From: ckunki Date: Tue, 17 Feb 2026 09:03:31 +0100 Subject: [PATCH 27/47] nox -s format:fix --- test/unit/test_api_access.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/unit/test_api_access.py b/test/unit/test_api_access.py index afd80be6..6d5159fd 100644 --- a/test/unit/test_api_access.py +++ b/test/unit/test_api_access.py @@ -32,6 +32,7 @@ def __init__(self, monkeypatch): def mock_delete(self, side_effect): from exasol.saas.client.api_access import delete_database as api + self.mock = Mock(side_effect=side_effect) self._monkeypatch.setattr(api, "sync_detailed", self.mock) From 9a391f6f0354319fc060158e4d4a15c5d3e0e5b1 Mon Sep 17 00:00:00 2001 From: ckunki Date: Tue, 17 Feb 2026 09:17:58 +0100 Subject: [PATCH 28/47] Refactored error messages and unit tests --- exasol/saas/client/api_access.py | 18 +++++++----------- test/unit/test_api_access.py | 6 +++--- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index 4beec533..d998156a 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -97,7 +97,7 @@ class DatabaseDeleteTimeout(Exception): class DatabaseDeleteError(Exception): """ - Unexpected failure when deleting a SaaS database. + Failed to delete a SaaS database instance. """ @@ -321,23 +321,19 @@ def delete_with_retry() -> None: return if status == 400 and "cluster is not in a proper state" in msg: raise TryAgain - raise Exception( - f"Failed to delete database with ID {database_id}." - f" Got HTTP {status}: {msg}." - ) + raise Exception(f"HTTP {status}: {msg}.") LOG.info("Got request to delete database with ID %s", database_id) try: delete_with_retry() - LOG.info("Deleted database with") + LOG.info("Successfully deleted database.") except Exception as ex: if ignore_failures: - LOG.error( - "Ignoring failure when deleting database: %s", - ex, - ) + LOG.warning("Ignoring delete failure: %s", ex) else: - raise DatabaseDeleteError(str(ex)) from ex + msg = f"Failed to delete database: {ex}" + LOG.error(msg) + raise DatabaseDeleteError(msg) from ex def list_database_ids(self) -> Iterable[str]: dbs = list_databases.sync(self._account_id, client=self._client) or [] diff --git a/test/unit/test_api_access.py b/test/unit/test_api_access.py index 6d5159fd..1187b3c9 100644 --- a/test/unit/test_api_access.py +++ b/test/unit/test_api_access.py @@ -1,5 +1,4 @@ import json -import re from datetime import timedelta from test.util import not_raises from unittest.mock import Mock @@ -90,7 +89,7 @@ def test_delete_fail(api_runner, side_effect, retry_timings) -> None: pytest.param( [response(400, "bla")], True, - ("Ignoring failure when deleting database with ID 123: .*" "Got HTTP 400"), + "Ignoring delete failure: HTTP 400:", id="success_by_ignoring_failures", ), ], @@ -111,7 +110,8 @@ def test_delete_success( ignore_failures=ignore_failures, ) assert api_runner.mock.called - assert re.search(expected_log_message, caplog.text, re.MULTILINE) + print(f'\nactual: {caplog.text}\n expected: {expected_log_message}') + assert expected_log_message in caplog.text def test_timestamp_name() -> None: From a663b62477f9106a700ef210fd20966a73022e1d Mon Sep 17 00:00:00 2001 From: ckunki Date: Tue, 17 Feb 2026 09:18:26 +0100 Subject: [PATCH 29/47] nox -s format:fix --- test/unit/test_api_access.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/test_api_access.py b/test/unit/test_api_access.py index 1187b3c9..3f535f6f 100644 --- a/test/unit/test_api_access.py +++ b/test/unit/test_api_access.py @@ -110,7 +110,7 @@ def test_delete_success( ignore_failures=ignore_failures, ) assert api_runner.mock.called - print(f'\nactual: {caplog.text}\n expected: {expected_log_message}') + print(f"\nactual: {caplog.text}\n expected: {expected_log_message}") assert expected_log_message in caplog.text From 8ff9f5503f85bcb4cdddcf7f6b4136b6ef2f4fe6 Mon Sep 17 00:00:00 2001 From: ckunki Date: Tue, 17 Feb 2026 09:19:54 +0100 Subject: [PATCH 30/47] Removed output --- test/unit/test_api_access.py | 1 - 1 file changed, 1 deletion(-) diff --git a/test/unit/test_api_access.py b/test/unit/test_api_access.py index 3f535f6f..3f799ae2 100644 --- a/test/unit/test_api_access.py +++ b/test/unit/test_api_access.py @@ -110,7 +110,6 @@ def test_delete_success( ignore_failures=ignore_failures, ) assert api_runner.mock.called - print(f"\nactual: {caplog.text}\n expected: {expected_log_message}") assert expected_log_message in caplog.text From 66c4ed33386c95e9bf516fd02719c2c5b1bd3ad1 Mon Sep 17 00:00:00 2001 From: ckunki Date: Wed, 18 Feb 2026 08:09:19 +0100 Subject: [PATCH 31/47] Renamed integration test files --- test/integration/{allowed_ip_test.py => test_allowed_ip.py} | 0 test/integration/{connection_test.py => test_connection.py} | 0 test/integration/{databases_test.py => test_databases.py} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename test/integration/{allowed_ip_test.py => test_allowed_ip.py} (100%) rename test/integration/{connection_test.py => test_connection.py} (100%) rename test/integration/{databases_test.py => test_databases.py} (100%) diff --git a/test/integration/allowed_ip_test.py b/test/integration/test_allowed_ip.py similarity index 100% rename from test/integration/allowed_ip_test.py rename to test/integration/test_allowed_ip.py diff --git a/test/integration/connection_test.py b/test/integration/test_connection.py similarity index 100% rename from test/integration/connection_test.py rename to test/integration/test_connection.py diff --git a/test/integration/databases_test.py b/test/integration/test_databases.py similarity index 100% rename from test/integration/databases_test.py rename to test/integration/test_databases.py From 8881bff2ba8e192caa0ead47c1310292a635dcc8 Mon Sep 17 00:00:00 2001 From: ckunki Date: Wed, 18 Feb 2026 09:13:12 +0100 Subject: [PATCH 32/47] replaced json parsing by access to response.parsed --- exasol/saas/client/api_access.py | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index d998156a..6ee969e7 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -1,7 +1,6 @@ from __future__ import annotations import getpass -import json import logging import time from collections.abc import Iterable @@ -101,11 +100,18 @@ class DatabaseDeleteError(Exception): """ -class OpenApiError(RuntimeError): +class OpenApiError(Exception): def __init__(self, message: str, error: ApiError | None): super().__init__(f"{message}: {error.message}." if error else message) + +class InternalError(Exception): + """ + Internal error during delete with retry. + """ + + def create_saas_client( host: str, pat: str, @@ -295,10 +301,12 @@ def delete_database( min_interval: timedelta = timedelta(seconds=1), max_interval: timedelta = timedelta(minutes=2), ) -> None: - def status_and_message(resp) -> tuple[int, str]: - text = resp.content.decode("utf-8") - msg = json.loads(text).get("message") if text else "" - return resp.status_code, msg + def is_retry(err: Any) -> bool: + return ( + isinstance(err, ApiError) and + err.status == 400 and + "cluster is not in a proper state" in err.message + ) @retry( wait=wait_exponential( @@ -316,12 +324,14 @@ def delete_with_retry() -> None: database_id, client=self._client, ) - status, msg = status_and_message(resp) - if status in [204, 200]: + err = resp.parsed + if err.status in [204, 200]: return - if status == 400 and "cluster is not in a proper state" in msg: + if is_retry(err): raise TryAgain - raise Exception(f"HTTP {status}: {msg}.") + raise InternalError( + f"{type(err).__name__} HTTP {err.status}: {err.message}." + ) LOG.info("Got request to delete database with ID %s", database_id) try: From ae8b2203447a61ffec8bdfbd520782e0198e87d5 Mon Sep 17 00:00:00 2001 From: ckunki Date: Wed, 18 Feb 2026 09:15:57 +0100 Subject: [PATCH 33/47] nox -s format:fix --- exasol/saas/client/api_access.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index 6ee969e7..9b1e9997 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -105,7 +105,6 @@ def __init__(self, message: str, error: ApiError | None): super().__init__(f"{message}: {error.message}." if error else message) - class InternalError(Exception): """ Internal error during delete with retry. @@ -303,9 +302,9 @@ def delete_database( ) -> None: def is_retry(err: Any) -> bool: return ( - isinstance(err, ApiError) and - err.status == 400 and - "cluster is not in a proper state" in err.message + isinstance(err, ApiError) + and err.status == 400 + and "cluster is not in a proper state" in err.message ) @retry( From 2b72eb9f84b6ac9640970c716c797eef66d5b5ea Mon Sep 17 00:00:00 2001 From: ckunki Date: Wed, 18 Feb 2026 09:19:37 +0100 Subject: [PATCH 34/47] fixed type errors --- exasol/saas/client/api_access.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index 9b1e9997..e4de9d88 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -323,8 +323,8 @@ def delete_with_retry() -> None: database_id, client=self._client, ) - err = resp.parsed - if err.status in [204, 200]: + err = resp and resp.parsed + if not err or err.status in [204, 200]: return if is_retry(err): raise TryAgain From 13e3e43c7a30f343ad2670cc68ff441554c99a56 Mon Sep 17 00:00:00 2001 From: ckunki Date: Wed, 18 Feb 2026 11:12:29 +0100 Subject: [PATCH 35/47] Fixed unit tests --- test/unit/test_api_access.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/test/unit/test_api_access.py b/test/unit/test_api_access.py index 3f799ae2..065a3c93 100644 --- a/test/unit/test_api_access.py +++ b/test/unit/test_api_access.py @@ -1,4 +1,3 @@ -import json from datetime import timedelta from test.util import not_raises from unittest.mock import Mock @@ -10,14 +9,12 @@ OpenApiAccess, timestamp_name, ) +from exasol.saas.client.openapi.models.api_error import ApiError def response(status_code: int, message: str): - json_content = {"message": message} - return Mock( - status_code=status_code, - content=json.dumps(json_content).encode(), - ) + mock = Mock(ApiError, status=status_code, message=message) + return Mock(parsed=mock) RETRY = response(400, "Operation is not allowed:The cluster is not in a proper state!") @@ -110,7 +107,9 @@ def test_delete_success( ignore_failures=ignore_failures, ) assert api_runner.mock.called - assert expected_log_message in caplog.text + if expected_log_message not in caplog.text: + print(f'\nactual: {caplog.text}\n expected: {expected_log_message}') + # assert expected_log_message in caplog.text, f"{expected_log_message} not in {caplog.text}" def test_timestamp_name() -> None: From ec64947cb1ea2ae2f62f016b420e4f22a62ad5b1 Mon Sep 17 00:00:00 2001 From: ckunki Date: Wed, 18 Feb 2026 11:23:32 +0100 Subject: [PATCH 36/47] nox -s format:fix --- test/unit/test_api_access.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/test_api_access.py b/test/unit/test_api_access.py index 065a3c93..66eac18b 100644 --- a/test/unit/test_api_access.py +++ b/test/unit/test_api_access.py @@ -108,7 +108,7 @@ def test_delete_success( ) assert api_runner.mock.called if expected_log_message not in caplog.text: - print(f'\nactual: {caplog.text}\n expected: {expected_log_message}') + print(f"\nactual: {caplog.text}\n expected: {expected_log_message}") # assert expected_log_message in caplog.text, f"{expected_log_message} not in {caplog.text}" From 5406aae4a9dda0ebb0242b31d09e9ca9e86020d6 Mon Sep 17 00:00:00 2001 From: ckunki Date: Thu, 19 Feb 2026 14:36:06 +0100 Subject: [PATCH 37/47] Replace ApiRunner by separate mocks --- exasol/saas/client/api_access.py | 25 ++++++-------- test/unit/test_api_access.py | 59 ++++++++++++++++---------------- 2 files changed, 41 insertions(+), 43 deletions(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index e4de9d88..62e42d8e 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -282,13 +282,13 @@ def wait_until_deleted( interval: timedelta = timedelta(minutes=1), ): @interval_retry(interval, timeout) - def still_exists() -> bool: + def verify_not_listed() -> bool: if database_id in self.list_database_ids(): raise TryAgain - return False + return True try: - return still_exists() + return verify_not_listed() except (TryAgain, RetryError) as ex: raise DatabaseDeleteTimeout from ex @@ -300,11 +300,10 @@ def delete_database( min_interval: timedelta = timedelta(seconds=1), max_interval: timedelta = timedelta(minutes=2), ) -> None: - def is_retry(err: Any) -> bool: + def is_retry(resp: ApiError) -> bool: return ( - isinstance(err, ApiError) - and err.status == 400 - and "cluster is not in a proper state" in err.message + resp.status == 400 and + "cluster is not in a proper state" in resp.message ) @retry( @@ -318,19 +317,17 @@ def is_retry(err: Any) -> bool: ) def delete_with_retry() -> None: LOG.info("- Trying to delete ...") - resp = delete_database.sync_detailed( + resp = delete_database.sync( self._account_id, database_id, client=self._client, ) - err = resp and resp.parsed - if not err or err.status in [204, 200]: + if not isinstance(resp, ApiError): + # success return - if is_retry(err): + if is_retry(resp): raise TryAgain - raise InternalError( - f"{type(err).__name__} HTTP {err.status}: {err.message}." - ) + raise InternalError(f"HTTP {resp.status}: {resp.message}.") LOG.info("Got request to delete database with ID %s", database_id) try: diff --git a/test/unit/test_api_access.py b/test/unit/test_api_access.py index 66eac18b..bc166852 100644 --- a/test/unit/test_api_access.py +++ b/test/unit/test_api_access.py @@ -11,31 +11,31 @@ ) from exasol.saas.client.openapi.models.api_error import ApiError +import pytest -def response(status_code: int, message: str): - mock = Mock(ApiError, status=status_code, message=message) - return Mock(parsed=mock) +def response(status_code: int, message: str, spec=None): + return Mock(spec, status=status_code, message=message) -RETRY = response(400, "Operation is not allowed:The cluster is not in a proper state!") +def api_error(status_code: int, message: str): + return response(status_code, message, spec=ApiError) -class ApiRunner: - def __init__(self, monkeypatch): - self.api = OpenApiAccess(Mock(), account_id="A1") - self._monkeypatch = monkeypatch - self.mock = None +RETRY = api_error( + 400, "Operation is not allowed:The cluster is not in a proper state!", +) - def mock_delete(self, side_effect): - from exasol.saas.client.api_access import delete_database as api - self.mock = Mock(side_effect=side_effect) - self._monkeypatch.setattr(api, "sync_detailed", self.mock) +@pytest.fixture +def api_mock(): + return OpenApiAccess(Mock(), account_id="A1") -@pytest.fixture -def api_runner(monkeypatch) -> ApiRunner: - return ApiRunner(monkeypatch) +def delete_mock(monkeypatch, side_effect) -> Mock: + from exasol.saas.client.api_access import delete_database as api + mock = Mock(side_effect=side_effect) + monkeypatch.setattr(api, "sync", mock) + return mock @pytest.fixture @@ -55,11 +55,11 @@ def retry_timings() -> dict[str, timedelta]: "side_effect", [ pytest.param( - [response(400, "bla")], + [api_error(400, "bla")], id="immediate_failure", ), pytest.param( - [RETRY, RETRY, response(400, "bla")], + [RETRY, RETRY, api_error(400, "bla")], id="failure_after_retry", ), pytest.param( @@ -68,10 +68,10 @@ def retry_timings() -> dict[str, timedelta]: ), ], ) -def test_delete_fail(api_runner, side_effect, retry_timings) -> None: - api_runner.mock_delete(side_effect) +def test_delete_fail(api_mock, monkeypatch, side_effect, retry_timings) -> None: + delete_mock(monkeypatch, side_effect) with pytest.raises(DatabaseDeleteError): - api_runner.api.delete_database("123", **retry_timings) + api_mock.delete_database("123", **retry_timings) @pytest.mark.parametrize( @@ -84,7 +84,7 @@ def test_delete_fail(api_runner, side_effect, retry_timings) -> None: id="success_after_retry", ), pytest.param( - [response(400, "bla")], + [api_error(400, "bla")], True, "Ignoring delete failure: HTTP 400:", id="success_by_ignoring_failures", @@ -95,21 +95,22 @@ def test_delete_success( side_effect, ignore_failures, expected_log_message, - api_runner, + api_mock, + monkeypatch, retry_timings, caplog, ) -> None: - api_runner.mock_delete(side_effect) + delete = delete_mock(monkeypatch, side_effect) with not_raises(Exception): - api_runner.api.delete_database( + api_mock.delete_database( database_id="123", **retry_timings, ignore_failures=ignore_failures, ) - assert api_runner.mock.called - if expected_log_message not in caplog.text: - print(f"\nactual: {caplog.text}\n expected: {expected_log_message}") - # assert expected_log_message in caplog.text, f"{expected_log_message} not in {caplog.text}" + assert delete.called + # if expected_log_message not in caplog.text: + # print(f"\nactual: {caplog.text}\n expected: {expected_log_message}") + assert expected_log_message in caplog.text def test_timestamp_name() -> None: From 45f536d8ccd766dc969559b72e8743720f7bffca Mon Sep 17 00:00:00 2001 From: ckunki Date: Thu, 19 Feb 2026 15:08:41 +0100 Subject: [PATCH 38/47] Used common function for reporting ApiErrors --- exasol/saas/client/api_access.py | 150 ++++++++++++++++++------------- test/unit/test_api_access.py | 5 +- 2 files changed, 89 insertions(+), 66 deletions(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index 62e42d8e..559581d9 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -9,7 +9,11 @@ datetime, timedelta, ) -from typing import Any +from typing import ( + Any, + TypeVar, + cast, +) import tenacity from tenacity import ( @@ -24,7 +28,6 @@ wait_fixed, ) -import exasol.saas.client.openapi.models as openapi_models from exasol.saas.client import ( Limits, openapi, @@ -44,9 +47,11 @@ delete_allowed_ip, list_allowed_i_ps, ) -from exasol.saas.client.openapi.models import ApiError -from exasol.saas.client.openapi.models.exasol_database import ExasolDatabase -from exasol.saas.client.openapi.models.status import Status +from exasol.saas.client.openapi.models import ( + ApiError, + ExasolDatabase, + Status, +) from exasol.saas.client.openapi.types import UNSET LOG = logging.getLogger(__name__) @@ -105,6 +110,23 @@ def __init__(self, message: str, error: ApiError | None): super().__init__(f"{message}: {error.message}." if error else message) +T = TypeVar("T") + + +def ensure_type( + expected: type[T], + response: T | ApiError | None, + message: str, +) -> T: + """ + Ensure the passed response is of the expected type and return it with + correct type. Otherwise raise an OpenApiError. + """ + if isinstance(response, expected): + return response + raise OpenApiError(message, cast(ApiError, response)) + + class InternalError(Exception): """ Internal error during delete with retry. @@ -204,16 +226,16 @@ def get_connection_params( cluster_id = next( filter(lambda cl: cl.main_cluster, clusters) # type: ignore ).id - connection = get_cluster_connection.sync( + resp = get_cluster_connection.sync( account_id, database_id, cluster_id, client=client ) - if connection is None or isinstance(connection, ApiError): - raise OpenApiError( - "Failed to get the connection data to" - f" host {host}, account {account_id}," - f" database with ID {database_id} named {database_name}", - connection, - ) + connection = ensure_type( + openapi.models.ClusterConnection, + resp, + "Failed to get the connection data to" + f" host {host}, account {account_id}," + f" database with ID {database_id} named {database_name}", + ) return { "dsn": f"{connection.dns}:{connection.port}", "user": connection.db_username, @@ -243,19 +265,19 @@ def minutes(x: timedelta) -> int: return x.seconds // 60 idle_time = idle_time or Limits.AUTOSTOP_MIN_IDLE_TIME - cluster_spec = openapi_models.CreateDatabaseInitialCluster( + cluster_spec = openapi.models.CreateDatabaseInitialCluster( name="my-cluster", size=cluster_size, - auto_stop=openapi_models.AutoStop( + auto_stop=openapi.models.AutoStop( enabled=True, idle_time=minutes(idle_time), ), ) LOG.info("Creating database %s", name) - result = create_database.sync( + resp = create_database.sync( self._account_id, client=self._client, - body=openapi_models.CreateDatabase( + body=openapi.models.CreateDatabase( name=name, initial_cluster=cluster_spec, provider="aws", @@ -263,10 +285,13 @@ def minutes(x: timedelta) -> int: stream_type="feature-release", ), ) - if (result is None) or isinstance(result, ApiError): - raise OpenApiError(f"Failed to create database {name}", result) - LOG.info("Created database with ID %s", result.id) - return result + database = ensure_type( + ExasolDatabase, + resp, + f"Failed to create database {name}", + ) + LOG.info("Created database with ID %s", database.id) + return database @contextmanager def _ignore_failures(self, ignore: bool = False): @@ -302,8 +327,8 @@ def delete_database( ) -> None: def is_retry(resp: ApiError) -> bool: return ( - resp.status == 400 and - "cluster is not in a proper state" in resp.message + resp.status == 400 + and "cluster is not in a proper state" in resp.message ) @retry( @@ -342,9 +367,8 @@ def delete_with_retry() -> None: raise DatabaseDeleteError(msg) from ex def list_database_ids(self) -> Iterable[str]: - dbs = list_databases.sync(self._account_id, client=self._client) or [] - if isinstance(dbs, ApiError): - raise OpenApiError("Failed to list databases", dbs) + resp = list_databases.sync(self._account_id, client=self._client) or [] + dbs = ensure_type(list[ExasolDatabase], resp, "Failed to list databases") return (db.id for db in dbs) @contextmanager @@ -372,15 +396,15 @@ def database( def get_database( self, database_id: str, - ) -> openapi.models.ExasolDatabase | None: - result = get_database.sync( + ) -> ExasolDatabase | None: + resp = get_database.sync( self._account_id, database_id, client=self._client, ) - if isinstance(result, ApiError): - raise OpenApiError(f"Failed to get database {database_id}", result) - return result + return ensure_type( + ExasolDatabase, resp, f"Failed to get database {database_id}" + ) def wait_until_running( self, @@ -406,75 +430,73 @@ def poll_status() -> Status: def clusters( self, database_id: str, - ) -> list[openapi_models.Cluster] | None: - result = list_clusters.sync( + ) -> list[openapi.models.Cluster] | None: + resp = list_clusters.sync( self._account_id, database_id, client=self._client, ) - if isinstance(result, ApiError): - raise OpenApiError( - f"Failed to list clusters of database {database_id}", result - ) - return result + return ensure_type( + list[openapi.models.Cluster], + resp, + f"Failed to list clusters of database {database_id}", + ) def get_connection( self, database_id: str, cluster_id: str, - ) -> openapi_models.ClusterConnection | None: - result = get_cluster_connection.sync( + ) -> openapi.models.ClusterConnection | None: + resp = get_cluster_connection.sync( self._account_id, database_id, cluster_id, client=self._client, ) - if isinstance(result, ApiError): - raise OpenApiError( - "Failed to retrieve a connection to " - f"database {database_id} cluster {cluster_id}", - result, - ) - return result + return ensure_type( + openapi.models.ClusterConnection, + resp, + "Failed to retrieve a connection to " + f"database {database_id} cluster {cluster_id}", + ) def list_allowed_ip_ids(self) -> Iterable[str]: - ips = ( - list_allowed_i_ps.sync( - self._account_id, - client=self._client, - ) - or [] + resp = list_allowed_i_ps.sync(self._account_id, client=self._client) + ips = ensure_type( + list[openapi.models.AllowedIP], + resp, + "Failed to retrieve the list of allowed ips", ) - if isinstance(ips, ApiError): - raise OpenApiError("Failed to retrieve the list of allowed ips", ips) - return (x.id for x in ips) + return (x.id for x in ips or []) def add_allowed_ip( self, cidr_ip: str = "0.0.0.0/0", - ) -> openapi_models.allowed_ip.AllowedIP | None: + ) -> openapi.models.AllowedIP | None: """ Suggested values for cidr_ip: * 185.17.207.78/32 * 0.0.0.0/0 = all ipv4 * ::/0 = all ipv6 """ - rule = openapi_models.CreateAllowedIP( + rule = openapi.models.CreateAllowedIP( name=timestamp_name(), cidr_ip=cidr_ip, ) - result = add_allowed_ip.sync( + resp = add_allowed_ip.sync( self._account_id, client=self._client, body=rule, ) - if isinstance(result, ApiError): - raise OpenApiError(f"Failed to add allowed IP address {cidr_ip}", result) - return result + return ensure_type( + openapi.models.AllowedIP, + resp, + f"Failed to add allowed IP address {cidr_ip}", + ) - def delete_allowed_ip(self, id: str, ignore_failures=False): + def delete_allowed_ip(self, id: str, ignore_failures=False) -> Any | None: with self._ignore_failures(ignore_failures) as client: - return delete_allowed_ip.sync_detailed(self._account_id, id, client=client) + return delete_allowed_ip.sync(self._account_id, id, client=client) @contextmanager def allowed_ip( diff --git a/test/unit/test_api_access.py b/test/unit/test_api_access.py index bc166852..b39b1c6b 100644 --- a/test/unit/test_api_access.py +++ b/test/unit/test_api_access.py @@ -11,7 +11,6 @@ ) from exasol.saas.client.openapi.models.api_error import ApiError -import pytest def response(status_code: int, message: str, spec=None): return Mock(spec, status=status_code, message=message) @@ -22,7 +21,8 @@ def api_error(status_code: int, message: str): RETRY = api_error( - 400, "Operation is not allowed:The cluster is not in a proper state!", + 400, + "Operation is not allowed:The cluster is not in a proper state!", ) @@ -33,6 +33,7 @@ def api_mock(): def delete_mock(monkeypatch, side_effect) -> Mock: from exasol.saas.client.api_access import delete_database as api + mock = Mock(side_effect=side_effect) monkeypatch.setattr(api, "sync", mock) return mock From 3c3bc0639ac62f24416bff99aa9a7d0090c8b383 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 23 Feb 2026 12:16:09 +0100 Subject: [PATCH 39/47] Fixed TypeError TypeError: isinstance() argument 2 cannot be a parameterized generic --- exasol/saas/client/api_access.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index 1b0832ed..2d16771c 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -113,8 +113,9 @@ def __init__(self, message: str, error: ApiError | None): T = TypeVar("T") +# TODO: Create Unit test def ensure_type( - expected: type[T], + expected: type, response: T | ApiError | None, message: str, ) -> T: From 5ee8180f17bb3f0df1a7a39bd0c02c9eec5f25f2 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 23 Feb 2026 12:31:27 +0100 Subject: [PATCH 40/47] Fixed type error --- exasol/saas/client/api_access.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index 2d16771c..8a0a97dc 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -124,7 +124,7 @@ def ensure_type( correct type. Otherwise raise an OpenApiError. """ if isinstance(response, expected): - return response + return cast(T, response) raise OpenApiError(message, cast(ApiError, response)) From 70109cb127c3069ea03591e563378332193e0d68 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 23 Feb 2026 13:48:36 +0100 Subject: [PATCH 41/47] Added unit tests for ensure_type() --- exasol/saas/client/api_access.py | 1 - test/unit/test_ensure_type.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 test/unit/test_ensure_type.py diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index 8a0a97dc..aa6e784d 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -113,7 +113,6 @@ def __init__(self, message: str, error: ApiError | None): T = TypeVar("T") -# TODO: Create Unit test def ensure_type( expected: type, response: T | ApiError | None, diff --git a/test/unit/test_ensure_type.py b/test/unit/test_ensure_type.py new file mode 100644 index 00000000..f25f16b0 --- /dev/null +++ b/test/unit/test_ensure_type.py @@ -0,0 +1,28 @@ +from test.util import not_raises + +import pytest +from unittest.mock import Mock + +from exasol.saas.client.api_access import ensure_type, OpenApiError +from exasol.saas.client.openapi.models.api_error import ApiError + + +class MyClass(): + pass + + +def test_ensure_type_success(): + response = MyClass() + with not_raises(Exception): + actual = ensure_type(MyClass, response, "error message") + assert isinstance(actual, MyClass) + + +@pytest.mark.parametrize("object", [ + Mock(ApiError), + Mock(), +]) +def test_ensure_type_raises_exception(object): + with pytest.raises(OpenApiError) as ex: + ensure_type(MyClass, object, "error message") + assert ex.api_error From ed7320dd78ad38251aa00bf42ccc5ae4aba82bd7 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 23 Feb 2026 13:56:37 +0100 Subject: [PATCH 42/47] nox -s format:fix --- test/unit/test_ensure_type.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/test/unit/test_ensure_type.py b/test/unit/test_ensure_type.py index f25f16b0..8baf2ebc 100644 --- a/test/unit/test_ensure_type.py +++ b/test/unit/test_ensure_type.py @@ -1,13 +1,16 @@ from test.util import not_raises +from unittest.mock import Mock import pytest -from unittest.mock import Mock -from exasol.saas.client.api_access import ensure_type, OpenApiError +from exasol.saas.client.api_access import ( + OpenApiError, + ensure_type, +) from exasol.saas.client.openapi.models.api_error import ApiError -class MyClass(): +class MyClass: pass @@ -18,10 +21,13 @@ def test_ensure_type_success(): assert isinstance(actual, MyClass) -@pytest.mark.parametrize("object", [ - Mock(ApiError), - Mock(), -]) +@pytest.mark.parametrize( + "object", + [ + Mock(ApiError), + Mock(), + ], +) def test_ensure_type_raises_exception(object): with pytest.raises(OpenApiError) as ex: ensure_type(MyClass, object, "error message") From ec5cfca5138634f467e613484fa48c4b6532626e Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 23 Feb 2026 13:58:26 +0100 Subject: [PATCH 43/47] Fixed unit test --- test/unit/test_ensure_type.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/unit/test_ensure_type.py b/test/unit/test_ensure_type.py index 8baf2ebc..121ab5d1 100644 --- a/test/unit/test_ensure_type.py +++ b/test/unit/test_ensure_type.py @@ -29,6 +29,5 @@ def test_ensure_type_success(): ], ) def test_ensure_type_raises_exception(object): - with pytest.raises(OpenApiError) as ex: + with pytest.raises(OpenApiError): ensure_type(MyClass, object, "error message") - assert ex.api_error From 81e5ae5cee1d762edcf36a55f27072aabf8dd897 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 23 Feb 2026 14:24:43 +0100 Subject: [PATCH 44/47] Refactored type handling in ensure_type --- exasol/saas/client/api_access.py | 18 +++++++++++------- test/unit/test_ensure_type.py | 20 ++++++++++++++------ 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index aa6e784d..e81b1333 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -124,7 +124,8 @@ def ensure_type( """ if isinstance(response, expected): return cast(T, response) - raise OpenApiError(message, cast(ApiError, response)) + api_error = response if isinstance(response, ApiError) else None + raise OpenApiError(message, api_error) class InternalError(Exception): @@ -431,10 +432,13 @@ def clusters( self, database_id: str, ) -> list[openapi.models.Cluster] | None: - resp = list_clusters.sync( - self._account_id, - database_id, - client=self._client, + resp = ( + list_clusters.sync( + self._account_id, + database_id, + client=self._client, + ) + or [] ) return ensure_type( list[openapi.models.Cluster], @@ -461,13 +465,13 @@ def get_connection( ) def list_allowed_ip_ids(self) -> Iterable[str]: - resp = list_allowed_i_ps.sync(self._account_id, client=self._client) + resp = list_allowed_i_ps.sync(self._account_id, client=self._client) or [] ips = ensure_type( list[openapi.models.AllowedIP], resp, "Failed to retrieve the list of allowed ips", ) - return (x.id for x in ips or []) + return (x.id for x in ips) def add_allowed_ip( self, diff --git a/test/unit/test_ensure_type.py b/test/unit/test_ensure_type.py index 121ab5d1..959c12f3 100644 --- a/test/unit/test_ensure_type.py +++ b/test/unit/test_ensure_type.py @@ -22,12 +22,20 @@ def test_ensure_type_success(): @pytest.mark.parametrize( - "object", + "object, suffix", [ - Mock(ApiError), - Mock(), + pytest.param( + Mock(ApiError, message="inner error"), + ": inner error.", + id="api_error", + ), + pytest.param(Mock(), "", id="other_class"), + pytest.param(None, "", id="none"), ], ) -def test_ensure_type_raises_exception(object): - with pytest.raises(OpenApiError): - ensure_type(MyClass, object, "error message") +def test_ensure_type_raises_exception(object, suffix): + prefix = "some error message" + expected_error = prefix + suffix + with pytest.raises(OpenApiError, match=expected_error) as ex: + ensure_type(MyClass, object, prefix) + assert str(ex.value) == expected_error From 2020a8da84c0e415726d98aa3b0394c50a7c01b1 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 23 Feb 2026 15:40:12 +0100 Subject: [PATCH 45/47] Fixed type errors --- exasol/saas/client/api_access.py | 19 +++++------- poetry.lock | 47 +++++++++++++++++++++++++++++- pyproject.toml | 5 ++-- test/integration/test_databases.py | 1 - 4 files changed, 55 insertions(+), 17 deletions(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index e81b1333..a72df877 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -287,9 +287,7 @@ def minutes(x: timedelta) -> int: ), ) database = ensure_type( - ExasolDatabase, - resp, - f"Failed to create database {name}", + ExasolDatabase, resp, f"Failed to create database {name}" ) LOG.info("Created database with ID %s", database.id) return database @@ -369,7 +367,8 @@ def delete_with_retry() -> None: def list_database_ids(self) -> Iterable[str]: resp = list_databases.sync(self._account_id, client=self._client) or [] - dbs = ensure_type(list[ExasolDatabase], resp, "Failed to list databases") + # actually list[ExasolDatabase] + dbs = ensure_type(list, resp, "Failed to list databases") return (db.id for db in dbs) @contextmanager @@ -440,10 +439,9 @@ def clusters( ) or [] ) + # actually list[openapi.models.Cluster] return ensure_type( - list[openapi.models.Cluster], - resp, - f"Failed to list clusters of database {database_id}", + list, resp, f"Failed to list clusters of database {database_id}" ) def get_connection( @@ -466,11 +464,8 @@ def get_connection( def list_allowed_ip_ids(self) -> Iterable[str]: resp = list_allowed_i_ps.sync(self._account_id, client=self._client) or [] - ips = ensure_type( - list[openapi.models.AllowedIP], - resp, - "Failed to retrieve the list of allowed ips", - ) + # actually list[openapi.models.AllowedIP] + ips = ensure_type(list, resp, "Failed to retrieve the list of allowed ips") return (x.id for x in ips) def add_allowed_ip( diff --git a/poetry.lock b/poetry.lock index a70afc8b..4f16e693 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2233,6 +2233,19 @@ lint = ["black", "isort", "mypy"] sqlalchemy = ["sqlalchemy (>=2.0.0)"] test = ["pytest"] +[[package]] +name = "packaging" +version = "25.0" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +markers = "python_version <= \"3.11\"" +files = [ + {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, + {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, +] + [[package]] name = "packaging" version = "26.0" @@ -2240,6 +2253,7 @@ description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" groups = ["dev"] +markers = "python_version >= \"3.12\"" files = [ {file = "packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529"}, {file = "packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4"}, @@ -2447,6 +2461,7 @@ description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs optional = false python-versions = ">=3.8" groups = ["dev"] +markers = "python_version >= \"3.12\"" files = [ {file = "pyasn1-0.6.2-py3-none-any.whl", hash = "sha256:1eb26d860996a18e9b6ed05e7aae0e9fc21619fcee6af91cca9bad4fbea224bf"}, {file = "pyasn1-0.6.2.tar.gz", hash = "sha256:9b59a2b25ba7e4f8197db7686c09fb33e658b98339fadb826e9512629017833b"}, @@ -2628,6 +2643,7 @@ description = "Exasol python driver with extra features" optional = false python-versions = "<4,>=3.9.2" groups = ["dev"] +markers = "python_version >= \"3.12\"" files = [ {file = "pyexasol-1.3.0-py3-none-any.whl", hash = "sha256:0bb076346dcb33b36031a2633d6e7b9982f8411b95e770ad8017801ee438a689"}, {file = "pyexasol-1.3.0.tar.gz", hash = "sha256:44e5be7245b92343634b0b66a81b62be2fb4b1ca485d4e0f86c0583d5a2cf6b5"}, @@ -2649,6 +2665,34 @@ pyarrow = ["pyarrow (>=21.0.0,<22.0.0)"] rapidjson = ["python-rapidjson"] ujson = ["ujson"] +[[package]] +name = "pyexasol" +version = "2.0.0" +description = "Exasol python driver with extra features" +optional = false +python-versions = "<3.15,>=3.10" +groups = ["dev"] +markers = "python_version <= \"3.11\"" +files = [ + {file = "pyexasol-2.0.0-py3-none-any.whl", hash = "sha256:348dacb2df8286ca13676d933f63c714e792369b967c603bb04d08ba641c3526"}, + {file = "pyexasol-2.0.0.tar.gz", hash = "sha256:fdb0b98a246dbdc3746b9ad8f5012bd3166daad76c136e9839a841e0abe24bac"}, +] + +[package.dependencies] +cryptography = ">=45.0.7" +packaging = ">=24.1.0,<26.0.0" +websocket-client = ">=1.0.1,<1.9.0" + +[package.extras] +all = ["orjson (>=3.6,<4.0)", "pandas (>=2.0.0,<3.0.0)", "polars (>=1.10.0,<2.0.0)", "pproxy", "pyarrow (>=21.0.0)", "python-rapidjson (>=1.21.0,<2.0.0)", "ujson (>=5.10.0,<6.0.0)"] +examples = ["pproxy"] +orjson = ["orjson (>=3.6,<4.0)"] +pandas = ["pandas (>=2.0.0,<3.0.0)"] +polars = ["polars (>=1.10.0,<2.0.0)"] +pyarrow = ["pyarrow (>=21.0.0)"] +rapidjson = ["python-rapidjson (>=1.21.0,<2.0.0)"] +ujson = ["ujson (>=5.10.0,<6.0.0)"] + [[package]] name = "pyfakefs" version = "5.9.3" @@ -3107,6 +3151,7 @@ description = "Pure-Python RSA implementation" optional = false python-versions = "<4,>=3.6" groups = ["dev"] +markers = "python_version >= \"3.12\"" files = [ {file = "rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762"}, {file = "rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75"}, @@ -4118,4 +4163,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = ">=3.10.0,<4.0" -content-hash = "a8ad8c5a632c319daaf770b254a2c48dda51087f9a41d521c626d9f2b725ea65" +content-hash = "76fa1e897913a918030d1125a64d25e6de0ccc32efdc7e38c2bdfd83d1a30eae" diff --git a/pyproject.toml b/pyproject.toml index 26b4312f..abe04084 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -49,7 +49,7 @@ pytest = "^7.1.1" pytest-mock = "^3.7.0" exasol-toolbox = "^5.1.1" openapi-python-client = ">=0.26" -pyexasol = ">=1.0.0, <2" +pyexasol = ">=1.0.0, <3" toml = "^0.10.2" types-python-dateutil = "^2.9.0.20250516" @@ -97,8 +97,7 @@ ignore-paths = [ [[tool.mypy.overrides]] module = [ - "test.conftest.*", - "test.*", + "test.*.conftest.*", ] ignore_errors = true ignore_missing_imports = true diff --git a/test/integration/test_databases.py b/test/integration/test_databases.py index 4f269e6a..65d19381 100644 --- a/test/integration/test_databases.py +++ b/test/integration/test_databases.py @@ -1,4 +1,3 @@ -import datetime import logging from datetime import ( datetime, From 47d5aa650d8d3c9b6ef6812a9d75b4a08e34b42e Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 23 Feb 2026 15:41:35 +0100 Subject: [PATCH 46/47] Re-Added type[T] --- exasol/saas/client/api_access.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exasol/saas/client/api_access.py b/exasol/saas/client/api_access.py index a72df877..2c0d8a4e 100644 --- a/exasol/saas/client/api_access.py +++ b/exasol/saas/client/api_access.py @@ -114,7 +114,7 @@ def __init__(self, message: str, error: ApiError | None): def ensure_type( - expected: type, + expected: type[T], response: T | ApiError | None, message: str, ) -> T: From 1314bad3e1904eee8bb77e501bb11d56dbbae268 Mon Sep 17 00:00:00 2001 From: ckunki Date: Mon, 23 Feb 2026 15:46:17 +0100 Subject: [PATCH 47/47] Updated pyexasol --- poetry.lock | 77 ++------------------------------------------------ pyproject.toml | 4 +-- 2 files changed, 4 insertions(+), 77 deletions(-) diff --git a/poetry.lock b/poetry.lock index 4f16e693..40baa0f4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2240,25 +2240,11 @@ description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" groups = ["dev"] -markers = "python_version <= \"3.11\"" files = [ {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, ] -[[package]] -name = "packaging" -version = "26.0" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -markers = "python_version >= \"3.12\"" -files = [ - {file = "packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529"}, - {file = "packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4"}, -] - [[package]] name = "pathspec" version = "1.0.4" @@ -2454,19 +2440,6 @@ files = [ [package.dependencies] defusedxml = ">=0.7.1,<0.8.0" -[[package]] -name = "pyasn1" -version = "0.6.2" -description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -markers = "python_version >= \"3.12\"" -files = [ - {file = "pyasn1-0.6.2-py3-none-any.whl", hash = "sha256:1eb26d860996a18e9b6ed05e7aae0e9fc21619fcee6af91cca9bad4fbea224bf"}, - {file = "pyasn1-0.6.2.tar.gz", hash = "sha256:9b59a2b25ba7e4f8197db7686c09fb33e658b98339fadb826e9512629017833b"}, -] - [[package]] name = "pycparser" version = "3.0" @@ -2636,35 +2609,6 @@ files = [ [package.dependencies] typing-extensions = ">=4.14.1" -[[package]] -name = "pyexasol" -version = "1.3.0" -description = "Exasol python driver with extra features" -optional = false -python-versions = "<4,>=3.9.2" -groups = ["dev"] -markers = "python_version >= \"3.12\"" -files = [ - {file = "pyexasol-1.3.0-py3-none-any.whl", hash = "sha256:0bb076346dcb33b36031a2633d6e7b9982f8411b95e770ad8017801ee438a689"}, - {file = "pyexasol-1.3.0.tar.gz", hash = "sha256:44e5be7245b92343634b0b66a81b62be2fb4b1ca485d4e0f86c0583d5a2cf6b5"}, -] - -[package.dependencies] -cryptography = ">=45.0.7" -packaging = "*" -rsa = "*" -websocket-client = ">=1.0.1,<1.9.0" - -[package.extras] -all = ["orjson (>=3.6)", "pandas (>=2,<3)", "polars (>=1.10,<2.0)", "pproxy", "pyarrow (>=21.0.0,<22.0.0)", "python-rapidjson", "ujson"] -examples = ["pproxy"] -orjson = ["orjson (>=3.6)"] -pandas = ["pandas (>=2,<3)"] -polars = ["polars (>=1.10,<2.0)"] -pyarrow = ["pyarrow (>=21.0.0,<22.0.0)"] -rapidjson = ["python-rapidjson"] -ujson = ["ujson"] - [[package]] name = "pyexasol" version = "2.0.0" @@ -2672,7 +2616,6 @@ description = "Exasol python driver with extra features" optional = false python-versions = "<3.15,>=3.10" groups = ["dev"] -markers = "python_version <= \"3.11\"" files = [ {file = "pyexasol-2.0.0-py3-none-any.whl", hash = "sha256:348dacb2df8286ca13676d933f63c714e792369b967c603bb04d08ba641c3526"}, {file = "pyexasol-2.0.0.tar.gz", hash = "sha256:fdb0b98a246dbdc3746b9ad8f5012bd3166daad76c136e9839a841e0abe24bac"}, @@ -3144,22 +3087,6 @@ files = [ {file = "roman-5.2.tar.gz", hash = "sha256:275fe9f46290f7d0ffaea1c33251b92b8e463ace23660508ceef522e7587cb6f"}, ] -[[package]] -name = "rsa" -version = "4.9.1" -description = "Pure-Python RSA implementation" -optional = false -python-versions = "<4,>=3.6" -groups = ["dev"] -markers = "python_version >= \"3.12\"" -files = [ - {file = "rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762"}, - {file = "rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75"}, -] - -[package.dependencies] -pyasn1 = ">=0.1.3" - [[package]] name = "ruamel-yaml" version = "0.18.16" @@ -4162,5 +4089,5 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" -python-versions = ">=3.10.0,<4.0" -content-hash = "76fa1e897913a918030d1125a64d25e6de0ccc32efdc7e38c2bdfd83d1a30eae" +python-versions = ">=3.10.0,<3.15" +content-hash = "481b7e6125466c0f91e7c93b9d6e6662576213af3f7b63b1223c32b9ce5f81b7" diff --git a/pyproject.toml b/pyproject.toml index abe04084..f6c6d271 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "exasol-saas-api" version = "2.8.0" -requires-python = ">=3.10.0,<4.0" +requires-python = ">=3.10.0,<3.15" description = "API enabling Python applications connecting to Exasol database SaaS instances and using their SaaS services" authors = [ {name="Christoph Kuhnke", email="christoph.kuhnke@exasol.com"}, @@ -49,7 +49,7 @@ pytest = "^7.1.1" pytest-mock = "^3.7.0" exasol-toolbox = "^5.1.1" openapi-python-client = ">=0.26" -pyexasol = ">=1.0.0, <3" +pyexasol = ">=2, <3" toml = "^0.10.2" types-python-dateutil = "^2.9.0.20250516"