diff --git a/.tekton/rag-tool-pull-request.yaml b/.tekton/rag-tool-pull-request.yaml index d78f5d29..950fd1e7 100644 --- a/.tekton/rag-tool-pull-request.yaml +++ b/.tekton/rag-tool-pull-request.yaml @@ -63,7 +63,7 @@ spec: ], "requirements_build_files": ["requirements-build.txt"], "binary": { - "packages": "aiohappyeyeballs,aiohttp,aiosignal,aiosqlite,annotated-doc,annotated-types,anyio,asyncpg,beautifulsoup4,cffi,click,colorama,cryptography,dataclasses-json,defusedxml,distro,docling-parse,et-xmlfile,faiss-cpu,filetype,fire,frozenlist,greenlet,h11,hf-xet,httpcore,httpx,idna,jinja2,jiter,joblib,jsonlines,jsonref,jsonschema-specifications,lxml,markdown-it-py,markupsafe,mdurl,mpire,mpmath,mypy-extensions,nest-asyncio,networkx,numpy,openpyxl,packaging,pandas,pillow,pluggy,prompt-toolkit,propcache,psycopg2-binary,pydantic,pydantic-core,pygments,pylatexenc,pypdfium2,python-dateutil,python-docx,python-pptx,pyyaml,referencing,requests,rpds-py,rtree,safetensors,scikit-learn,scipy,setuptools,shapely,shellingham,six,sniffio,sympy,threadpoolctl,tiktoken,tokenizers,torch,torchvision,transformers,triton,typing-extensions,typing-inspect,typing-inspection,tzdata,xlsxwriter,zipp,uv-build,uv,pip,maturin,opencv-python,omegaconf,rapidocr,sqlite-vec,griffe,griffecli,griffelib,pyclipper,tree-sitter-typescript", + "packages": "aiohappyeyeballs,aiohttp,aiosignal,aiosqlite,annotated-doc,annotated-types,anyio,asyncpg,beautifulsoup4,cffi,click,colorama,cryptography,dataclasses-json,defusedxml,distro,docling-parse,et-xmlfile,faiss-cpu,filetype,fire,frozenlist,greenlet,h11,hf-xet,httpcore,httpx,httpx-sse,idna,jinja2,jiter,joblib,jsonlines,jsonref,jsonschema-specifications,lxml,markdown-it-py,markupsafe,mdurl,mpire,mpmath,mypy-extensions,nest-asyncio,networkx,numpy,openpyxl,packaging,pandas,pillow,pluggy,prompt-toolkit,propcache,psycopg2-binary,pydantic,pydantic-core,pygments,pylatexenc,pypdfium2,python-dateutil,python-docx,python-pptx,pyyaml,referencing,rpds-py,rtree,safetensors,scikit-learn,scipy,setuptools,shapely,shellingham,six,sniffio,sympy,threadpoolctl,tiktoken,tokenizers,torch,torchvision,transformers,triton,typing-extensions,typing-inspect,typing-inspection,tzdata,xlsxwriter,zipp,uv-build,uv,pip,maturin,opencv-python,omegaconf,rapidocr,sqlite-vec,griffe,griffecli,griffelib,pyclipper,tree-sitter-typescript", "os": "linux", "arch": "x86_64,aarch64", "py_version": 312 diff --git a/.tekton/rag-tool-push.yaml b/.tekton/rag-tool-push.yaml index babd50ff..bae0521d 100644 --- a/.tekton/rag-tool-push.yaml +++ b/.tekton/rag-tool-push.yaml @@ -59,7 +59,7 @@ spec: ], "requirements_build_files": ["requirements-build.txt"], "binary": { - "packages": "aiohappyeyeballs,aiohttp,aiosignal,aiosqlite,annotated-doc,annotated-types,anyio,asyncpg,beautifulsoup4,cffi,click,colorama,cryptography,dataclasses-json,defusedxml,distro,docling-parse,et-xmlfile,faiss-cpu,filetype,fire,frozenlist,greenlet,h11,hf-xet,httpcore,httpx,idna,jinja2,jiter,joblib,jsonlines,jsonref,jsonschema-specifications,lxml,markdown-it-py,markupsafe,mdurl,mpire,mpmath,mypy-extensions,nest-asyncio,networkx,numpy,openpyxl,packaging,pandas,pillow,pluggy,prompt-toolkit,propcache,psycopg2-binary,pydantic,pydantic-core,pygments,pylatexenc,pypdfium2,python-dateutil,python-docx,python-pptx,pyyaml,referencing,requests,rpds-py,rtree,safetensors,scikit-learn,scipy,setuptools,shapely,shellingham,six,sniffio,sympy,threadpoolctl,tiktoken,tokenizers,torch,torchvision,transformers,triton,typing-extensions,typing-inspect,typing-inspection,tzdata,xlsxwriter,zipp,uv-build,uv,pip,maturin,opencv-python,omegaconf,rapidocr,sqlite-vec,griffe,griffecli,griffelib,pyclipper,tree-sitter-typescript", + "packages": "aiohappyeyeballs,aiohttp,aiosignal,aiosqlite,annotated-doc,annotated-types,anyio,asyncpg,beautifulsoup4,cffi,click,colorama,cryptography,dataclasses-json,defusedxml,distro,docling-parse,et-xmlfile,faiss-cpu,filetype,fire,frozenlist,greenlet,h11,hf-xet,httpcore,httpx,httpx-sse,idna,jinja2,jiter,joblib,jsonlines,jsonref,jsonschema-specifications,lxml,markdown-it-py,markupsafe,mdurl,mpire,mpmath,mypy-extensions,nest-asyncio,networkx,numpy,openpyxl,packaging,pandas,pillow,pluggy,prompt-toolkit,propcache,psycopg2-binary,pydantic,pydantic-core,pygments,pylatexenc,pypdfium2,python-dateutil,python-docx,python-pptx,pyyaml,referencing,rpds-py,rtree,safetensors,scikit-learn,scipy,setuptools,shapely,shellingham,six,sniffio,sympy,threadpoolctl,tiktoken,tokenizers,torch,torchvision,transformers,triton,typing-extensions,typing-inspect,typing-inspection,tzdata,xlsxwriter,zipp,uv-build,uv,pip,maturin,opencv-python,omegaconf,rapidocr,sqlite-vec,griffe,griffecli,griffelib,pyclipper,tree-sitter-typescript", "os": "linux", "arch": "x86_64,aarch64", "py_version": 312 diff --git a/pyproject.toml b/pyproject.toml index 435d37b3..fcdc4027 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,16 +47,15 @@ dependencies = [ "llama-index-vector-stores-postgres>=0.5.4", # Pin torch/torchvision to versions available as CPU wheels # torch 2.9.x pairs with torchvision 0.24.x - "llama-stack==0.4.3", - # User 0.4.4 instead of 0.4.3 to include CVE fix - "llama-stack-api==0.4.4", - "llama-stack-client==0.4.3", + "llama-stack==0.5.0", + "llama-stack-api==0.5.0", + "llama-stack-client==0.5.0", "torch>=2.9.0,<2.10.0", "torchvision>=0.24.0,<0.25.0", "aiosqlite>=0.21.0", "sqlite-vec>=0.1.6", "tomlkit", - "chardet>=5.2.0", + "chardet==7.2.0", "hf-xet>=1.2.0", "einops>=0.8.1", # For HTML to Markdown conversion in BYOK workflows diff --git a/requirements-build.txt b/requirements-build.txt index eea234fa..620b7750 100644 --- a/requirements-build.txt +++ b/requirements-build.txt @@ -9,12 +9,17 @@ calver==2025.10.20 coherent-licensed==0.5.2 # via importlib-metadata cython==3.2.4 - # via sqlalchemy + # via + # oracledb + # sqlalchemy +dunamai==1.26.0 + # via uv-dynamic-versioning expandvars==1.1.2 # via yarl flit-core==3.12.0 # via # coherent-licensed + # jinja2 # marshmallow # packaging # pathspec @@ -25,7 +30,6 @@ hatch-fancy-pypi-readme==25.1.0 # via # attrs # jsonschema - # llama-cloud # llama-stack-client # openai hatch-vcs==0.5.0 @@ -41,7 +45,6 @@ hatch-vcs==0.5.0 hatchling==1.26.3 # via # hatch-fancy-pypi-readme - # llama-cloud # llama-stack-client # openai hatchling==1.29.0 @@ -62,13 +65,12 @@ hatchling==1.29.0 # llama-index-core # llama-index-embeddings-huggingface # llama-index-embeddings-openai - # llama-index-indices-managed-llama-cloud # llama-index-instrumentation # llama-index-llms-openai # llama-index-readers-file - # llama-index-readers-llama-parse # llama-index-vector-stores-faiss # llama-index-vector-stores-postgres + # mcp # opentelemetry-api # opentelemetry-exporter-otlp-proto-common # opentelemetry-exporter-otlp-proto-http @@ -84,14 +86,20 @@ hatchling==1.29.0 # starlette # termcolor # urllib3 + # uv-dynamic-versioning # uvicorn # wcwidth +jinja2==3.1.6 + # via uv-dynamic-versioning +markupsafe==3.0.3 + # via jinja2 maturin==1.10.2 # via uv-build packaging==26.0 # via # hatchling # setuptools-scm + # vcs-versioning # wheel pathspec==1.0.4 # via hatchling @@ -104,30 +112,42 @@ pluggy==1.6.0 # via hatchling poetry-core==2.3.1 # via - # llama-parse + # dunamai # rich # tomlkit semantic-version==2.10.0 # via setuptools-rust -setuptools-rust==1.12.0 +setuptools-rust==1.12.1 # via maturin -setuptools-scm==9.2.2 +setuptools-scm==10.0.5 # via # hatch-vcs # importlib-metadata + # llama-stack # llama-stack-api # pluggy # setuptools-rust # tabulate # tenacity # tqdm +setuptools-scm==9.2.2 + # via + # hatch-vcs # urllib3 +tomlkit==0.14.0 + # via uv-dynamic-versioning trove-classifiers==2026.1.14.14 # via hatchling uv-build==0.9.30 # via llama-index-workflows +uv-dynamic-versioning==0.14.0 + # via mcp +vcs-versioning==1.1.0 + # via setuptools-scm wheel==0.46.3 # via + # oci + # oracledb # pycparser # sentence-transformers # tornado @@ -149,9 +169,12 @@ setuptools==82.0.1 # importlib-metadata # llama-stack # llama-stack-api + # markupsafe # maturin # multidict # multiprocess + # oci + # oracledb # pathspec # pgvector # pluggy @@ -160,10 +183,12 @@ setuptools==82.0.1 # pyjwt # python-dotenv # regex + # requests # sentence-transformers # setuptools-rust # setuptools-scm # sqlalchemy + # sse-starlette # tabulate # tenacity # tornado @@ -173,5 +198,6 @@ setuptools==82.0.1 # tree-sitter-javascript # tree-sitter-python # trove-classifiers + # vcs-versioning # wrapt # yarl diff --git a/requirements.hashes.source.txt b/requirements.hashes.source.txt index ec8fed86..e7c74020 100644 --- a/requirements.hashes.source.txt +++ b/requirements.hashes.source.txt @@ -174,6 +174,9 @@ charset-normalizer==3.4.6 \ --hash=sha256:f820f24b09e3e779fe84c3c456cb4108a7aa639b0d1f02c28046e11bfcd088ed \ --hash=sha256:f98059e4fcd3e3e4e2d632b7cf81c2faae96c43c60b569e9c621468082f1d104 \ --hash=sha256:fcce033e4021347d80ed9c66dcf1e7b1546319834b74445f561d2e2221de5659 +circuitbreaker==2.1.3 \ + --hash=sha256:1a4baee510f7bea3c91b194dcce7c07805fe96c4423ed5594b75af438531d084 \ + --hash=sha256:87ba6a3ed03fdc7032bc175561c2b04d52ade9d5faf94ca2b035fbdc5e6b1dd1 colorlog==6.10.1 \ --hash=sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c \ --hash=sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321 @@ -198,21 +201,21 @@ docling-ibm-models==3.10.0 \ einops==0.8.2 \ --hash=sha256:54058201ac7087911181bfec4af6091bb59380360f069276601256a76af08193 \ --hash=sha256:609da665570e5e265e27283aab09e7f279ade90c4f01bcfca111f3d3e13f2827 -faker==40.11.0 \ - --hash=sha256:0e9816c950528d2a37d74863f3ef389ea9a3a936cbcde0b11b8499942e25bf90 \ - --hash=sha256:7c419299103b13126bd02ec14bd2b47b946edb5a5eedf305e66a193b25f9a734 -fastapi==0.135.1 \ - --hash=sha256:46e2fc5745924b7c840f71ddd277382af29ce1cdb7d5eab5bf697e3fb9999c9e \ - --hash=sha256:d04115b508d936d254cea545b7312ecaa58a7b3a0f84952535b4c9afae7668cd +faker==40.11.1 \ + --hash=sha256:3af3a213ba8fb33ce6ba2af7aef2ac91363dae35d0cec0b2b0337d189e5bee2a \ + --hash=sha256:61965046e79e8cfde4337d243eac04c0d31481a7c010033141103b43f603100c +fastapi==0.135.2 \ + --hash=sha256:0af0447d541867e8db2a6a25c23a8c4bd80e2394ac5529bd87501bbb9e240ca5 \ + --hash=sha256:88a832095359755527b7f63bb4c6bc9edb8329a026189eed83d6c1afcf419d56 filelock==3.25.2 \ --hash=sha256:b64ece2b38f4ca29dd3e810287aa8c48182bbecd1ae6e9ae126c9b35f1382694 \ --hash=sha256:ca8afb0da15f229774c9ad1b455ed96e85a81373065fb10446672f64444ddf70 fsspec==2026.2.0 \ --hash=sha256:6544e34b16869f5aacd5b90bdf1a71acb37792ea3ddf6125ee69a22a53fb8bff \ --hash=sha256:98de475b5cb3bd66bedd5c4679e87b4fdfe1a3bf4d707b151b3c07e58c9a2437 -googleapis-common-protos==1.73.0 \ - --hash=sha256:778d07cd4fbeff84c6f7c72102f0daf98fa2bfd3fa8bea426edc545588da0b5a \ - --hash=sha256:dfdaaa2e860f242046be561e6d6cb5c5f1541ae02cfbcb034371aadb2942b4e8 +googleapis-common-protos==1.73.1 \ + --hash=sha256:13114f0e9d2391756a0194c3a8131974ed7bffb06086569ba193364af59163b6 \ + --hash=sha256:e51f09eb0a43a8602f5a915870972e6b4a394088415c79d79605a46d8e826ee8 huggingface-hub==0.36.2 \ --hash=sha256:1934304d2fb224f8afa3b87007d58501acfda9215b334eed53072dd5e815ff7a \ --hash=sha256:48f0c8eac16145dfce371e9d2d7772854a4f591bcb56c9cf548accf531d54270 @@ -225,39 +228,30 @@ jsonschema==4.26.0 \ latex2mathml==3.79.0 \ --hash=sha256:11bde318c2d2d6fcdd105a07509d867cee2208f653278eb80243dec7ea77a0ce \ --hash=sha256:9f10720d4fcf6b22d1b81f6628237832419a7a29783c13aa92fa8d680165e63d -llama-cloud==1.6.0 \ - --hash=sha256:3b880587ef82f23dc9f1998395b31f8a4afd77eb88f99689358a67375d16d413 \ - --hash=sha256:b00c75df76b59becca72f262c755a59529f0c09f0cda79e086eedefc62d59ac8 -llama-index==0.14.18 \ - --hash=sha256:43cf535521bec5451aaadfa3dea012f4bf60f7e00db652479332c1acb43d152b \ - --hash=sha256:ecab28775c07b1d4729ad3ad086a0d8366ebb347cc34cf334736eb44944ea760 +llama-index==0.14.19 \ + --hash=sha256:596e4bf54a4563a9b1eaf41da34b42b861b77691eb08ad7be24165fb9844fee2 \ + --hash=sha256:618bb82b9a7e67264d73702477e542b042e051d4931e577bae01b5abd0f0559a llama-index-cli==0.5.6 \ --hash=sha256:4e14d072febf626d05f821d04a858de8dd9cc7c98376658a0ab98489f5a6bcf7 \ --hash=sha256:df600edec7998f8d5df414bd4dd3b6504c0aac333ce18a43ad0a09c901e655a6 -llama-index-core==0.14.18 \ - --hash=sha256:584e5995929d129036cf8fe2d1b8f0d581e43335760f2f6083cd767a71f47f8d \ - --hash=sha256:5bd5153ac3f097576a42bb778977b35a9f6184b91b47919cf3bb03616ed31591 +llama-index-core==0.14.19 \ + --hash=sha256:7b17f321f0d965495402890991b2bfde49d4197bc46ca5970300cc7b9c2df6a2 \ + --hash=sha256:807352f16a300f9980d0110cfdaa81d07e201384965e9f7d940c8ead80d463ed llama-index-embeddings-huggingface==0.7.0 \ --hash=sha256:cae7e4ffddc1fecb34b83425a00679f338ce03ad0a7f3aca6b927136d6af7131 \ --hash=sha256:da8a2a65df9404112c4430dfada09d4f846ba165197a25dbe77f734014c56a87 llama-index-embeddings-openai==0.6.0 \ --hash=sha256:039bb1007ad4267e25ddb89a206dfdab862bfb87d58da4271a3919e4f9df4d61 \ --hash=sha256:eb3e6606be81cb89125073e23c97c0a6119dabb4827adbd14697c2029ad73f29 -llama-index-indices-managed-llama-cloud==0.11.0 \ - --hash=sha256:84b7cd4c01a4c8eb2a502588ee5e8d6f84a0d0b987cae05f2e84194361850b69 \ - --hash=sha256:b4e685ea34e279510dd4b9d5bf1a344762beac300f1294a217366fa16f3a47bb llama-index-instrumentation==0.5.0 \ --hash=sha256:aaab83cddd9dd434278891012d8995f47a3bc7ed1736a371db90965348c56a21 \ --hash=sha256:eeb724648b25d149de882a5ac9e21c5acb1ce780da214bda2b075341af29ad8e -llama-index-llms-openai==0.7.3 \ - --hash=sha256:16c72a9eed24266afe25ebe97a16d9405865dda8e27a4d11b93d038ccc2d164a \ - --hash=sha256:f1ec398a44a6e7c513b86802e5fbd67cd01adf695155ee5034b899e537fe2226 +llama-index-llms-openai==0.7.4 \ + --hash=sha256:b2cf35ce0d0ecf3209a0406da7383efdbd8f70a1c83eef287e4346c36ea24cba \ + --hash=sha256:e7e078816babe33b29fa17ea0a771cf9589b2e95f1902cd8f1ec283a3a35c675 llama-index-readers-file==0.6.0 \ --hash=sha256:1026d94f2d5902152373bc2c3b7caa7e216d956620b22d510e516850b6a7440d \ --hash=sha256:ff366d6ff5ecb7119275ac859310d8b672d8b6b3261afae02f4084fce9076bd0 -llama-index-readers-llama-parse==0.6.0 \ - --hash=sha256:6e086b7034a001bb0204e3431cb1cee5b6ec13f930acbf9a6e82c64aed72b09e \ - --hash=sha256:d06a3376bcb278a610a4dad4bdc70a5f19278370d7df756d8b5c171c3c13ff1f llama-index-vector-stores-faiss==0.6.0 \ --hash=sha256:00bfeb6cb7571e0e856566cb4f10c89b415b6108f151d9ad48ee9c31da563f5e \ --hash=sha256:d4600c60ef5411d9e35ba573b4f416a5e13ea04c6f942c8e6f49f03f2feb4f3b @@ -267,24 +261,24 @@ llama-index-vector-stores-postgres==0.8.1 \ llama-index-workflows==2.17.1 \ --hash=sha256:0d78fc36c2ab5430887c9f34367d59d4c22cf1e6c40ecdc3596214234c2b5010 \ --hash=sha256:c62fabe509cf0003ddfe5b2b27f48b3443c7c9a84e9cdc904c6f9ed5f8cbe25d -llama-parse==0.5.20 \ - --hash=sha256:649e256431d3753025b9a320bb03b76849ce4b5a1121394c803df543e6c1006f \ - --hash=sha256:9617edb3428d3218ea01f1708f0b6105f3ffef142fedbeb8c98d50082c37e226 -llama-stack==0.4.3 \ - --hash=sha256:423207eae2b640894992a9075ff9dd6300ff904ab06a49fe38cfe0bb809d4669 \ - --hash=sha256:70d379ae9dbb5b1d0693f14054d9817aba183ffcd805133f0a4442baee132c6d -llama-stack-api==0.4.4 \ - --hash=sha256:3973ca3bacf86916e04e521f77e7909533eec7364d32c3eabc35dc2976dbfe7d \ - --hash=sha256:7bbc63330ed186502dcd48f65cae014dbeb788ba5690be738c98693cfcd2f599 -llama-stack-client==0.4.3 \ - --hash=sha256:97b8cc5032bad4f0cdd1b0ae992cf44f5554679d315b7c40f46deb358c041f50 \ - --hash=sha256:cb807be258206e8fedeb5e5ceba7be7108d3badb31d74199406808c3d1679c35 +llama-stack==0.5.0 \ + --hash=sha256:a1bb2aacf61c293693e9d1986a173cd5088c3ee7269d9fd1f584bbca98e98f40 \ + --hash=sha256:ec3b0455eaa5b24fa53c1b789c18ff8d14580109c7f4ccb64da069b25d0ccde9 +llama-stack-api==0.5.0 \ + --hash=sha256:51074ec06ab87ece7e9461bf47d878b25eb232b2a009749314e2b8a5a5d83ca0 \ + --hash=sha256:dfd4ffff70207c49c8e734b503b42bc41860d271e7fe8745a26a41a4d4419ff8 +llama-stack-client==0.5.0 \ + --hash=sha256:5e7272c7fb58cd169985191c42af78dc6c4d212b7050949b063788bfb9e7ed36 \ + --hash=sha256:e005ae9d975cda30b3b86261057f228d700107e263e12b796b920cd1fb9ba968 marko==2.2.2 \ --hash=sha256:6940308e655f63733ca518c47a68ec9510279dbb916c83616e4c4b5829f052e8 \ --hash=sha256:f064ae8c10416285ad1d96048dc11e98ef04e662d3342ae416f662b70aa7959e marshmallow==3.26.2 \ --hash=sha256:013fa8a3c4c276c24d26d84ce934dc964e2aa794345a0f8c7e5a7191482c8a73 \ --hash=sha256:bbe2adb5a03e6e3571b573f42527c6fe926e17467833660bebd11593ab8dfd57 +mcp==1.26.0 \ + --hash=sha256:904a21c33c25aa98ddbeb47273033c435e595bbacfdb177f4bd87f6dceebe1ca \ + --hash=sha256:db6e2ef491eecc1a0d93711a76f28dec2e05999f93afd48795da1c1137142c66 multidict==6.7.1 \ --hash=sha256:026d264228bcd637d4e060844e39cdc60f86c479e463d49075dedc21b18fbbe0 \ --hash=sha256:03ede2a6ffbe8ef936b92cb4529f27f42be7f56afcdab5ab739cd5f27fb1cbf9 \ @@ -449,12 +443,15 @@ multiprocess==0.70.19 \ --hash=sha256:e5e7dc3e3e1732e88c07aaec17eeb9917f9ed1107d9e60d5ab985cdc14bac43a \ --hash=sha256:e6c0674d34b8adac22533f6786576b3de4e396aaeda9e0c15378af9b8ada2702 \ --hash=sha256:e8cc7fbdff15c0613f0a1f1f8744bef961b0a164c0ca29bdff53e9d2d93c5e5f -nltk==3.9.3 \ - --hash=sha256:60b3db6e9995b3dd976b1f0fa7dec22069b2677e759c28eb69b62ddd44870522 \ - --hash=sha256:cb5945d6424a98d694c2b9a0264519fab4363711065a46aa0ae7a2195b92e71f -openai==2.29.0 \ - --hash=sha256:32d09eb2f661b38d3edd7d7e1a2943d1633f572596febe64c0cd370c86d52bec \ - --hash=sha256:b7c5de513c3286d17c5e29b92c4c98ceaf0d775244ac8159aeb1bddf840eb42a +nltk==3.9.4 \ + --hash=sha256:ed03bc098a40481310320808b2db712d95d13ca65b27372f8a403949c8b523d0 \ + --hash=sha256:f2fa301c3a12718ce4a0e9305c5675299da5ad9e26068218b69d692fda84828f +oci==2.168.3 \ + --hash=sha256:098c7729a5e97e2bbd67dfb2218da355fbaff79a3e1c20cdbf137c79e97e1e1c \ + --hash=sha256:370294488351dbb7cddc208bbbf64535e2b1f065e61f7f893de0ba1ac61c2d9a +openai==2.30.0 \ + --hash=sha256:92f7661c990bda4b22a941806c83eabe4896c3094465030dd882a71abe80c885 \ + --hash=sha256:9a5ae616888eb2748ec5e0c5b955a51592e0b201a11f4262db920f2a78c5231d opentelemetry-api==1.40.0 \ --hash=sha256:159be641c0b04d11e9ecd576906462773eb97ae1b657730f0ecf64d32071569f \ --hash=sha256:82dd69331ae74b06f6a874704be0cfaa49a1650e1537d4a813b86ecef7d0ecf9 @@ -473,6 +470,38 @@ opentelemetry-sdk==1.40.0 \ opentelemetry-semantic-conventions==0.61b0 \ --hash=sha256:072f65473c5d7c6dc0355b27d6c9d1a679d63b6d4b4b16a9773062cb7e31192a \ --hash=sha256:fa530a96be229795f8cef353739b618148b0fe2b4b3f005e60e262926c4d38e2 +oracledb==3.4.2 \ + --hash=sha256:00c79448017f367bb7ab6900efe0706658a53768abea2b4519a4c9b2d5743890 \ + --hash=sha256:0e16fe3d057e0c41a23ad2ae95bfa002401690773376d476be608f79ac74bf05 \ + --hash=sha256:0f04a2d62073407672f114d02529921de0677c6883ed7c64d8d1a3c04caa3238 \ + --hash=sha256:1617a1db020346883455af005efbefd51be2c4d797e43b1b38455a19f8526b48 \ + --hash=sha256:19fa80ef84f85ad74077aa626067bbe697e527bd39604b4209f9d86cb2876b89 \ + --hash=sha256:1e4930d7f6584832dcc15b8ca415a7957b0c45f5aa7c4f88702e070e5c53bf93 \ + --hash=sha256:23aa07c1eaca17ae74c6fdc86b218f58484d56452958aead1aa460c0596a76c1 \ + --hash=sha256:31b7ee83c23d0439778303de8a675717f805f7e8edb5556d48c4d8343bcf14f5 \ + --hash=sha256:3df8eee1410d25360599968b1625b000f10c5ae0e47274031a7842a9dc418890 \ + --hash=sha256:404ec1451d0448653ee074213b87d6c5bd65eaa74b50083ddf2c9c3e11c71c71 \ + --hash=sha256:46e0f2278ff1fe83fbc33a3b93c72d429323ec7eed47bc9484e217776cd437e5 \ + --hash=sha256:55397e7eb43bb7017c03a981c736c25724182f5210951181dfe3fab0e5d457fb \ + --hash=sha256:574c8280d49cbbe21dbe03fc28356d9b9a5b9e300ebcde6c6d106e51453a7e65 \ + --hash=sha256:59ad6438f56a25e8e1a4a3dd1b42235a5d09ab9ba417ff2ad14eae6596f3d06f \ + --hash=sha256:5d7befb014174c5ae11c3a08f5ed6668a25ab2335d8e7104dca70d54d54a5b3a \ + --hash=sha256:5ed78d7e7079a778062744ccf42141ce4806818c3f4dd6463e4a7edd561c9f86 \ + --hash=sha256:643c25d301a289a371e37fcedb59e5fa5e54fb321708e5c12821c4b55bdd8a4d \ + --hash=sha256:6d85622664cc88d5a82bbd7beccb62cd53bd272c550a5e15e7d5f8ae6b86f1f1 \ + --hash=sha256:9f434a739405557bd57cb39b62238142bb27855a524a70dc6d397a2a8c576c9d \ + --hash=sha256:a7396664e592881225ba66385ee83ce339d864f39003d6e4ca31a894a7e7c552 \ + --hash=sha256:ac25a0448fc830fb7029ad50cd136cdbfcd06975d53967e269772cc5cb8c203a \ + --hash=sha256:b1095d95d0c8b37e4d0e17cf1928919cb59222b6344362a1cf6a2f3ca205a28a \ + --hash=sha256:b26a10f9c790bd141ffc8af68520803ed4a44a9258bf7d1eea9bfdd36bd6df7f \ + --hash=sha256:b8e4b8a852251cef09038b75f30fce1227010835f4e19cfbd436027acba2697c \ + --hash=sha256:b974caec2c330c22bbe765705a5ac7d98ec3022811dec2042d561a3c65cb991b \ + --hash=sha256:d7ce75c498bff758548ec6e4424ab4271aa257e5887cc436a54bc947fd46199a \ + --hash=sha256:d8d75e4f879b908be66cce05ba6c05791a5dbb4a15e39abc01aa25c8a2492bd9 \ + --hash=sha256:e068ef844a327877bfefbef1bc6fb7284c727bb87af80095f08d95bcaf7b8bb2 \ + --hash=sha256:f8ea989965a4f636a309444bd696ab877bba373d5d67bf744785f9bd8c560865 \ + --hash=sha256:f93cae08e8ed20f2d5b777a8602a71f9418389c661d2c937e84d94863e7e7011 \ + --hash=sha256:ff3c89cecea62af8ca02aa33cab0f2edc0214c747eac7d3364ed6b2640cb55e4 pgvector==0.4.2 \ --hash=sha256:322cac0c1dc5d41c9ecf782bd9991b7966685dee3a00bc873631391ed949513a \ --hash=sha256:549d45f7a18593783d5eec609ea1684a724ba8405c4cb182a0b2b08aeff04e08 @@ -527,9 +556,12 @@ pydantic-settings==2.13.1 \ pyjwt==2.12.1 \ --hash=sha256:28ca37c070cad8ba8cd9790cd940535d40274d22f80ab87f3ac6a713e6e8454c \ --hash=sha256:c74a7a2adf861c04d002db713dd85f84beb242228e671280bf709d765b03672b -pypdf==6.9.1 \ - --hash=sha256:ae052407d33d34de0c86c5c729be6d51010bf36e03035a8f23ab449bca52377d \ - --hash=sha256:f35a6a022348fae47e092a908339a8f3dc993510c026bb39a96718fc7185e89f +pyopenssl==25.3.0 \ + --hash=sha256:1fda6fc034d5e3d179d39e59c1895c9faeaf40a79de5fc4cbbfbe0d36f4a77b6 \ + --hash=sha256:c981cb0a3fd84e8602d7afc209522773b94c1c2446a3c710a75b06fe1beae329 +pypdf==6.9.2 \ + --hash=sha256:662cf29bcb419a36a1365232449624ab40b7c2d0cfc28e54f42eeecd1fd7e844 \ + --hash=sha256:7f850faf2b0d4ab936582c05da32c52214c2b089d61a316627b5bfb5b0dab46c python-dotenv==1.2.2 \ --hash=sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a \ --hash=sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3 @@ -657,6 +689,9 @@ regex==2026.2.28 \ --hash=sha256:fcf26c3c6d0da98fada8ae4ef0aa1c3405a431c0a77eb17306d38a89b02adcd7 \ --hash=sha256:fd0ce43e71d825b7c0661f9c54d4d74bd97c56c3fd102a8985bcfea48236bacb \ --hash=sha256:fd63453f10d29097cc3dc62d070746523973fb5aa1c66d25f8558bebd47fed61 +requests==2.33.0 \ + --hash=sha256:3324635456fa185245e24865e810cecec7b4caf933d7eb133dcde67d48cee69b \ + --hash=sha256:c7ebc5e8b0f21837386ad0e1c8fe8b829fa5f544d8df3b2253bff14ef29d7652 rich==14.3.3 \ --hash=sha256:793431c1f8619afa7d3b52b2cdec859562b950ea0d4b6b505397612db8d5362d \ --hash=sha256:b8daa0b9e4eef54dd8cf7c86c03713f53241884e814f4e2f5fb342fe520f639b @@ -733,9 +768,12 @@ sqlalchemy==2.0.48 \ --hash=sha256:f8649a14caa5f8a243628b1d61cf530ad9ae4578814ba726816adb1121fc493e \ --hash=sha256:fac0fa4e4f55f118fd87177dacb1c6522fe39c28d498d259014020fec9164c29 \ --hash=sha256:fd08b90d211c086181caed76931ecfa2bdfc83eea3cfccdb0f82abc6c4b876cb -starlette==0.52.1 \ - --hash=sha256:0029d43eb3d273bc4f83a08720b4912ea4b071087a3b48db01b7c839f7954d74 \ - --hash=sha256:834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933 +sse-starlette==3.3.3 \ + --hash=sha256:72a95d7575fd5129bd0ae15275ac6432bb35ac542fdebb82889c24bb9f3f4049 \ + --hash=sha256:c5abb5082a1cc1c6294d89c5290c46b5f67808cfdb612b7ec27e8ba061c22e8d +starlette==1.0.0 \ + --hash=sha256:6a4beaf1f81bb472fd19ea9b918b50dc3a77a6f2e190a12954b25e6ed5eea149 \ + --hash=sha256:d3ec55e0bb321692d275455ddfd3df75fff145d009685eb40dc91fc66b03d38b striprtf==0.0.26 \ --hash=sha256:8c8f9d32083cdc2e8bfb149455aa1cc5a4e0a035893bedc75db8b73becb3a1bb \ --hash=sha256:fdb2bba7ac440072d1c41eab50d8d74ae88f60a8b6575c6e2c7805dc462093aa diff --git a/requirements.hashes.wheel.pypi.txt b/requirements.hashes.wheel.pypi.txt index 1f68b9e9..9084eac5 100644 --- a/requirements.hashes.wheel.pypi.txt +++ b/requirements.hashes.wheel.pypi.txt @@ -1,13 +1,16 @@ # This file was autogenerated by uv via the following command: -# uv pip compile requirements.wheel.pypi.txt --refresh --generate-hashes --python-version 3.12 --emit-index-url --no-deps --no-annotate +# uv pip compile requirements.wheel.pypi.txt --refresh --generate-hashes --python-version 3.12 --python-platform x86_64-unknown-linux-gnu --emit-index-url --no-deps --no-annotate --index-url https://pypi.org/simple -griffe==2.0.0 \ - --hash=sha256:5418081135a391c3e6e757a7f3f156f1a1a746cc7b4023868ff7d5e2f9a980aa -griffecli==2.0.0 \ - --hash=sha256:9f7cd9ee9b21d55e91689358978d2385ae65c22f307a63fb3269acf3f21e643d -griffelib==2.0.0 \ - --hash=sha256:01284878c966508b6d6f1dbff9b6fa607bc062d8261c5c7253cb285b06422a7f +griffe==2.0.2 \ + --hash=sha256:2b31816460aee1996af26050a1fc6927a2e5936486856707f55508e4c9b5960b \ + --hash=sha256:c5d56326d159f274492e9bf93a9895cec101155d944caa66d0fc4e0c13751b92 +griffecli==2.0.2 \ + --hash=sha256:0d44d39e59afa81e288a3e1c3bf352cc4fa537483326ac06b8bb6a51fd8303a0 \ + --hash=sha256:40a1ad4181fc39685d025e119ae2c5b669acdc1f19b705fb9bf971f4e6f6dffb +griffelib==2.0.2 \ + --hash=sha256:3cf20b3bc470e83763ffbf236e0076b1211bac1bc67de13daf494640f2de707e \ + --hash=sha256:925c857658fb1ba40c0772c37acbc2ab650bd794d9c1b9726922e36ea4117ea1 omegaconf==2.3.0 \ --hash=sha256:7b4df175cdb08ba400f45cae3bdcae7ba8365db4d165fc65fd04b050ab63b46b \ --hash=sha256:d5d4b6d29955cc50ad50c46dc269bcd92c6e00f5f90d23ab5fee7bfca4ba4cc7 diff --git a/requirements.hashes.wheel.txt b/requirements.hashes.wheel.txt index 011f860d..84d54ffd 100644 --- a/requirements.hashes.wheel.txt +++ b/requirements.hashes.wheel.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile requirements.wheel.txt --refresh --generate-hashes --index-url https://console.redhat.com/api/pypi/public-rhai/rhoai/3.2/cpu-ubi9/simple/ --python-version 3.12 --emit-index-url --no-deps --no-annotate --universal +# uv pip compile requirements.wheel.txt --refresh --generate-hashes --index-url https://console.redhat.com/api/pypi/public-rhai/rhoai/3.2/cpu-ubi9/simple/ --python-version 3.12 --python-platform x86_64-unknown-linux-gnu --emit-index-url --no-deps --no-annotate --index-url https://console.redhat.com/api/pypi/public-rhai/rhoai/3.2/cpu-ubi9/simple/ aiohappyeyeballs==2.6.1 \ @@ -74,6 +74,8 @@ httpcore==1.0.9 \ --hash=sha256:5dcd3467785a24052da9c11f089ec6adaa561e796910af83dfc065e4d72dc79f httpx==0.28.1 \ --hash=sha256:bd045b6f2958f98a2dd325ceb407d65980e0cb8fafc5d4f5cec20d7bda6374c1 +httpx-sse==0.4.3 \ + --hash=sha256:b8c7f0641e92eb1b6119c02803a7f541765a9967778bb31f0bec06654bbb618b idna==3.11 \ --hash=sha256:4c792a69b0c96274db373531875f687f61350e5cc4e0d8596da56db7c7f5dd4c jinja2==3.1.6 \ @@ -100,7 +102,9 @@ markupsafe==3.0.3 \ --hash=sha256:0af6343bc5950d7402fac77cd858153863f2c6ea8fec825bf42b4a779617b228 \ --hash=sha256:9323e478581153f8f8996a8bd6ec11fb4fd238d8a5ba93bda2698080b0441427 \ --hash=sha256:d05f9ff9d70fa9ff4181baf298babf3c87a69fca9e9003e8a77bbc0922ffe55d \ - --hash=sha256:fb13d952fc3e75323d200fedee7bd5c14341500afc2c5d7e0793ae369f933d1c + --hash=sha256:fb13d952fc3e75323d200fedee7bd5c14341500afc2c5d7e0793ae369f933d1c \ + --hash=sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d \ + --hash=sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d mdurl==0.1.2 \ --hash=sha256:60eff0e2c89631c4155af89af07f0d1b7256b9553aaa690afce362e6f29d48fd mpire==2.10.2 \ @@ -168,8 +172,6 @@ pyyaml==6.0.3 \ --hash=sha256:5d20580c71f50c4ec26792ead7d69cc5e243090eb7af843ff7f45efb318adacc referencing==0.37.0 \ --hash=sha256:62c0c42a91db0713eeeecd6f281e0b88d288c01e1ab64a0f3a4a8b1a717433d4 -requests==2.32.5 \ - --hash=sha256:c9a46b7e34f4aaf2dfdd082d6db64e92f265a201f6f273d92be037d08e80dc8a rpds-py==0.30.0 \ --hash=sha256:07708740376815e3428827b399cadc04899df9e9f386abb3dfd14b3c2acfaa9a \ --hash=sha256:77aa81a28a5f33b79dc4af0010a7a883681871c7de3cab995dd27dd8ab5efe52 \ diff --git a/scripts/augment_wheel_hashes.py b/scripts/augment_wheel_hashes.py new file mode 100644 index 00000000..129223b4 --- /dev/null +++ b/scripts/augment_wheel_hashes.py @@ -0,0 +1,187 @@ +#!/usr/bin/env python3 +"""Append missing PyPI wheel hashes for Konflux RHOAI wheel requirements. + +uv --generate-hashes against the RHOAI index can list fewer hashes than pip uses +when the build installs a Linux cp312 manylinux wheel (x86_64 or aarch64) from a mirror. + +We only patch packages in EXTRA_HASH_PACKAGES so this stays a tiny diff (add +names here if CI reports a hash mismatch for another wheel). +""" + +from __future__ import annotations + +import json +import re +import sys +import urllib.error +import urllib.request +from pathlib import Path +from typing import Any, cast + +EXTRA_HASH_PACKAGES = frozenset({"markupsafe"}) + +HASH_LINE = re.compile(r"^(\s+)--hash=sha256:([a-f0-9]+)\s*(\\)?\s*$") + + +def parse_pkg_header(line: str) -> tuple[str, str] | None: + """Parse a requirement line into a distribution name and pinned version. + + Args: + line: First line of a block (a ``name==version`` pin, optionally continued). + + Returns: + ``(name, version)`` if the line is a ``name==version`` pin, else ``None``. + """ + s = line.rstrip("\n").rstrip().rstrip("\\").strip() + if "==" not in s or s.startswith("#") or s.startswith("--"): + return None + name, _, ver = s.partition("==") + name, ver = name.strip(), ver.strip() + if not name or not ver: + return None + return name, ver + + +def load_pypi_release(name: str, version: str) -> dict[str, Any] | None: + """Fetch PyPI project metadata JSON for a release. + + Args: + name: Distribution name as in the requirements file. + version: Exact version string for that release. + + Returns: + The parsed JSON object, or ``None`` if the release is not on PyPI (404). + """ + norm = name.replace("_", "-").lower() + url = f"https://pypi.org/pypi/{norm}/{version}/json" + req = urllib.request.Request( # noqa: S310 + url, headers={"User-Agent": "augment-wheel-hashes (konflux)"} + ) + try: + with urllib.request.urlopen(req, timeout=120) as r: # noqa: S310 + return cast("dict[str, Any]", json.load(r)) + except urllib.error.HTTPError as e: + if e.code == 404: + return None + raise + + +def missing_cp312_linux_manylinux_hashes( + urls: list[dict[str, Any]], existing: set[str] +) -> list[str]: + """List sha256 digests for cp312 manylinux wheels on Linux x86_64 and aarch64 not yet pinned. + + Args: + urls: The ``urls`` list from a PyPI release JSON response. + existing: Hex digests already present in the requirements block. + + Returns: + Sorted list of missing hex sha256 digests (one entry per distinct wheel file). + """ + found: set[str] = set() + for u in urls: + fn = u.get("filename", "") + if not fn.endswith(".whl"): + continue + dig = (u.get("digests") or {}).get("sha256") + if not dig or dig in existing or dig in found: + continue + if "cp312" not in fn or "manylinux" not in fn: + continue + if "x86_64" not in fn and "aarch64" not in fn: + continue + if "i686" in fn: + continue + found.add(dig) + return sorted(found) + + +def _append_hash_lines(out: list[str], hashes: list[str]) -> None: + """Append ``--hash=sha256:...`` lines, preserving requirements.txt continuation style.""" + for i, sha in enumerate(hashes): + if i == 0: + out[-1] = out[-1].rstrip("\n").rstrip() + " \\\n" + is_last = i == len(hashes) - 1 + if is_last: + out.append(f" --hash=sha256:{sha}\n") + else: + out.append(f" --hash=sha256:{sha} \\\n") + + +def augment_block(lines: list[str]) -> list[str]: + """Append missing wheel hash lines for allowlisted packages when needed. + + Args: + lines: Lines for one requirement block (header plus indented ``--hash`` lines). + + Returns: + The same lines, possibly with extra ``--hash=sha256:...`` lines appended. + """ + if not lines: + return lines + first = lines[0] + parsed = parse_pkg_header(first) + if not parsed: + return lines + name, version = parsed + canon = name.replace("_", "-").lower() + if canon not in EXTRA_HASH_PACKAGES: + return lines + + existing = set() + for line in lines: + m = HASH_LINE.match(line) + if m: + existing.add(m.group(2)) + + data = load_pypi_release(name, version) + if not data: + return lines + urls = cast("list[dict[str, Any]]", data.get("urls") or []) + to_add = missing_cp312_linux_manylinux_hashes(urls, existing) + if not to_add: + return lines + + out = list(lines) + _append_hash_lines(out, to_add) + return out + + +def augment_file(path: Path) -> None: + """Walk a hashed requirements file and augment each package block in place. + + Args: + path: Path to ``requirements.hashes.wheel.txt`` (or compatible format). + """ + raw = path.read_text() + lines = raw.splitlines(keepends=True) + out: list[str] = [] + i = 0 + while i < len(lines): + line = lines[i] + if line.strip() and not line[0].isspace() and parse_pkg_header(line): + block = [line] + i += 1 + while i < len(lines) and lines[i].startswith((" ", "\t")): + block.append(lines[i]) + i += 1 + out.extend(augment_block(block)) + continue + out.append(line) + i += 1 + path.write_text("".join(out)) + + +def main() -> None: + """Run the augmenter: one argument, the hashed wheel requirements path.""" + if len(sys.argv) != 2: + print( + "usage: augment_wheel_hashes.py ", + file=sys.stderr, + ) + sys.exit(2) + augment_file(Path(sys.argv[1])) + + +if __name__ == "__main__": + main() diff --git a/scripts/konflux_requirements.sh b/scripts/konflux_requirements.sh index 086b8cca..1121b040 100755 --- a/scripts/konflux_requirements.sh +++ b/scripts/konflux_requirements.sh @@ -82,8 +82,10 @@ echo "Packages from console.redhat.com written to: $WHEEL_FILE ($(wc -l < "$WHEE # Use stdout redirection instead of -o flag to work around uv bug where -o reuses stale hashes from existing output file -uv pip compile "$WHEEL_FILE" --refresh --generate-hashes --index-url $RHOAI_INDEX_URL --python-version 3.12 --emit-index-url --no-deps --no-annotate --universal > "$WHEEL_HASH_FILE" -uv pip compile "$WHEEL_FILE_PYPI" --refresh --generate-hashes --python-version 3.12 --emit-index-url --no-deps --no-annotate > "$WHEEL_HASH_FILE_PYPI" +# RHOAI-only --generate-hashes can omit the hash for the Linux cp312 manylinux wheel pip actually installs. +uv pip compile "$WHEEL_FILE" --refresh --generate-hashes --index-url $RHOAI_INDEX_URL --python-version 3.12 --python-platform x86_64-unknown-linux-gnu --emit-index-url --no-deps --no-annotate > "$WHEEL_HASH_FILE" +uv run python scripts/augment_wheel_hashes.py "$WHEEL_HASH_FILE" +uv pip compile "$WHEEL_FILE_PYPI" --refresh --generate-hashes --python-version 3.12 --python-platform x86_64-unknown-linux-gnu --emit-index-url --no-deps --no-annotate > "$WHEEL_HASH_FILE_PYPI" uv pip compile "$SOURCE_FILE" --refresh --generate-hashes --python-version 3.12 --emit-index-url --no-deps --no-annotate > "$SOURCE_HASH_FILE" uv run pybuild-deps compile --output-file="$BUILD_FILE" "$SOURCE_FILE" diff --git a/uv.lock b/uv.lock index a4b16192..32b6d119 100644 --- a/uv.lock +++ b/uv.lock @@ -313,6 +313,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2a/68/687187c7e26cb24ccbd88e5069f5ef00eba804d36dde11d99aad0838ab45/charset_normalizer-3.4.6-py3-none-any.whl", hash = "sha256:947cf925bc916d90adba35a64c82aace04fa39b46b52d4630ece166655905a69", size = 61455, upload-time = "2026-03-15T18:53:23.833Z" }, ] +[[package]] +name = "circuitbreaker" +version = "2.1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/ac/de7a92c4ed39cba31fe5ad9203b76a25ca67c530797f6bb420fff5f65ccb/circuitbreaker-2.1.3.tar.gz", hash = "sha256:1a4baee510f7bea3c91b194dcce7c07805fe96c4423ed5594b75af438531d084", size = 10787, upload-time = "2025-03-31T08:12:08.963Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/34/15f08edd4628f65217de1fc3c1a27c82e46fe357d60c217fc9881e12ebcc/circuitbreaker-2.1.3-py3-none-any.whl", hash = "sha256:87ba6a3ed03fdc7032bc175561c2b04d52ade9d5faf94ca2b035fbdc5e6b1dd1", size = 7737, upload-time = "2025-03-31T08:12:07.802Z" }, +] + [[package]] name = "click" version = "8.3.1" @@ -763,6 +772,7 @@ dependencies = [ { name = "griffecli" }, { name = "griffelib" }, ] +sdist = { url = "https://files.pythonhosted.org/packages/04/56/28a0accac339c164b52a92c6cfc45a903acc0c174caa5c1713803467b533/griffe-2.0.0.tar.gz", hash = "sha256:c68979cd8395422083a51ea7cf02f9c119d889646d99b7b656ee43725de1b80f", size = 293906, upload-time = "2026-03-23T21:06:53.402Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/8b/94/ee21d41e7eb4f823b94603b9d40f86d3c7fde80eacc2c3c71845476dddaa/griffe-2.0.0-py3-none-any.whl", hash = "sha256:5418081135a391c3e6e757a7f3f156f1a1a746cc7b4023868ff7d5e2f9a980aa", size = 5214, upload-time = "2026-02-09T19:09:44.105Z" }, ] @@ -775,6 +785,7 @@ dependencies = [ { name = "colorama" }, { name = "griffelib" }, ] +sdist = { url = "https://files.pythonhosted.org/packages/a4/f8/2e129fd4a86e52e58eefe664de05e7d502decf766e7316cc9e70fdec3e18/griffecli-2.0.0.tar.gz", hash = "sha256:312fa5ebb4ce6afc786356e2d0ce85b06c1c20d45abc42d74f0cda65e159f6ef", size = 56213, upload-time = "2026-03-23T21:06:54.8Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e6/ed/d93f7a447bbf7a935d8868e9617cbe1cadf9ee9ee6bd275d3040fbf93d60/griffecli-2.0.0-py3-none-any.whl", hash = "sha256:9f7cd9ee9b21d55e91689358978d2385ae65c22f307a63fb3269acf3f21e643d", size = 9345, upload-time = "2026-02-09T19:09:42.554Z" }, ] @@ -783,6 +794,7 @@ wheels = [ name = "griffelib" version = "2.0.0" source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ad/06/eccbd311c9e2b3ca45dbc063b93134c57a1ccc7607c5e545264ad092c4a9/griffelib-2.0.0.tar.gz", hash = "sha256:e504d637a089f5cab9b5daf18f7645970509bf4f53eda8d79ed71cce8bd97934", size = 166312, upload-time = "2026-03-23T21:06:55.954Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/4d/51/c936033e16d12b627ea334aaaaf42229c37620d0f15593456ab69ab48161/griffelib-2.0.0-py3-none-any.whl", hash = "sha256:01284878c966508b6d6f1dbff9b6fa607bc062d8261c5c7253cb285b06422a7f", size = 142004, upload-time = "2026-02-09T19:09:40.561Z" }, ] @@ -840,6 +852,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, ] +[[package]] +name = "httpx-sse" +version = "0.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/4c/751061ffa58615a32c31b2d82e8482be8dd4a89154f003147acee90f2be9/httpx_sse-0.4.3.tar.gz", hash = "sha256:9b1ed0127459a66014aec3c56bebd93da3c1bc8bb6618c8082039a44889a755d", size = 15943, upload-time = "2025-10-10T21:48:22.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl", hash = "sha256:0ac1c9fe3c0afad2e0ebb25a934a59f4c7823b60792691f779fad2c5568830fc", size = 8960, upload-time = "2025-10-10T21:48:21.158Z" }, +] + [[package]] name = "huggingface-hub" version = "0.36.2" @@ -1091,7 +1112,7 @@ dev = [ requires-dist = [ { name = "aiosqlite", specifier = ">=0.21.0" }, { name = "certifi", specifier = ">=2025.10.5" }, - { name = "chardet", specifier = ">=5.2.0" }, + { name = "chardet", specifier = "==7.2.0" }, { name = "docling", specifier = ">=2.68.0,<2.73.0" }, { name = "einops", specifier = ">=0.8.1" }, { name = "faiss-cpu", specifier = ">=1.11.0.post1" }, @@ -1102,9 +1123,9 @@ requires-dist = [ { name = "llama-index-readers-file", specifier = ">=0.4.11" }, { name = "llama-index-vector-stores-faiss", specifier = ">=0.3.0" }, { name = "llama-index-vector-stores-postgres", specifier = ">=0.5.4" }, - { name = "llama-stack", specifier = "==0.4.3" }, - { name = "llama-stack-api", specifier = "==0.4.4" }, - { name = "llama-stack-client", specifier = "==0.4.3" }, + { name = "llama-stack", specifier = "==0.5.0" }, + { name = "llama-stack-api", specifier = "==0.5.0" }, + { name = "llama-stack-client", specifier = "==0.5.0" }, { name = "python-frontmatter", specifier = ">=1.1.0" }, { name = "pyyaml", specifier = ">=6.0.2" }, { name = "sqlite-vec", specifier = ">=0.1.6" }, @@ -1374,7 +1395,7 @@ wheels = [ [[package]] name = "llama-stack" -version = "0.4.3" +version = "0.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, @@ -1387,9 +1408,13 @@ dependencies = [ { name = "jinja2" }, { name = "jsonschema" }, { name = "llama-stack-api" }, + { name = "mcp" }, + { name = "numpy" }, + { name = "oci" }, { name = "openai" }, { name = "opentelemetry-exporter-otlp-proto-http" }, { name = "opentelemetry-sdk" }, + { name = "oracledb" }, { name = "pillow" }, { name = "prompt-toolkit" }, { name = "psycopg2-binary" }, @@ -1407,14 +1432,14 @@ dependencies = [ { name = "urllib3" }, { name = "uvicorn" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/57/f8/b46c825c7d4050524ca4da9ff7f2622b101044f65cf50f708cf5b6ac935d/llama_stack-0.4.3.tar.gz", hash = "sha256:70d379ae9dbb5b1d0693f14054d9817aba183ffcd805133f0a4442baee132c6d", size = 3357773, upload-time = "2026-01-26T21:46:01.588Z" } +sdist = { url = "https://files.pythonhosted.org/packages/71/79/e54a4c242bec4656314bccbc65fccc9acac337f83299e12ae934f320c5a2/llama_stack-0.5.0.tar.gz", hash = "sha256:ec3b0455eaa5b24fa53c1b789c18ff8d14580109c7f4ccb64da069b25d0ccde9", size = 16022010, upload-time = "2026-02-05T17:24:31.338Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f2/eb/a4c6c6e6391e13b7d71a116df847b13c334355e9ec18441635140b8fbe1f/llama_stack-0.4.3-py3-none-any.whl", hash = "sha256:423207eae2b640894992a9075ff9dd6300ff904ab06a49fe38cfe0bb809d4669", size = 3695786, upload-time = "2026-01-26T21:45:59.607Z" }, + { url = "https://files.pythonhosted.org/packages/eb/d4/4c02eef79b6bd8b4b6670a2f0386981cf81059ef79bbec4fd6e7433c7346/llama_stack-0.5.0-py3-none-any.whl", hash = "sha256:a1bb2aacf61c293693e9d1986a173cd5088c3ee7269d9fd1f584bbca98e98f40", size = 3978735, upload-time = "2026-02-05T17:24:28.954Z" }, ] [[package]] name = "llama-stack-api" -version = "0.4.4" +version = "0.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fastapi" }, @@ -1424,14 +1449,14 @@ dependencies = [ { name = "opentelemetry-sdk" }, { name = "pydantic" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a9/84/075d5e4b2419777f7dc92a1153c683d82180739754c39ccb3ae01a9dc535/llama_stack_api-0.4.4.tar.gz", hash = "sha256:3973ca3bacf86916e04e521f77e7909533eec7364d32c3eabc35dc2976dbfe7d", size = 106579, upload-time = "2026-01-30T16:28:38.051Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4d/44/3fa5f13b5da7eed8f790ae65784c6efbc325c142af5f6f80537717912af0/llama_stack_api-0.5.0.tar.gz", hash = "sha256:51074ec06ab87ece7e9461bf47d878b25eb232b2a009749314e2b8a5a5d83ca0", size = 126401, upload-time = "2026-02-05T17:23:55.323Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2d/a0/e32f5b39a029c6fd120216d122a5333e8e4889103da56ff9efd6601eb987/llama_stack_api-0.4.4-py3-none-any.whl", hash = "sha256:7bbc63330ed186502dcd48f65cae014dbeb788ba5690be738c98693cfcd2f599", size = 107030, upload-time = "2026-01-30T16:28:36.725Z" }, + { url = "https://files.pythonhosted.org/packages/1f/d7/4238a8f088d756ab756060d4daa05304dd72b209015adf31f6799099affd/llama_stack_api-0.5.0-py3-none-any.whl", hash = "sha256:dfd4ffff70207c49c8e734b503b42bc41860d271e7fe8745a26a41a4d4419ff8", size = 151595, upload-time = "2026-02-05T17:23:54.022Z" }, ] [[package]] name = "llama-stack-client" -version = "0.4.3" +version = "0.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -1450,9 +1475,9 @@ dependencies = [ { name = "tqdm" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/db/3d/2aaeeef910e821ef7d3e65f3d773ba183cc84b7852f877396f64619a250c/llama_stack_client-0.4.3.tar.gz", hash = "sha256:cb807be258206e8fedeb5e5ceba7be7108d3badb31d74199406808c3d1679c35", size = 352952, upload-time = "2026-01-26T21:45:09.725Z" } +sdist = { url = "https://files.pythonhosted.org/packages/af/a1/1bd9ed2b6982fb1edf0215be1a4569eb65c9354b86bfdcb5b1414b489162/llama_stack_client-0.5.0.tar.gz", hash = "sha256:e005ae9d975cda30b3b86261057f228d700107e263e12b796b920cd1fb9ba968", size = 368629, upload-time = "2026-02-05T17:23:06.688Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/39/193aad0d49d834539fdc04c5f774fda22283267aff2400b68ffeb307474c/llama_stack_client-0.4.3-py3-none-any.whl", hash = "sha256:97b8cc5032bad4f0cdd1b0ae992cf44f5554679d315b7c40f46deb358c041f50", size = 375940, upload-time = "2026-01-26T21:45:08.067Z" }, + { url = "https://files.pythonhosted.org/packages/2d/93/63b434955cdb80d54c69bdb51ecd1a12595451ce238667fdaa125fb7d1ec/llama_stack_client-0.5.0-py3-none-any.whl", hash = "sha256:5e7272c7fb58cd169985191c42af78dc6c4d212b7050949b063788bfb9e7ed36", size = 391950, upload-time = "2026-02-05T17:23:04.238Z" }, ] [[package]] @@ -1554,6 +1579,31 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350, upload-time = "2022-01-24T01:14:49.62Z" }, ] +[[package]] +name = "mcp" +version = "1.26.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "httpx" }, + { name = "httpx-sse" }, + { name = "jsonschema" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "pyjwt", extra = ["crypto"] }, + { name = "python-multipart" }, + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "sse-starlette" }, + { name = "starlette" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, + { name = "uvicorn", marker = "sys_platform != 'emscripten'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/6d/62e76bbb8144d6ed86e202b5edd8a4cb631e7c8130f3f4893c3f90262b10/mcp-1.26.0.tar.gz", hash = "sha256:db6e2ef491eecc1a0d93711a76f28dec2e05999f93afd48795da1c1137142c66", size = 608005, upload-time = "2026-01-24T19:40:32.468Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/d9/eaa1f80170d2b7c5ba23f3b59f766f3a0bb41155fbc32a69adfa1adaaef9/mcp-1.26.0-py3-none-any.whl", hash = "sha256:904a21c33c25aa98ddbeb47273033c435e595bbacfdb177f4bd87f6dceebe1ca", size = 233615, upload-time = "2026-01-24T19:40:30.652Z" }, +] + [[package]] name = "mdurl" version = "0.1.2" @@ -1724,14 +1774,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/71/46/8d1cb3f7a00f2fb6394140e7e6623696e54c6318a9d9691bb4904672cf42/numpy-2.4.3-cp312-cp312-win_arm64.whl", hash = "sha256:2abad5c7fef172b3377502bde47892439bae394a71bc329f31df0fd829b41a9e", size = 10220364, upload-time = "2026-03-09T07:56:49.849Z" }, ] +[[package]] +name = "oci" +version = "2.168.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "circuitbreaker" }, + { name = "cryptography" }, + { name = "pyopenssl" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0b/d1/f7ad612e43390af57427150efe3b93d3f852983d4ba65fa4cb09898f8c9b/oci-2.168.3.tar.gz", hash = "sha256:098c7729a5e97e2bbd67dfb2218da355fbaff79a3e1c20cdbf137c79e97e1e1c", size = 16684155, upload-time = "2026-03-24T04:32:52.412Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/30/7016a8bf2e02cb960974a4101dabb9da590540e584d446421375d72b5cf9/oci-2.168.3-py3-none-any.whl", hash = "sha256:370294488351dbb7cddc208bbbf64535e2b1f065e61f7f893de0ba1ac61c2d9a", size = 34129772, upload-time = "2026-03-24T04:32:44.178Z" }, +] + [[package]] name = "ocrmac" version = "1.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "click" }, - { name = "pillow" }, - { name = "pyobjc-framework-vision" }, + { name = "click", marker = "sys_platform == 'darwin'" }, + { name = "pillow", marker = "sys_platform == 'darwin'" }, + { name = "pyobjc-framework-vision", marker = "sys_platform == 'darwin'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/5e/07/3e15ab404f75875c5e48c47163300eb90b7409044d8711fc3aaf52503f2e/ocrmac-1.0.1.tar.gz", hash = "sha256:507fe5e4cbd67b2d03f6729a52bbc11f9d0b58241134eb958a5daafd4b9d93d9", size = 1454317, upload-time = "2026-01-08T16:44:26.412Z" } wheels = [ @@ -1882,6 +1950,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b2/37/cc6a55e448deaa9b27377d087da8615a3416d8ad523d5960b78dbeadd02a/opentelemetry_semantic_conventions-0.61b0-py3-none-any.whl", hash = "sha256:fa530a96be229795f8cef353739b618148b0fe2b4b3f005e60e262926c4d38e2", size = 231621, upload-time = "2026-03-04T14:17:19.33Z" }, ] +[[package]] +name = "oracledb" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f7/02/70a872d1a4a739b4f7371ab8d3d5ed8c6e57e142e2503531aafcb220893c/oracledb-3.4.2.tar.gz", hash = "sha256:46e0f2278ff1fe83fbc33a3b93c72d429323ec7eed47bc9484e217776cd437e5", size = 855467, upload-time = "2026-01-28T17:25:39.91Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/81/2e6154f34b71cd93b4946c73ea13b69d54b8d45a5f6bbffe271793240d21/oracledb-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a7396664e592881225ba66385ee83ce339d864f39003d6e4ca31a894a7e7c552", size = 4220806, upload-time = "2026-01-28T17:26:04.322Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a9/a1d59aaac77d8f727156ec6a3b03399917c90b7da4f02d057f92e5601f56/oracledb-3.4.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f04a2d62073407672f114d02529921de0677c6883ed7c64d8d1a3c04caa3238", size = 2233795, upload-time = "2026-01-28T17:26:05.877Z" }, + { url = "https://files.pythonhosted.org/packages/94/ec/8c4a38020cd251572bd406ddcbde98ca052ec94b5684f9aa9ef1ddfcc68c/oracledb-3.4.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d8d75e4f879b908be66cce05ba6c05791a5dbb4a15e39abc01aa25c8a2492bd9", size = 2424756, upload-time = "2026-01-28T17:26:07.35Z" }, + { url = "https://files.pythonhosted.org/packages/fa/7d/c251c2a8567151ccfcfbe3467ea9a60fb5480dc4719342e2e6b7a9679e5d/oracledb-3.4.2-cp312-cp312-win32.whl", hash = "sha256:31b7ee83c23d0439778303de8a675717f805f7e8edb5556d48c4d8343bcf14f5", size = 1453486, upload-time = "2026-01-28T17:26:08.869Z" }, + { url = "https://files.pythonhosted.org/packages/4c/78/c939f3c16fb39400c4734d5a3340db5659ba4e9dce23032d7b33ccfd3fe5/oracledb-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:ac25a0448fc830fb7029ad50cd136cdbfcd06975d53967e269772cc5cb8c203a", size = 1794445, upload-time = "2026-01-28T17:26:10.66Z" }, +] + [[package]] name = "packaging" version = "26.0" @@ -2280,7 +2365,7 @@ name = "pyobjc-framework-cocoa" version = "12.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyobjc-core" }, + { name = "pyobjc-core", marker = "sys_platform == 'darwin'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/02/a3/16ca9a15e77c061a9250afbae2eae26f2e1579eb8ca9462ae2d2c71e1169/pyobjc_framework_cocoa-12.1.tar.gz", hash = "sha256:5556c87db95711b985d5efdaaf01c917ddd41d148b1e52a0c66b1a2e2c5c1640", size = 2772191, upload-time = "2025-11-14T10:13:02.069Z" } wheels = [ @@ -2292,8 +2377,8 @@ name = "pyobjc-framework-coreml" version = "12.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, + { name = "pyobjc-core", marker = "sys_platform == 'darwin'" }, + { name = "pyobjc-framework-cocoa", marker = "sys_platform == 'darwin'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/30/2d/baa9ea02cbb1c200683cb7273b69b4bee5070e86f2060b77e6a27c2a9d7e/pyobjc_framework_coreml-12.1.tar.gz", hash = "sha256:0d1a4216891a18775c9e0170d908714c18e4f53f9dc79fb0f5263b2aa81609ba", size = 40465, upload-time = "2025-11-14T10:14:02.265Z" } wheels = [ @@ -2305,8 +2390,8 @@ name = "pyobjc-framework-quartz" version = "12.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, + { name = "pyobjc-core", marker = "sys_platform == 'darwin'" }, + { name = "pyobjc-framework-cocoa", marker = "sys_platform == 'darwin'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/94/18/cc59f3d4355c9456fc945eae7fe8797003c4da99212dd531ad1b0de8a0c6/pyobjc_framework_quartz-12.1.tar.gz", hash = "sha256:27f782f3513ac88ec9b6c82d9767eef95a5cf4175ce88a1e5a65875fee799608", size = 3159099, upload-time = "2025-11-14T10:21:24.31Z" } wheels = [ @@ -2318,16 +2403,29 @@ name = "pyobjc-framework-vision" version = "12.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, - { name = "pyobjc-framework-coreml" }, - { name = "pyobjc-framework-quartz" }, + { name = "pyobjc-core", marker = "sys_platform == 'darwin'" }, + { name = "pyobjc-framework-cocoa", marker = "sys_platform == 'darwin'" }, + { name = "pyobjc-framework-coreml", marker = "sys_platform == 'darwin'" }, + { name = "pyobjc-framework-quartz", marker = "sys_platform == 'darwin'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c2/5a/08bb3e278f870443d226c141af14205ff41c0274da1e053b72b11dfc9fb2/pyobjc_framework_vision-12.1.tar.gz", hash = "sha256:a30959100e85dcede3a786c544e621ad6eb65ff6abf85721f805822b8c5fe9b0", size = 59538, upload-time = "2025-11-14T10:23:21.979Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/3a/5a/23502935b3fc877d7573e743fc3e6c28748f33a45c43851d503bde52cde7/pyobjc_framework_vision-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:6b3211d84f3a12aad0cde752cfd43a80d0218960ac9e6b46b141c730e7d655bd", size = 16625, upload-time = "2025-11-14T10:06:44.422Z" }, ] +[[package]] +name = "pyopenssl" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/80/be/97b83a464498a79103036bc74d1038df4a7ef0e402cfaf4d5e113fb14759/pyopenssl-25.3.0.tar.gz", hash = "sha256:c981cb0a3fd84e8602d7afc209522773b94c1c2446a3c710a75b06fe1beae329", size = 184073, upload-time = "2025-09-17T00:32:21.037Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/81/ef2b1dfd1862567d573a4fdbc9f969067621764fbb74338496840a1d2977/pyopenssl-25.3.0-py3-none-any.whl", hash = "sha256:1fda6fc034d5e3d179d39e59c1895c9faeaf40a79de5fc4cbbfbe0d36f4a77b6", size = 57268, upload-time = "2025-09-17T00:32:19.474Z" }, +] + [[package]] name = "pypdf" version = "6.9.1" @@ -2933,6 +3031,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8b/27/fb1b6e3f9072854fe405f7aa99c46d4b465e84c9cec2ff7778edf29ecbbd/sqlite_vec-0.1.7-py3-none-win_amd64.whl", hash = "sha256:0c67877a87cb49426237b950237e82dbeb77778ab2ba89bea859f391fd169382", size = 292804, upload-time = "2026-03-17T07:42:54.325Z" }, ] +[[package]] +name = "sse-starlette" +version = "3.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "starlette" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/14/2f/9223c24f568bb7a0c03d751e609844dce0968f13b39a3f73fbb3a96cd27a/sse_starlette-3.3.3.tar.gz", hash = "sha256:72a95d7575fd5129bd0ae15275ac6432bb35ac542fdebb82889c24bb9f3f4049", size = 32420, upload-time = "2026-03-17T20:05:55.529Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/e2/b8cff57a67dddf9a464d7e943218e031617fb3ddc133aeeb0602ff5f6c85/sse_starlette-3.3.3-py3-none-any.whl", hash = "sha256:c5abb5082a1cc1c6294d89c5290c46b5f67808cfdb612b7ec27e8ba061c22e8d", size = 14329, upload-time = "2026-03-17T20:05:54.35Z" }, +] + [[package]] name = "starlette" version = "0.52.1"