From aa927da5562c5892e59b3f68ba20c17615a7c4e6 Mon Sep 17 00:00:00 2001 From: Siarhei Siniak Date: Wed, 27 Aug 2025 16:41:44 +0300 Subject: [PATCH] [+] improve checks service --- docker-compose.yml | 4 + docker/checks/.env | 1 + docker/checks/Dockerfile | 2 +- ...ne_fxreader_pr34-0.1.5.25-py3-none-any.whl | 3 + ...ne_fxreader_pr34-0.1.5.26-py3-none-any.whl | 3 + docker/checks/requirements.in | 2 +- docker/checks/requirements.txt | 51 ++++- docker/checks/rest.py | 6 + python/meson.build | 2 +- .../pr34/commands_typed/async_api/fastapi.py | 8 +- .../pr34/commands_typed/async_api/settings.py | 29 +++ python/pyproject.toml | 12 +- python/requirements.txt | 204 ++++++++++-------- ...ne_fxreader_pr34-0.1.5.25-py3-none-any.whl | 3 + ...ne_fxreader_pr34-0.1.5.26-py3-none-any.whl | 3 + 15 files changed, 232 insertions(+), 101 deletions(-) create mode 100644 docker/checks/deps/whl/online_fxreader_pr34-0.1.5.25-py3-none-any.whl create mode 100644 docker/checks/deps/whl/online_fxreader_pr34-0.1.5.26-py3-none-any.whl create mode 100644 python/online/fxreader/pr34/commands_typed/async_api/settings.py create mode 100644 releases/whl/online_fxreader_pr34-0.1.5.25-py3-none-any.whl create mode 100644 releases/whl/online_fxreader_pr34-0.1.5.26-py3-none-any.whl diff --git a/docker-compose.yml b/docker-compose.yml index 68e91a1..c118626 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -37,6 +37,10 @@ services: init: true env_file: .envs/checks.patched.env + command: + - python3 + - -m + - online.fxreader.pr34.commands_typed.async_api.fastapi cpanel: build: diff --git a/docker/checks/.env b/docker/checks/.env index 237cc4a..28218e9 100644 --- a/docker/checks/.env +++ b/docker/checks/.env @@ -2,3 +2,4 @@ # UVICORN_PORT=80 # HTTP_AUTH_USERNAME=test # HTTP_AUTH_PASSWORD=blah +APPS='["rest:get_router:"]' diff --git a/docker/checks/Dockerfile b/docker/checks/Dockerfile index 5a1d132..cf5b2ec 100644 --- a/docker/checks/Dockerfile +++ b/docker/checks/Dockerfile @@ -23,4 +23,4 @@ RUN \ COPY ./rest.py ./rest.py -CMD ["python3", "rest.py"] +# CMD ["python3", "rest.py"] diff --git a/docker/checks/deps/whl/online_fxreader_pr34-0.1.5.25-py3-none-any.whl b/docker/checks/deps/whl/online_fxreader_pr34-0.1.5.25-py3-none-any.whl new file mode 100644 index 0000000..a1d2890 --- /dev/null +++ b/docker/checks/deps/whl/online_fxreader_pr34-0.1.5.25-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b70a3fb2fe6652c1ff8c14e464a5baf80a5d9da9e39204eeba40490bf13deca +size 74822 diff --git a/docker/checks/deps/whl/online_fxreader_pr34-0.1.5.26-py3-none-any.whl b/docker/checks/deps/whl/online_fxreader_pr34-0.1.5.26-py3-none-any.whl new file mode 100644 index 0000000..58b307f --- /dev/null +++ b/docker/checks/deps/whl/online_fxreader_pr34-0.1.5.26-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3066558ef4a5dd2dfda85c3d9fb7d50014774d500187da86c6cc0795fca3be10 +size 74831 diff --git a/docker/checks/requirements.in b/docker/checks/requirements.in index 23b90c1..ef12ab4 100644 --- a/docker/checks/requirements.in +++ b/docker/checks/requirements.in @@ -1,3 +1,3 @@ -online.fxreader.pr34[django]>=0.1.5.24 +online.fxreader.pr34[django,fastapi]>=0.1.5.24 fastapi uvicorn diff --git a/docker/checks/requirements.txt b/docker/checks/requirements.txt index 48f95c3..2b5eb1f 100644 --- a/docker/checks/requirements.txt +++ b/docker/checks/requirements.txt @@ -27,7 +27,9 @@ django==5.2.5 \ fastapi==0.116.1 \ --hash=sha256:c46ac7c312df840f0c9e220f7964bada936781bc4e2e6eb71f1c4d7553786565 \ --hash=sha256:ed52cbf946abfd70c5a0dccb24673f0670deeb517a88b3544d03c2a6bf283143 - # via -r requirements.in + # via + # -r requirements.in + # online-fxreader-pr34 h11==0.16.0 \ --hash=sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1 \ --hash=sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86 @@ -147,8 +149,8 @@ mypy-extensions==1.1.0 \ --hash=sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505 \ --hash=sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558 # via mypy -online-fxreader-pr34==0.1.5.24 \ - --hash=sha256:5e6ad1193bbdb859c2f0b1b407ccf944880212fd339139beede1eb31b4b2ce8a +online-fxreader-pr34==0.1.5.26 \ + --hash=sha256:3066558ef4a5dd2dfda85c3d9fb7d50014774d500187da86c6cc0795fca3be10 # via -r requirements.in pathspec==0.12.1 \ --hash=sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 \ @@ -371,7 +373,48 @@ typing-inspection==0.4.1 \ uvicorn==0.35.0 \ --hash=sha256:197535216b25ff9b785e29a0b79199f55222193d47f820816e7da751e9bc8d4a \ --hash=sha256:bc662f087f7cf2ce11a1d7fd70b90c9f98ef2e2831556dd078d131b96cc94a01 - # via -r requirements.in + # via + # -r requirements.in + # online-fxreader-pr34 +uvloop==0.21.0 \ + --hash=sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0 \ + --hash=sha256:10d66943def5fcb6e7b37310eb6b5639fd2ccbc38df1177262b0640c3ca68c1f \ + --hash=sha256:10da8046cc4a8f12c91a1c39d1dd1585c41162a15caaef165c2174db9ef18bdc \ + --hash=sha256:17df489689befc72c39a08359efac29bbee8eee5209650d4b9f34df73d22e414 \ + --hash=sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f \ + --hash=sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d \ + --hash=sha256:221f4f2a1f46032b403bf3be628011caf75428ee3cc204a22addf96f586b19fd \ + --hash=sha256:2d1f581393673ce119355d56da84fe1dd9d2bb8b3d13ce792524e1607139feff \ + --hash=sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c \ + --hash=sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3 \ + --hash=sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d \ + --hash=sha256:460def4412e473896ef179a1671b40c039c7012184b627898eea5072ef6f017a \ + --hash=sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb \ + --hash=sha256:46923b0b5ee7fc0020bef24afe7836cb068f5050ca04caf6b487c513dc1a20b2 \ + --hash=sha256:53e420a3afe22cdcf2a0f4846e377d16e718bc70103d7088a4f7623567ba5fb0 \ + --hash=sha256:5ee4d4ef48036ff6e5cfffb09dd192c7a5027153948d85b8da7ff705065bacc6 \ + --hash=sha256:67dd654b8ca23aed0a8e99010b4c34aca62f4b7fce88f39d452ed7622c94845c \ + --hash=sha256:787ae31ad8a2856fc4e7c095341cccc7209bd657d0e71ad0dc2ea83c4a6fa8af \ + --hash=sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc \ + --hash=sha256:87c43e0f13022b998eb9b973b5e97200c8b90823454d4bc06ab33829e09fb9bb \ + --hash=sha256:88cb67cdbc0e483da00af0b2c3cdad4b7c61ceb1ee0f33fe00e09c81e3a6cb75 \ + --hash=sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb \ + --hash=sha256:a5c39f217ab3c663dc699c04cbd50c13813e31d917642d459fdcec07555cc553 \ + --hash=sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e \ + --hash=sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6 \ + --hash=sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d \ + --hash=sha256:bc09f0ff191e61c2d592a752423c767b4ebb2986daa9ed62908e2b1b9a9ae206 \ + --hash=sha256:bd53ecc9a0f3d87ab847503c2e1552b690362e005ab54e8a48ba97da3924c0dc \ + --hash=sha256:bfd55dfcc2a512316e65f16e503e9e450cab148ef11df4e4e679b5e8253a5281 \ + --hash=sha256:c097078b8031190c934ed0ebfee8cc5f9ba9642e6eb88322b9958b649750f72b \ + --hash=sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8 \ + --hash=sha256:e678ad6fe52af2c58d2ae3c73dc85524ba8abe637f134bf3564ed07f555c5e79 \ + --hash=sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f \ + --hash=sha256:f0ce1b49560b1d2d8a2977e3ba4afb2414fb46b86a1b64056bc4ab929efdafbe \ + --hash=sha256:f38b2e090258d051d68a5b14d1da7203a3c3677321cf32a95a6f4db4dd8b6f26 \ + --hash=sha256:f3df876acd7ec037a3d005b3ab85a7e4110422e4d9c1571d4fc89b0fc41b6816 \ + --hash=sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2 + # via online-fxreader-pr34 xmltodict==0.14.2 \ --hash=sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553 \ --hash=sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac diff --git a/docker/checks/rest.py b/docker/checks/rest.py index f851293..2151cc5 100644 --- a/docker/checks/rest.py +++ b/docker/checks/rest.py @@ -1,7 +1,13 @@ +import fastapi from online.fxreader.pr34.commands_typed import metrics def main() -> None: raise NotImplementedError +def get_router() -> fastapi.APIRouter: + router = fastapi.APIRouter() + + return router + if __name__ == '__main__': main() diff --git a/python/meson.build b/python/meson.build index 2ccb7e7..592472b 100644 --- a/python/meson.build +++ b/python/meson.build @@ -5,7 +5,7 @@ project( ).stdout().strip('\n'), # 'online.fxreader.uv', # ['c', 'cpp'], - version: '0.1.5.24', + version: '0.1.5.26', # default_options: [ # 'cpp_std=c++23', # # 'prefer_static=true', diff --git a/python/online/fxreader/pr34/commands_typed/async_api/fastapi.py b/python/online/fxreader/pr34/commands_typed/async_api/fastapi.py index 4d16bd2..b75cc47 100644 --- a/python/online/fxreader/pr34/commands_typed/async_api/fastapi.py +++ b/python/online/fxreader/pr34/commands_typed/async_api/fastapi.py @@ -31,13 +31,7 @@ def create_app() -> fastapi.FastAPI: logger.info(dict(msg='start loading app = {}'.format(app_config))) app_module, app_method, app_prefix = app_config.split(':') - app_router = cast( - Callable[[], Any], - getattr( - importlib.import_module(app_module), - app_method - ) - )() + app_router = cast(Callable[[], Any], getattr(importlib.import_module(app_module), app_method))() assert isinstance(app_router, fastapi.APIRouter) diff --git a/python/online/fxreader/pr34/commands_typed/async_api/settings.py b/python/online/fxreader/pr34/commands_typed/async_api/settings.py new file mode 100644 index 0000000..d806260 --- /dev/null +++ b/python/online/fxreader/pr34/commands_typed/async_api/settings.py @@ -0,0 +1,29 @@ +import pydantic +import pydantic_settings + +from typing import ( + ClassVar, + Optional, + Annotated, +) + + +class Settings(pydantic_settings.BaseSettings): + apps: Annotated[ + list[str], + pydantic.Field( + default_factory=list, + ), + ] + + uvicorn_port: int = 80 + uvicorn_host: str = '127.0.0.1' + + _singleton: ClassVar[Optional['Settings']] = None + + @classmethod + def singleton(cls) -> 'Settings': + if cls._singleton is None: + cls._singleton = Settings.model_validate({}) + + return cls._singleton diff --git a/python/pyproject.toml b/python/pyproject.toml index 02c5ebc..fdeff17 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -27,11 +27,17 @@ dependencies = [ [project.optional-dependencies] crypto = [ - 'cryptography', + 'cryptography', ] django = [ - 'django', + 'django', +] + +fastapi = [ + 'uvicorn', + 'fastapi', + 'uvloop', ] early = [ @@ -47,6 +53,8 @@ lint = [ 'django-stubs', 'pyright', 'ruff', + 'fastapi', + 'uvicorn', 'pip==25.1', # 'tomlkit', ] diff --git a/python/requirements.txt b/python/requirements.txt index 7724b90..254c85a 100644 --- a/python/requirements.txt +++ b/python/requirements.txt @@ -1,9 +1,13 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --generate-hashes -o /home/nartes/Documents/current/freelance-project-34-marketing-blog/python/requirements.txt /tmp/requirementsb22u9wh4.in +# uv pip compile --generate-hashes -o /home/nartes/Documents/current/freelance-project-34-marketing-blog/python/requirements.txt /tmp/requirements6816cy66.in annotated-types==0.7.0 \ --hash=sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 \ --hash=sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89 # via pydantic +anyio==4.10.0 \ + --hash=sha256:3f3fae35c96039744587aa5b8371e7e8e603c0702999535961dd336026973ba6 \ + --hash=sha256:60e474ac86736bbfd6f210f7a61218939c318f43f9972497381f1c5e930ed3d1 + # via starlette argcomplete==3.6.2 \ --hash=sha256:65b3133a29ad53fb42c48cf5114752c7ab66c1c38544fdf6460f450c09b42591 \ --hash=sha256:d0519b1bc867f5f4f4713c41ad0aba73a4a5f007449716b16f385f2166dc6adf @@ -15,7 +19,7 @@ asgiref==3.9.1 \ build==1.3.0 \ --hash=sha256:698edd0ea270bde950f53aed21f3a0135672206f3911e0176261a31e0e07b397 \ --hash=sha256:7145f0b5061ba90a1500d60bd1b13ca0a8a4cebdd0cc16ed8adf1c0e739f43b4 - # via -r /tmp/requirementsb22u9wh4.in + # via -r /tmp/requirements6816cy66.in cffi==1.17.1 \ --hash=sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8 \ --hash=sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2 \ @@ -85,6 +89,10 @@ cffi==1.17.1 \ --hash=sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87 \ --hash=sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b # via cryptography +click==8.2.1 \ + --hash=sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202 \ + --hash=sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b + # via uvicorn cryptography==45.0.6 \ --hash=sha256:00e8724bdad672d75e6f069b27970883179bd472cd24a63f6e620ca7e41cc0c5 \ --hash=sha256:048e7ad9e08cf4c0ab07ff7f36cc3115924e22e2266e034450a890d9e312dd74 \ @@ -123,7 +131,7 @@ cryptography==45.0.6 \ --hash=sha256:f4028f29a9f38a2025abedb2e409973709c660d44319c61762202206ed577c42 \ --hash=sha256:f68f833a9d445cc49f01097d95c83a850795921b3f7cc6488731e69bde3288da \ --hash=sha256:fc022c1fa5acff6def2fc6d7819bbbd31ccddfe67d075331a65d9cfb28a20983 - # via -r /tmp/requirementsb22u9wh4.in + # via -r /tmp/requirements6816cy66.in django==5.2.5 \ --hash=sha256:0745b25681b129a77aae3d4f6549b62d3913d74407831abaa0d9021a03954bae \ --hash=sha256:2b2ada0ee8a5ff743a40e2b9820d1f8e24c11bac9ae6469cd548f0057ea6ddcd @@ -133,78 +141,90 @@ django==5.2.5 \ django-stubs==5.2.2 \ --hash=sha256:2a04b510c7a812f88223fd7e6d87fb4ea98717f19c8e5c8b59691d83ad40a8a6 \ --hash=sha256:79bd0fdbc78958a8f63e0b062bd9d03f1de539664476c0be62ade5f063c9e41e - # via -r /tmp/requirementsb22u9wh4.in + # via -r /tmp/requirements6816cy66.in django-stubs-ext==5.2.2 \ --hash=sha256:8833bbe32405a2a0ce168d3f75a87168f61bd16939caf0e8bf173bccbd8a44c5 \ --hash=sha256:d9d151b919fe2438760f5bd938f03e1cb08c84d0651f9e5917f1313907e42683 # via django-stubs -marisa-trie==1.3.0 \ - --hash=sha256:0111d6067c5a52141585a9213e073aa0d0438ba1c6febc40f827c5cadd3aa5d8 \ - --hash=sha256:034e483bd35ab6d136d8a91f43088dc78549394cf3787fdeebca144e2e4c82df \ - --hash=sha256:04bf4a128d8ec1881477364269034df620ebcec0ab0fd54bf2c5ee4779df10fe \ - --hash=sha256:05ba1011626d8845643a29449e1de5faed01e9e2b261825ac67a9675ce7f7426 \ - --hash=sha256:06ad6722d6d3f3be1f1a9b2b61afe8836e37d9f7ac4d23ebeb4b1acb043b2559 \ - --hash=sha256:0ec9d7fa8e16eb2399b9ab5677bca5fcca3dbc58f0b285f158c2da5fb79080d4 \ - --hash=sha256:10767b992ab20d24d8e97b54f89c5b0149e979d10bf88bb0151bee99f0f996a3 \ - --hash=sha256:10dce1641ef253eec9db7c5931763643b81d39e9d9e45c537d4739b6a09856f9 \ - --hash=sha256:10e4722fdb7b87ccf9ca279c7f7d8a2ed5b64934b9cd36cbcd5cdca81365db4d \ - --hash=sha256:1a56cc700b1405cc75fde9197f9d2fed66ecbbaee7bdf1f28728494f119dc7f3 \ - --hash=sha256:22a9140ffc7a82855bb41d6140e77c658d6a2abbf613b227adb1b786f53962ec \ - --hash=sha256:2379030b1339a38110509cd1f4d8ecbe6647c5df85eccc7f2133bcdc55855082 \ - --hash=sha256:284354853d5292b722abe4bfb9fbfff8015e9edd9462b097072875ed8c99e0d6 \ - --hash=sha256:28bfd6fada6c87cb31d300bbed5de1bfd338f8c98d1b834cf810a06ce019a020 \ - --hash=sha256:2e598970f95c9bb7f4f5a27d5e11ec2babfac1f737910395009a1753283f15dd \ - --hash=sha256:31c891ebce899f35936d4ab9f332b69ab762513d5944b0f43f61427e53671d42 \ - --hash=sha256:31ca1258ec765f47e4df6b46cdb562caff762a9126ab72276415bca1b34d1a16 \ - --hash=sha256:324ca8b80f76016fc459e1c2b6cab8df12e4fd43830700c7290650651f71f662 \ - --hash=sha256:39af3060b4ab41a3cce18b1808338db8bf50b6ec4b81be3cc452558aaad95581 \ - --hash=sha256:3b3a3a8b5b2ee26fa72e6c92a7b31731f79c1f81e7c0a2041e8e6b5d19497bac \ - --hash=sha256:3bd0af8668d0858f174085fcac5062d38a44ee35a230fb211e7164d791ac07c3 \ - --hash=sha256:4570850d9b6e6a099797f731652dbe764dfd6dd7eff2934318a7018ba1a82cf1 \ - --hash=sha256:548b9b020a6c5ed210e13f706b9fb1d097cfc510c1a02e757ea0d61bdcf17c80 \ - --hash=sha256:58f1b70501c2462583bce5639a65af5516e9785ae6b3158533ddeecde70f0675 \ - --hash=sha256:5b37b55dd120b6dad14ee4cdab5f57dafb1a937decf148f67d13df3392e421a9 \ - --hash=sha256:5c6f0c01c3853c3cc65f7b7db1c1ce3181f7479a2cc4de145fae53db3cc5193b \ - --hash=sha256:5d72ffde56fb1515bcb03539803d42d0a119f6782c5812bf2b7313eddc691735 \ - --hash=sha256:5e5acc03e489201b26a98251d0e8eedca43a32ab2bc1840a6cd5e8b918e193a3 \ - --hash=sha256:608d965d47f40b8cd402215b95d85db899268d277ae5b8ebe87b7acdd3e2a0bb \ - --hash=sha256:644e64763617b346bb66bdaa7a286bedc888cd2afa8f3b0219de62f996c701bc \ - --hash=sha256:6482ab865261164b6577c5016b3d8a14ba1baf966945e203d78d7994702d45e4 \ - --hash=sha256:6a1f0781bccd854184a9c59b095ed09adf16627460eb8df4a91dc3f87e882352 \ - --hash=sha256:6e8e2f1394eecfb780a25950849d64a799b79f538d17945e42b1652da4e0cae4 \ - --hash=sha256:714dabb0ddd4be72841c962d0559d5a80613964dc2a5db72651ae3b2ae3408fc \ - --hash=sha256:80bf10d0d2a19bdbc1fe1174a2887dcdaaba857218d3d627adea9045a54f5a17 \ - --hash=sha256:80f158464e05d6e063abaebfb8811f48333e2337605d852ae9065d442b637dd0 \ - --hash=sha256:8b39a7314f6ad141c9c24acff0a71f4fdae1eab5ea827468c40afafc0662cab3 \ - --hash=sha256:8fc98a5362a25c27c1372af68253ba19ec0b27f1423fce307516257458bcf778 \ - --hash=sha256:9079d9d88921e46de1b65214d28608974dfcac2b49ee74f03807dc03e9d0da20 \ - --hash=sha256:9210446587d3daa40c2fe808b966a80e03995eeb6688c475b77276200524f0a0 \ - --hash=sha256:932b0101cf39d20afc07d71726b709376cbaf06316e4ce5008e2c1c21c9a925d \ - --hash=sha256:938e6e9ed7675a0a2c520926897c02126749e12a6cb6c2e7c910e7ea83aa40f3 \ - --hash=sha256:938f618d2cece8358899c688591d94db6652d9e1076c15a7efdfcfdc64a96cdb \ - --hash=sha256:989ba916e7747817b6fd2c46f2d40371ab3adaf026c1e6b4cded251ce1768ae4 \ - --hash=sha256:9a6a18176b283950c7f6c4c0952c3bb8b4430e5b38d645a0d96f12ff8c650a73 \ - --hash=sha256:9c7631f8442a4407b72a150089b6b804fbc06c4494ff45c96c4469e44aaf0003 \ - --hash=sha256:a1b34336cd3a7bc84d29ca6da4f38e6845b83cb18b38362f967b0a3096847ec2 \ - --hash=sha256:a22e8e3b82533fc71fa34d28e3563e72e7863810c786a8e3c350ede0fe3f4ad7 \ - --hash=sha256:a6e9b4cec99935cbc339d3896852c045605dd65910e8c534998d751113a0f767 \ - --hash=sha256:b71462677dc6c119589755394086cffbcf4d4d42f906fefb325c982c679406d6 \ - --hash=sha256:bd53e6b99008ff3dab6455791800af405351d98fbf01c4f474642afb1499236d \ - --hash=sha256:c27bde381c46574f3f534b4a62c42485e80e0e26c127899f83a391dd2c2bf078 \ - --hash=sha256:cba78321fae9b825f2bfcb2c3f66f60ab773777a8d2fcb34468daac657e0fc48 \ - --hash=sha256:cc6ea03831be59a50dbe7afc3691fa3cc8f0c6a1af48e98eccb749cbe03a5414 \ - --hash=sha256:d33818e5ece65da895d2262519abd752b3ef96245ae977ebe970f5a0631bcb83 \ - --hash=sha256:d6bb4a231d12b4e58d4f7250a8491f529ca41ef2171d3fa15fba13dce3c2efff \ - --hash=sha256:d85a0484f8ecd3a6c843c1b10b42953f14278b35ce30d94bc7cb6305604a6109 \ - --hash=sha256:dc6a1cca4ad5bead99efde0079605bc059f856b00be9b58b0f5978665ece7bb9 \ - --hash=sha256:e2dd0868d3695c742166b7922608f9c5bbf89f536c2144743ca5a62a24290a08 \ - --hash=sha256:e79b517386135eb84c3459805047bfb173df2763b1aa322a66864f13d620bd83 \ - --hash=sha256:e945c78652b01720d419051cf37642165878abb182d555f99390c7d36cec6152 \ - --hash=sha256:ea63c74aa88d0dc24464bc356bc31625318e58b5dd20169d98e696baa3f91ffd \ - --hash=sha256:ee193c1f26d9a10bbc56b9bd1e3b16c79ed0e0e44387275f8054d4cf853804d1 \ - --hash=sha256:f03cea2fabebf4f1429ccb87c4037dacd828050e8829cacb233f0865bda4244e \ - --hash=sha256:f44e0c0c339fe44dd3e7fcbab91cc1a5888c12c35a8bf2811b3eb85236570b29 - # via -r /tmp/requirementsb22u9wh4.in +fastapi==0.116.1 \ + --hash=sha256:c46ac7c312df840f0c9e220f7964bada936781bc4e2e6eb71f1c4d7553786565 \ + --hash=sha256:ed52cbf946abfd70c5a0dccb24673f0670deeb517a88b3544d03c2a6bf283143 + # via -r /tmp/requirements6816cy66.in +h11==0.16.0 \ + --hash=sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1 \ + --hash=sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86 + # via uvicorn +idna==3.10 \ + --hash=sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9 \ + --hash=sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3 + # via anyio +marisa-trie==1.3.1 \ + --hash=sha256:076731f79f8603cb3216cb6e5bbbc56536c89f63f175ad47014219ecb01e5996 \ + --hash=sha256:0b9816ab993001a7854b02a7daec228892f35bd5ab0ac493bacbd1b80baec9f1 \ + --hash=sha256:0c2bc6bee737f4d47fce48c5b03a7bd3214ef2d83eb5c9f84210091370a5f195 \ + --hash=sha256:0dcd42774e367ceb423c211a4fc8e7ce586acfaf0929c9c06d98002112075239 \ + --hash=sha256:0e6f3b45def6ff23e254eeaa9079267004f0069d0a34eba30a620780caa4f2cb \ + --hash=sha256:137010598d8cebc53dbfb7caf59bde96c33a6af555e3e1bdbf30269b6a157e1e \ + --hash=sha256:2f7c10f69cbc3e6c7d715ec9cb0c270182ea2496063bebeda873f4aa83fd9910 \ + --hash=sha256:3715d779561699471edde70975e07b1de7dddb2816735d40ed16be4b32054188 \ + --hash=sha256:3834304fdeaa1c9b73596ad5a6c01a44fc19c13c115194704b85f7fbdf0a7b8e \ + --hash=sha256:389721481c14a92fa042e4b91ae065bff13e2bc567c85a10aa9d9de80aaa8622 \ + --hash=sha256:3a96ef3e461ecc85ec7d2233ddc449ff5a3fbdc520caea752bc5bc8faa975231 \ + --hash=sha256:3e2a0e1be95237981bd375a388f44b33d69ea5669a2f79fea038e45fff326595 \ + --hash=sha256:3e431f9c80ee1850b2a406770acf52c058b97a27968a0ed6aca45c2614d64c9f \ + --hash=sha256:47631614c5243ed7d15ae0af8245fcc0599f5b7921fae2a4ae992afb27c9afbb \ + --hash=sha256:52d1764906befef91886e3bff374d8090c9716822bd56b70e07aa697188090b7 \ + --hash=sha256:5370f9ef6c008e502537cc1ff518c80ddf749367ce90179efa0e7f6275903a76 \ + --hash=sha256:56043cf908ddf3d7364498085dbc2855d4ea8969aff3bf2439a79482a79e68e2 \ + --hash=sha256:5a6abc9573a6a45d09548fde136dbcd4260b8c56f8dff443eaa565352d7cca59 \ + --hash=sha256:5b7c1e7fa6c3b855e8cfbabf38454d7decbaba1c567d0cd58880d033c6b363bd \ + --hash=sha256:5ef045f694ef66079b4e00c4c9063a00183d6af7d1ff643de6ea5c3b0d9af01b \ + --hash=sha256:68678816818efcd4a1787b557af81f215b989ec88680a86c85c34c914d413690 \ + --hash=sha256:6cac19952e0e258ded765737d1fb11704fe81bf4f27526638a5d44496f329235 \ + --hash=sha256:70b4c96f9119cfeb4dc6a0cf4afc9f92f0b002cde225bcd910915d976c78e66a \ + --hash=sha256:7e957aa4251a8e70b9fe02a16b2d190f18787902da563cb7ba865508b8e8fb04 \ + --hash=sha256:82de2de90488d0fbbf74cf9f20e1afd62e320693b88f5e9565fc80b28f5bbad3 \ + --hash=sha256:83a3748088d117a9b15d8981c947df9e4f56eb2e4b5456ae34fe1f83666c9185 \ + --hash=sha256:83efc045fc58ca04c91a96c9b894d8a19ac6553677a76f96df01ff9f0405f53d \ + --hash=sha256:8c8b2386d2d22c57880ed20a913ceca86363765623175671137484a7d223f07a \ + --hash=sha256:8f81344d212cb41992340b0b8a67e375f44da90590b884204fd3fa5e02107df2 \ + --hash=sha256:954fef9185f8a79441b4e433695116636bf66402945cfee404f8983bafa59788 \ + --hash=sha256:9651daa1fdc471df5a5fa6a4833d3b01e76ac512eea141a5995681aebac5555f \ + --hash=sha256:9688c7b45f744366a4ef661e399f24636ebe440d315ab35d768676c59c613186 \ + --hash=sha256:97107fd12f30e4f8fea97790343a2d2d9a79d93697fe14e1b6f6363c984ff85b \ + --hash=sha256:9868b7a8e0f648d09ffe25ac29511e6e208cc5fb0d156c295385f9d5dc2a138e \ + --hash=sha256:986eaf35a7f63c878280609ecd37edf8a074f7601c199acfec81d03f1ee9a39a \ + --hash=sha256:99a00cab4cf9643a87977c87a5c8961aa44fff8d5dd46e00250135f686e7dedf \ + --hash=sha256:9c56001badaf1779afae5c24b7ab85938644ab8ef3c5fd438ab5d49621b84482 \ + --hash=sha256:9dc61fb8f8993589544f6df268229c6cf0a56ad4ed3e8585a9cd23c5ad79527b \ + --hash=sha256:9de573d933db4753a50af891bcb3ffbfe14e200406214c223aa5dfe2163f316d \ + --hash=sha256:9e467e13971c64db6aed8afe4c2a131c3f73f048bec3f788a6141216acda598d \ + --hash=sha256:9e6496bbad3068e3bbbb934b1e1307bf1a9cb4609f9ec47b57e8ea37f1b5ee40 \ + --hash=sha256:9f92d3577c72d5a97af5c8e3d98247b79c8ccfb64ebf611311dcf631b11e5604 \ + --hash=sha256:a1c6990961d1177f6d8fdf7b610fa2e7c0c02743a090d173f6dfa9dc9231c73c \ + --hash=sha256:a5a0a58ffe2a7eb3f870214c6df8f9a43ce768bd8fed883e6ba8c77645666b63 \ + --hash=sha256:a7416f1a084eb889c5792c57317875aeaa86abfe0bdc6f167712cebcec1d36ee \ + --hash=sha256:a83f5f7ae3494e0cc25211296252b1b86901c788ed82c83adda19d0c98f828d6 \ + --hash=sha256:a850b151bd1e3a5d9afef113adc22727d696603659d575d7e84f994bd8d04bf1 \ + --hash=sha256:ad82ab8a58562cf69e6b786debcc7638b28df12f9f1c7bcffb07efb5c1f09cbd \ + --hash=sha256:b173ec46d521308f7c97d96d6e05cf2088e0548f82544ec9a8656af65593304d \ + --hash=sha256:bf9f2b97fcfd5e2dbb0090d0664023872dcde990df0b545eca8d0ce95795a409 \ + --hash=sha256:c12b44c190deb0d67655021da1f2d0a7d61a257bf844101cf982e68ed344f28d \ + --hash=sha256:c6571462417cda2239b1ade86ceaf3852da9b52c6286046e87d404afc6da20a7 \ + --hash=sha256:c785fd6dae9daa6825734b7b494cdac972f958be1f9cb3fb1f32be8598d2b936 \ + --hash=sha256:c7a33506d0451112911c69f38d55da3e0e050f2be0ea4e5176865cf03baf26a9 \ + --hash=sha256:c89df75aefe1ad7e613340790130f1badc5926bcfa66a6b3c9471071002956a5 \ + --hash=sha256:ca644534f15f85bba14c412afc17de07531e79a766ce85b8dbf3f8b6e7758f20 \ + --hash=sha256:cbd28f95d5f30d9a7af6130869568e75bfd7ef2e0adfb1480f1f44480f5d3603 \ + --hash=sha256:d0f87bdf660f01e88ab3a507955697b2e3284065afa0b94fc9e77d6ad153ed5e \ + --hash=sha256:d4bd41a6e73c0d0adafe4de449b6d35530a4ce6a836a6ee839baf117785ecfd7 \ + --hash=sha256:d8d5e686db0ae758837ed29b3b742afb994d1a01ce10977eabd3490f16b5c9f9 \ + --hash=sha256:e5888b269e790356ce4525f3e8df1fe866d1497b7d7fb7548cfec883cb985288 \ + --hash=sha256:ec633e108f277f2b7f4671d933a909f39bba549910bf103e2940b87a14da2783 \ + --hash=sha256:ecdb19d33b26738a32602ef432b06cc6deeca4b498ce67ba8e5e39c8a7c19745 \ + --hash=sha256:ee428575377e29c636f2b4b3b0488875dcea310c6c5b3412ec4ef997f7bb37cc \ + --hash=sha256:f4bae4f920f2a1082eaf766c1883df7da84abdf333bafa15b8717c10416a615e + # via -r /tmp/requirements6816cy66.in meson==1.9.0 \ --hash=sha256:45e51ddc41e37d961582d06e78c48e0f9039011587f3495c4d6b0781dad92357 \ --hash=sha256:cd27277649b5ed50d19875031de516e270b22e890d9db65ed9af57d18ebc498d @@ -212,7 +232,7 @@ meson==1.9.0 \ meson-python==0.18.0 \ --hash=sha256:3b0fe051551cc238f5febb873247c0949cd60ded556efa130aa57021804868e2 \ --hash=sha256:c56a99ec9df669a40662fe46960321af6e4b14106c14db228709c1628e23848d - # via -r /tmp/requirementsb22u9wh4.in + # via -r /tmp/requirements6816cy66.in mypy==1.17.1 \ --hash=sha256:03b6d0ed2b188e35ee6d5c36b5580cffd6da23319991c49ab5556c023ccf1341 \ --hash=sha256:064e2ff508e5464b4bd807a7c1625bc5047c5022b85c70f030680e18f37273a5 \ @@ -252,7 +272,7 @@ mypy==1.17.1 \ --hash=sha256:fa6ffadfbe6994d724c5a1bb6123a7d27dd68fc9c059561cd33b664a79578e14 \ --hash=sha256:feb8cc32d319edd5859da2cc084493b3e2ce5e49a946377663cc90f6c15fb259 \ --hash=sha256:ff2933428516ab63f961644bc49bc4cbe42bbffb2cd3b71cc7277c07d16b1a8b - # via -r /tmp/requirementsb22u9wh4.in + # via -r /tmp/requirements6816cy66.in mypy-extensions==1.1.0 \ --hash=sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505 \ --hash=sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558 @@ -336,7 +356,7 @@ numpy==2.3.2 \ --hash=sha256:fb1752a3bb9a3ad2d6b090b88a9a0ae1cd6f004ef95f75825e2f382c183b2097 \ --hash=sha256:fc927d7f289d14f5e037be917539620603294454130b6de200091e23d27dc9be \ --hash=sha256:fed5527c4cf10f16c6d0b6bee1f89958bccb0ad2522c8cadc2efd318bcd545f5 - # via -r /tmp/requirementsb22u9wh4.in + # via -r /tmp/requirements6816cy66.in packaging==25.0 \ --hash=sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 \ --hash=sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f @@ -351,11 +371,11 @@ pathspec==0.12.1 \ pip==25.1 \ --hash=sha256:13b4aa0aaad055020a11bec8a1c2a70a2b2d080e12d89b962266029fff0a16ba \ --hash=sha256:272bdd1289f80165e9070a4f881e8f9e1001bbb50378561d1af20e49bf5a2200 - # via -r /tmp/requirementsb22u9wh4.in + # via -r /tmp/requirements6816cy66.in pybind11==3.0.1 \ --hash=sha256:9c0f40056a016da59bab516efb523089139fcc6f2ba7e4930854c61efb932051 \ --hash=sha256:aa8f0aa6e0a94d3b64adfc38f560f33f15e589be2175e103c0a33c6bce55ee89 - # via -r /tmp/requirementsb22u9wh4.in + # via -r /tmp/requirements6816cy66.in pycparser==2.22 \ --hash=sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6 \ --hash=sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc @@ -364,7 +384,8 @@ pydantic==2.11.7 \ --hash=sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db \ --hash=sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b # via - # -r /tmp/requirementsb22u9wh4.in + # -r /tmp/requirements6816cy66.in + # fastapi # pydantic-settings pydantic-core==2.33.2 \ --hash=sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d \ @@ -470,7 +491,7 @@ pydantic-core==2.33.2 \ pydantic-settings==2.10.1 \ --hash=sha256:06f0062169818d0f5524420a360d632d5857b83cffd4d42fe29597807a1614ee \ --hash=sha256:a60952460b99cf661dc25c29c0ef171721f98bfcb52ef8d9ea4c943d7c8cc796 - # via -r /tmp/requirementsb22u9wh4.in + # via -r /tmp/requirements6816cy66.in pyproject-hooks==1.2.0 \ --hash=sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8 \ --hash=sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913 @@ -482,7 +503,7 @@ pyproject-metadata==0.9.1 \ pyright==1.1.404 \ --hash=sha256:455e881a558ca6be9ecca0b30ce08aa78343ecc031d37a198ffa9a7a1abeb63e \ --hash=sha256:c7b7ff1fdb7219c643079e4c3e7d4125f0dafcc19d253b47e898d130ea426419 - # via -r /tmp/requirementsb22u9wh4.in + # via -r /tmp/requirements6816cy66.in python-dotenv==1.1.1 \ --hash=sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc \ --hash=sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab @@ -562,15 +583,23 @@ ruff==0.12.10 \ --hash=sha256:e67d96827854f50b9e3e8327b031647e7bcc090dbe7bb11101a81a3a2cbf1cc9 \ --hash=sha256:ebb7333a45d56efc7c110a46a69a1b32365d5c5161e7244aaf3aa20ce62399c1 \ --hash=sha256:f3fc21178cd44c98142ae7590f42ddcb587b8e09a3b849cbc84edb62ee95de60 - # via -r /tmp/requirementsb22u9wh4.in + # via -r /tmp/requirements6816cy66.in setuptools==80.9.0 \ --hash=sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 \ --hash=sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c - # via -r /tmp/requirementsb22u9wh4.in + # via -r /tmp/requirements6816cy66.in +sniffio==1.3.1 \ + --hash=sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 \ + --hash=sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc + # via anyio sqlparse==0.5.3 \ --hash=sha256:09f67787f56a0b16ecdbde1bfc7f5d9c3371ca683cfeaa8e6ff60b4807ec9272 \ --hash=sha256:cf2196ed3418f3ba5de6af7e82c694a9fbdbfecccdfc72e281548517081f16ca # via django +starlette==0.47.3 \ + --hash=sha256:6bc94f839cc176c4858894f1f8908f0ab79dfec1a6b8402f6da9be26ebea52e9 \ + --hash=sha256:89c0778ca62a76b826101e7c709e70680a1699ca7da6b44d38eb0a7e61fe4b51 + # via fastapi tomli==2.2.1 \ --hash=sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6 \ --hash=sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd \ @@ -604,17 +633,17 @@ tomli==2.2.1 \ --hash=sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272 \ --hash=sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a \ --hash=sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7 - # via -r /tmp/requirementsb22u9wh4.in + # via -r /tmp/requirements6816cy66.in tomlkit==0.13.3 \ --hash=sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1 \ --hash=sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0 # via - # -r /tmp/requirementsb22u9wh4.in + # -r /tmp/requirements6816cy66.in # yq tomlq==0.1.0 \ --hash=sha256:4b966fd999ed2bf69081b7c7f5caadbc4c9542d0ed5fcf2e9b7b4d8d7ada3c82 \ --hash=sha256:e775720e90da3e405142b9fe476145e71c0389f787b1ff9933f92a1704d8c6e7 - # via -r /tmp/requirementsb22u9wh4.in + # via -r /tmp/requirements6816cy66.in types-pyyaml==6.0.12.20250822 \ --hash=sha256:1fe1a5e146aa315483592d292b72a172b65b946a6d98aa6ddd8e4aa838ab7098 \ --hash=sha256:259f1d93079d335730a9db7cff2bcaf65d7e04b4a56b5927d49a612199b59413 @@ -625,6 +654,7 @@ typing-extensions==4.15.0 \ # via # django-stubs # django-stubs-ext + # fastapi # mypy # pydantic # pydantic-core @@ -656,7 +686,11 @@ uv==0.8.13 \ --hash=sha256:d22fa55580b224779279b98e0b23cbc45e51837e1fac616d7c5d03aff668a998 \ --hash=sha256:eb90089624d92d57b8582f708973db8988e09dba6bae83991dba20731d82eb6a \ --hash=sha256:f6c508aa9c5210577008e1919b532e38356fe68712179399f00462b3e78fd845 - # via -r /tmp/requirementsb22u9wh4.in + # via -r /tmp/requirements6816cy66.in +uvicorn==0.35.0 \ + --hash=sha256:197535216b25ff9b785e29a0b79199f55222193d47f820816e7da751e9bc8d4a \ + --hash=sha256:bc662f087f7cf2ce11a1d7fd70b90c9f98ef2e2831556dd078d131b96cc94a01 + # via -r /tmp/requirements6816cy66.in xmltodict==0.14.2 \ --hash=sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553 \ --hash=sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac diff --git a/releases/whl/online_fxreader_pr34-0.1.5.25-py3-none-any.whl b/releases/whl/online_fxreader_pr34-0.1.5.25-py3-none-any.whl new file mode 100644 index 0000000..a1d2890 --- /dev/null +++ b/releases/whl/online_fxreader_pr34-0.1.5.25-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b70a3fb2fe6652c1ff8c14e464a5baf80a5d9da9e39204eeba40490bf13deca +size 74822 diff --git a/releases/whl/online_fxreader_pr34-0.1.5.26-py3-none-any.whl b/releases/whl/online_fxreader_pr34-0.1.5.26-py3-none-any.whl new file mode 100644 index 0000000..58b307f --- /dev/null +++ b/releases/whl/online_fxreader_pr34-0.1.5.26-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3066558ef4a5dd2dfda85c3d9fb7d50014774d500187da86c6cc0795fca3be10 +size 74831