From 5e36861994c1b335fc1bf25ba14bf22c013dee39 Mon Sep 17 00:00:00 2001 From: Victor Bajada Date: Mon, 11 Aug 2025 14:31:09 -0400 Subject: [PATCH 01/13] Updates Tenacity to 9.0.0 Updates the poetry.lock file, reflecting dependency upgrades and version constraints. This ensures compatibility and incorporates the latest features and fixes from the updated packages. Specifically: - Updates poetry version to 2.1.3 - Updates tenacity to 9.1.2 and requires python >=3.9 --- poetry.lock | 71 +++++++++++++++++++++++++++++++++++++++++--------- pyproject.toml | 2 +- 2 files changed, 59 insertions(+), 14 deletions(-) diff --git a/poetry.lock b/poetry.lock index 6a08d84..ad51f6c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. [[package]] name = "anyio" @@ -6,6 +6,7 @@ version = "4.0.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "anyio-4.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"}, {file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"}, @@ -17,7 +18,7 @@ sniffio = ">=1.1" [package.extras] doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17) ; python_version < \"3.12\" and platform_python_implementation == \"CPython\" and platform_system != \"Windows\""] trio = ["trio (>=0.22)"] [[package]] @@ -26,6 +27,7 @@ version = "23.1.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, @@ -36,7 +38,7 @@ cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] dev = ["attrs[docs,tests]", "pre-commit"] docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-no-zope = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.1.1) ; platform_python_implementation == \"CPython\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version < \"3.11\"", "pytest-xdist[psutil]"] [[package]] name = "black" @@ -44,6 +46,7 @@ version = "23.11.0" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "black-23.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dbea0bb8575c6b6303cc65017b46351dc5953eea5c0a59d7b7e3a2d2f433a911"}, {file = "black-23.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:412f56bab20ac85927f3a959230331de5614aecda1ede14b373083f62ec24e6f"}, @@ -84,6 +87,7 @@ version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, @@ -95,6 +99,7 @@ version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" +groups = ["dev"] files = [ {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, @@ -179,6 +184,7 @@ version = "8.1.7" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, @@ -193,6 +199,8 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] +markers = "platform_system == \"Windows\" or sys_platform == \"win32\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -204,6 +212,7 @@ version = "7.3.0" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "coverage-7.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db76a1bcb51f02b2007adacbed4c88b6dee75342c37b05d1822815eed19edee5"}, {file = "coverage-7.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c02cfa6c36144ab334d556989406837336c1d05215a9bdf44c0bc1d1ac1cb637"}, @@ -260,7 +269,7 @@ files = [ ] [package.extras] -toml = ["tomli"] +toml = ["tomli ; python_full_version <= \"3.11.0a6\""] [[package]] name = "docker" @@ -268,6 +277,7 @@ version = "6.1.3" description = "A Python library for the Docker Engine API." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "docker-6.1.3-py3-none-any.whl", hash = "sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9"}, {file = "docker-6.1.3.tar.gz", hash = "sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20"}, @@ -289,6 +299,7 @@ version = "6.1.0" description = "the modular source code checker: pep8 pyflakes and co" optional = false python-versions = ">=3.8.1" +groups = ["dev"] files = [ {file = "flake8-6.1.0-py2.py3-none-any.whl", hash = "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"}, {file = "flake8-6.1.0.tar.gz", hash = "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23"}, @@ -305,6 +316,7 @@ version = "23.7.10" description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle." optional = false python-versions = ">=3.8.1" +groups = ["dev"] files = [ {file = "flake8-bugbear-23.7.10.tar.gz", hash = "sha256:0ebdc7d8ec1ca8bd49347694562381f099f4de2f8ec6bda7a7dca65555d9e0d4"}, {file = "flake8_bugbear-23.7.10-py3-none-any.whl", hash = "sha256:d99d005114020fbef47ed5e4aebafd22f167f9a0fbd0d8bf3c9e90612cb25c34"}, @@ -323,6 +335,7 @@ version = "4.0.10" description = "Git Object Database" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, @@ -337,6 +350,7 @@ version = "3.1.34" description = "GitPython is a Python library used to interact with Git repositories" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "GitPython-3.1.34-py3-none-any.whl", hash = "sha256:5d3802b98a3bae1c2b8ae0e1ff2e4aa16bcdf02c145da34d092324f599f01395"}, {file = "GitPython-3.1.34.tar.gz", hash = "sha256:85f7d365d1f6bf677ae51039c1ef67ca59091c7ebd5a3509aa399d4eda02d6dd"}, @@ -351,6 +365,7 @@ version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, @@ -362,6 +377,7 @@ version = "0.17.3" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "httpcore-0.17.3-py3-none-any.whl", hash = "sha256:c2789b767ddddfa2a5782e3199b2b7f6894540b17b16ec26b2c4d8e103510b87"}, {file = "httpcore-0.17.3.tar.gz", hash = "sha256:a6f30213335e34c1ade7be6ec7c47f19f50c56db36abef1a9dfa3815b1cb3888"}, @@ -383,6 +399,7 @@ version = "0.24.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "httpx-0.24.1-py3-none-any.whl", hash = "sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd"}, {file = "httpx-0.24.1.tar.gz", hash = "sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd"}, @@ -395,7 +412,7 @@ idna = "*" sniffio = "*" [package.extras] -brotli = ["brotli", "brotlicffi"] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -406,6 +423,7 @@ version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" +groups = ["main", "dev"] files = [ {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, @@ -417,6 +435,7 @@ version = "2.0.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -428,6 +447,7 @@ version = "5.12.0" description = "A Python utility / library to sort Python imports." optional = false python-versions = ">=3.8.0" +groups = ["dev"] files = [ {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, @@ -445,6 +465,7 @@ version = "0.7.0" description = "McCabe checker, plugin for flake8" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, @@ -456,6 +477,7 @@ version = "1.5.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "mypy-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f33592ddf9655a4894aef22d134de7393e95fcbdc2d15c1ab65828eee5c66c70"}, {file = "mypy-1.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:258b22210a4a258ccd077426c7a181d789d1121aca6db73a83f79372f5569ae0"}, @@ -501,6 +523,7 @@ version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, @@ -512,6 +535,7 @@ version = "23.1" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, @@ -523,6 +547,7 @@ version = "0.11.2" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, @@ -534,6 +559,7 @@ version = "3.10.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, @@ -549,6 +575,7 @@ version = "1.3.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, @@ -564,6 +591,7 @@ version = "2.11.0" description = "Python style guide checker" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pycodestyle-2.11.0-py2.py3-none-any.whl", hash = "sha256:5d1013ba8dc7895b548be5afb05740ca82454fd899971563d2ef625d090326f8"}, {file = "pycodestyle-2.11.0.tar.gz", hash = "sha256:259bcc17857d8a8b3b4a2327324b79e5f020a13c16074670f9c8c8f872ea76d0"}, @@ -575,6 +603,7 @@ version = "3.1.0" description = "passive checker of Python programs" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pyflakes-3.1.0-py2.py3-none-any.whl", hash = "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774"}, {file = "pyflakes-3.1.0.tar.gz", hash = "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"}, @@ -586,6 +615,7 @@ version = "7.4.1" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pytest-7.4.1-py3-none-any.whl", hash = "sha256:460c9a59b14e27c602eb5ece2e47bec99dc5fc5f6513cf924a7d03a578991b1f"}, {file = "pytest-7.4.1.tar.gz", hash = "sha256:2f2301e797521b23e4d2585a0a3d7b5e50fdddaaf7e7d6773ea26ddb17c213ab"}, @@ -606,6 +636,7 @@ version = "0.21.1" description = "Pytest support for asyncio" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pytest-asyncio-0.21.1.tar.gz", hash = "sha256:40a7eae6dded22c7b604986855ea48400ab15b069ae38116e8c01238e9eeb64d"}, {file = "pytest_asyncio-0.21.1-py3-none-any.whl", hash = "sha256:8666c1c8ac02631d7c51ba282e0c69a8a452b211ffedf2599099845da5c5c37b"}, @@ -624,6 +655,7 @@ version = "4.1.0" description = "Pytest plugin for measuring coverage." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, @@ -642,6 +674,7 @@ version = "3.1.3" description = "Docker integration tests for pytest" optional = false python-versions = ">=3.7.0,<4.0.0" +groups = ["dev"] files = [ {file = "pytest_docker_tools-3.1.3-py3-none-any.whl", hash = "sha256:63e659043160f41d89f94ea42616102594bcc85682aac394fcbc14f14cd1b189"}, {file = "pytest_docker_tools-3.1.3.tar.gz", hash = "sha256:c7e28841839d67b3ac80ad7b345b953701d5ae61ffda97586114244292aeacc0"}, @@ -657,6 +690,7 @@ version = "3.11.1" description = "Thin-wrapper around the mock package for easier use with pytest" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"}, {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"}, @@ -674,6 +708,8 @@ version = "306" description = "Python for Window Extensions" optional = false python-versions = "*" +groups = ["dev"] +markers = "sys_platform == \"win32\"" files = [ {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, @@ -697,6 +733,7 @@ version = "2.31.0" description = "Python HTTP for Humans." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, @@ -718,6 +755,7 @@ version = "5.0.0" description = "A pure Python implementation of a sliding window memory map manager" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, @@ -729,6 +767,7 @@ version = "1.3.0" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, @@ -740,6 +779,7 @@ version = "23.1.0" description = "Structured Logging for Python" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "structlog-23.1.0-py3-none-any.whl", hash = "sha256:79b9e68e48b54e373441e130fa447944e6f87a05b35de23138e475c05d0f7e0e"}, {file = "structlog-23.1.0.tar.gz", hash = "sha256:270d681dd7d163c11ba500bc914b2472d2b50a8ef00faa999ded5ff83a2f906b"}, @@ -753,17 +793,19 @@ typing = ["mypy", "rich", "twisted"] [[package]] name = "tenacity" -version = "8.2.3" +version = "9.1.2" description = "Retry code until it succeeds" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"}, - {file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"}, + {file = "tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138"}, + {file = "tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb"}, ] [package.extras] -doc = ["reno", "sphinx", "tornado (>=4.5)"] +doc = ["reno", "sphinx"] +test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "typing-extensions" @@ -771,6 +813,7 @@ version = "4.7.1" description = "Backported and Experimental Type Hints for Python 3.7+" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, @@ -782,13 +825,14 @@ version = "2.0.4" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -799,6 +843,7 @@ version = "1.6.2" description = "WebSocket client for Python with low level API options" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "websocket-client-1.6.2.tar.gz", hash = "sha256:53e95c826bf800c4c465f50093a8c4ff091c7327023b10bfaff40cf1ef170eaa"}, {file = "websocket_client-1.6.2-py3-none-any.whl", hash = "sha256:ce54f419dfae71f4bdba69ebe65bf7f0a93fe71bc009ad3a010aacc3eebad537"}, @@ -810,6 +855,6 @@ optional = ["python-socks", "wsaccel"] test = ["websockets"] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = ">=3.11,<4.0" -content-hash = "c91ef0571903d611c4fc46919b37c0beac5bae945b9ea5ce315b928c6e17b273" +content-hash = "6ed832d7cb7be44355e52aa316ad3b010bf0e5a1c9326ebd2181cbe027264562" diff --git a/pyproject.toml b/pyproject.toml index ffcafe8..dae7a3b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ readme = "README.md" [tool.poetry.dependencies] python = ">=3.11,<4.0" httpx = "^0.24.1" -tenacity = "^8.0.1" +tenacity = "^9.0.0" structlog = "^23.1.0" [tool.poetry.group.dev.dependencies] From 0736d7b17db7493cc60198f03ed08d3d18f7d9e8 Mon Sep 17 00:00:00 2001 From: Victor Bajada Date: Mon, 11 Aug 2025 22:14:45 -0400 Subject: [PATCH 02/13] Updates GitHub Actions to v4 Updates the `actions/upload-artifact` and `actions/download-artifact` GitHub Actions to version 4 in the CI workflow. This ensures the workflow uses the latest versions of these actions and benefits from any improvements or bug fixes they may contain. --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dcba8ff..152df3b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -99,7 +99,7 @@ jobs: COVERAGE_FILE: .coverage.${{ matrix.python-version }} - name: Upload coverage data - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: coverage-data path: .coverage.* @@ -117,7 +117,7 @@ jobs: with: python-version: ${{env.PYTHON_LATEST}} - run: python -m pip install --upgrade coverage[toml] - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: coverage-data - name: Combine coverage & fail if it's <70%. @@ -126,7 +126,7 @@ jobs: python -m coverage html --skip-covered --skip-empty python -m coverage report --fail-under=70 - name: Upload HTML report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: html-report path: htmlcov @@ -164,4 +164,4 @@ jobs: with: python-version: ${{ env.PYTHON_LATEST }} - run: python -m pip install -e . - - run: python -c 'import foxops_client; print(foxops_client.__version__)' + - run: python -c 'import foxops_client; print(foxops_client.__version__)' \ No newline at end of file From f6d7a9cb56a077fa8288bc13d70ee70d6de8c7ae Mon Sep 17 00:00:00 2001 From: Victor Bajada Date: Mon, 11 Aug 2025 22:30:14 -0400 Subject: [PATCH 03/13] Isolates coverage data per Python version Changes the coverage data artifact name to include the Python version. This prevents conflicts when running coverage analysis for multiple Python versions and ensures that each version's coverage data is correctly tracked. It also enables merging coverage data from different Python versions in a subsequent step. --- .github/workflows/ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 152df3b..780c0b0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,7 +101,7 @@ jobs: - name: Upload coverage data uses: actions/upload-artifact@v4 with: - name: coverage-data + name: coverage-data-${{ matrix.python-version }} path: .coverage.* if-no-files-found: ignore @@ -119,7 +119,8 @@ jobs: - run: python -m pip install --upgrade coverage[toml] - uses: actions/download-artifact@v4 with: - name: coverage-data + name: coverage-data-* + merge-multiple: true - name: Combine coverage & fail if it's <70%. run: | python -m coverage combine From 99e4ac24c1da3f8f50fccd64b752c866bd8ff9cf Mon Sep 17 00:00:00 2001 From: Victor Bajada Date: Mon, 11 Aug 2025 22:38:10 -0400 Subject: [PATCH 04/13] Fix typo in job field --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 780c0b0..0013c60 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -119,7 +119,7 @@ jobs: - run: python -m pip install --upgrade coverage[toml] - uses: actions/download-artifact@v4 with: - name: coverage-data-* + pattern: coverage-data-* merge-multiple: true - name: Combine coverage & fail if it's <70%. run: | From 4f763d1965d93f96cb83289bfd17091a30cfbe80 Mon Sep 17 00:00:00 2001 From: Victor Bajada Date: Mon, 11 Aug 2025 22:45:57 -0400 Subject: [PATCH 05/13] Updates coverage path for Python versions Updates the coverage data artifact path to include the Python version. This ensures that coverage data is stored separately for each Python version used in the CI matrix, preventing potential conflicts and providing accurate coverage reports for each version. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0013c60..78ed0b4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -102,7 +102,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: coverage-data-${{ matrix.python-version }} - path: .coverage.* + path: .coverage.${{ matrix.python-version }} if-no-files-found: ignore From 569bd86c05c40e67962756580fb866882fbf78e5 Mon Sep 17 00:00:00 2001 From: Victor Bajada Date: Thu, 14 Aug 2025 09:20:30 -0400 Subject: [PATCH 06/13] Improves CI coverage reporting Adds debug information to the CI workflow to troubleshoot coverage file handling. Modifies the coverage data upload to warn instead of ignore if no files are found. Adjusts artifact download to use a broader pattern to ensure all coverage data is merged. --- .github/workflows/ci.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 78ed0b4..2bd0859 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -97,13 +97,21 @@ jobs: - run: poetry run pytest --cov=foxops_client env: COVERAGE_FILE: .coverage.${{ matrix.python-version }} + - name: Debug coverage files + run: | + echo "Looking for coverage files:" + ls -la .coverage* || echo "No .coverage files found" + echo "Current directory contents:" + ls -la + echo "Coverage file that should exist: .coverage.${{ matrix.python-version }}" + test -f .coverage.${{ matrix.python-version }} && echo "Coverage file exists" || echo "Coverage file does not exist" - name: Upload coverage data uses: actions/upload-artifact@v4 with: name: coverage-data-${{ matrix.python-version }} path: .coverage.${{ matrix.python-version }} - if-no-files-found: ignore + if-no-files-found: warn coverage: @@ -119,7 +127,7 @@ jobs: - run: python -m pip install --upgrade coverage[toml] - uses: actions/download-artifact@v4 with: - pattern: coverage-data-* + pattern: "*" merge-multiple: true - name: Combine coverage & fail if it's <70%. run: | From f66d489c0d3b36e247f2665bdd6acc43a1b2b3c7 Mon Sep 17 00:00:00 2001 From: Victor Bajada Date: Thu, 14 Aug 2025 12:01:15 -0400 Subject: [PATCH 07/13] Improves test coverage reporting in CI Refactors the CI workflow to reliably collect and upload coverage data. Previously, coverage data was not always being collected correctly, leading to inaccurate reports. This commit ensures that coverage files are properly generated and moved if necessary before being uploaded as artifacts. This will provide more accurate and consistent coverage reporting. --- .github/workflows/ci.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2bd0859..2e4dfa4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -94,9 +94,11 @@ jobs: git config --global user.email "you@example.com" git config --global user.name "Your Name" - - run: poetry run pytest --cov=foxops_client + - name: Run tests with coverage + run: poetry run pytest --cov=foxops_client --cov-report=term --cov-config=pyproject.toml env: COVERAGE_FILE: .coverage.${{ matrix.python-version }} + - name: Debug coverage files run: | echo "Looking for coverage files:" @@ -106,6 +108,13 @@ jobs: echo "Coverage file that should exist: .coverage.${{ matrix.python-version }}" test -f .coverage.${{ matrix.python-version }} && echo "Coverage file exists" || echo "Coverage file does not exist" + - name: Move coverage file if needed + run: | + if [ -f .coverage ]; then + mv .coverage .coverage.${{ matrix.python-version }} + echo "Moved .coverage to .coverage.${{ matrix.python-version }}" + fi + - name: Upload coverage data uses: actions/upload-artifact@v4 with: @@ -113,7 +122,6 @@ jobs: path: .coverage.${{ matrix.python-version }} if-no-files-found: warn - coverage: name: Combine & check coverage runs-on: ubuntu-latest From ae3545ac90ad654d625fa225cb5523700f2fa2d0 Mon Sep 17 00:00:00 2001 From: Victor Bajada Date: Thu, 14 Aug 2025 12:09:37 -0400 Subject: [PATCH 08/13] More debugging --- .github/workflows/ci.yml | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2e4dfa4..de11c89 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,18 +101,27 @@ jobs: - name: Debug coverage files run: | - echo "Looking for coverage files:" - ls -la .coverage* || echo "No .coverage files found" - echo "Current directory contents:" + echo "Current directory: $(pwd)" + echo "All files in current directory:" ls -la - echo "Coverage file that should exist: .coverage.${{ matrix.python-version }}" - test -f .coverage.${{ matrix.python-version }} && echo "Coverage file exists" || echo "Coverage file does not exist" + echo "Looking specifically for coverage files:" + find . -name ".coverage*" -type f 2>/dev/null || echo "No .coverage files found anywhere" + echo "Checking if .coverage exists:" + if [ -f .coverage ]; then + echo ".coverage file exists, size: $(stat -c%s .coverage)" + else + echo ".coverage file does not exist" + fi - name: Move coverage file if needed run: | if [ -f .coverage ]; then + echo "Moving .coverage to .coverage.${{ matrix.python-version }}" mv .coverage .coverage.${{ matrix.python-version }} - echo "Moved .coverage to .coverage.${{ matrix.python-version }}" + echo "Move completed" + ls -la .coverage.${{ matrix.python-version }} + else + echo "No .coverage file to move" fi - name: Upload coverage data From 4aa7bb562f7069d7f5feae19826a59af00c0f034 Mon Sep 17 00:00:00 2001 From: Victor Bajada Date: Thu, 14 Aug 2025 12:19:27 -0400 Subject: [PATCH 09/13] Simplifies debug coverage file checks Refines the debugging steps for coverage files in CI. Removes unnecessary commands and focuses on verifying the existence and size of the expected coverage file. This provides clearer and more concise output for troubleshooting. --- .github/workflows/ci.yml | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index de11c89..9dd056b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,28 +101,10 @@ jobs: - name: Debug coverage files run: | - echo "Current directory: $(pwd)" - echo "All files in current directory:" - ls -la - echo "Looking specifically for coverage files:" - find . -name ".coverage*" -type f 2>/dev/null || echo "No .coverage files found anywhere" - echo "Checking if .coverage exists:" - if [ -f .coverage ]; then - echo ".coverage file exists, size: $(stat -c%s .coverage)" - else - echo ".coverage file does not exist" - fi - - - name: Move coverage file if needed - run: | - if [ -f .coverage ]; then - echo "Moving .coverage to .coverage.${{ matrix.python-version }}" - mv .coverage .coverage.${{ matrix.python-version }} - echo "Move completed" - ls -la .coverage.${{ matrix.python-version }} - else - echo "No .coverage file to move" - fi + echo "Looking for coverage files:" + ls -la .coverage* || echo "No .coverage files found" + echo "Coverage file that should exist: .coverage.${{ matrix.python-version }}" + test -f .coverage.${{ matrix.python-version }} && echo "Coverage file exists and is $(stat -c%s .coverage.${{ matrix.python-version }}) bytes" || echo "Coverage file does not exist" - name: Upload coverage data uses: actions/upload-artifact@v4 From 4ab05ad16c7e4be533ab9d42cb5245f820da998d Mon Sep 17 00:00:00 2001 From: Victor Bajada Date: Thu, 14 Aug 2025 12:27:30 -0400 Subject: [PATCH 10/13] Adds debug information for coverage upload Adds debugging steps to the CI workflow to investigate coverage data upload issues. This includes printing the current directory, listing coverage files, and checking file statistics. --- .github/workflows/ci.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9dd056b..e3b59ac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -106,6 +106,16 @@ jobs: echo "Coverage file that should exist: .coverage.${{ matrix.python-version }}" test -f .coverage.${{ matrix.python-version }} && echo "Coverage file exists and is $(stat -c%s .coverage.${{ matrix.python-version }}) bytes" || echo "Coverage file does not exist" + - name: Final debug before upload + run: | + echo "Current directory: $(pwd)" + echo "Files right before upload:" + ls -la .coverage* + echo "File info:" + stat .coverage.${{ matrix.python-version }} || echo "File vanished!" + echo "Working directory contents:" + ls -la + - name: Upload coverage data uses: actions/upload-artifact@v4 with: From 4c4939b53a948d6c68c68211baffb50c7d0a0f9e Mon Sep 17 00:00:00 2001 From: Victor Bajada Date: Thu, 14 Aug 2025 12:39:47 -0400 Subject: [PATCH 11/13] Fix path for v4 of upload --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e3b59ac..f265189 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -120,7 +120,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: coverage-data-${{ matrix.python-version }} - path: .coverage.${{ matrix.python-version }} + path: ${{ github.workspace }}/.coverage.${{ matrix.python-version }} if-no-files-found: warn coverage: From 0807437939c16cd14ce9d9c671feb61436855a68 Mon Sep 17 00:00:00 2001 From: Victor Bajada Date: Thu, 14 Aug 2025 12:48:45 -0400 Subject: [PATCH 12/13] Fixes coverage data upload in CI Updates the CI workflow to correctly upload coverage data as an artifact. Changes the path for coverage data upload to be relative, and includes hidden files to ensure all data is captured. This resolves issues where the coverage data file was not found during the upload process. --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f265189..c58de8c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -115,12 +115,15 @@ jobs: stat .coverage.${{ matrix.python-version }} || echo "File vanished!" echo "Working directory contents:" ls -la + echo "Current path:" + pwd - name: Upload coverage data uses: actions/upload-artifact@v4 with: name: coverage-data-${{ matrix.python-version }} - path: ${{ github.workspace }}/.coverage.${{ matrix.python-version }} + path: .coverage.${{ matrix.python-version }} + include-hidden-files: true if-no-files-found: warn coverage: From 90a4141da01e17ba1ceb4490e32530e09076fda8 Mon Sep 17 00:00:00 2001 From: Victor Bajada Date: Thu, 14 Aug 2025 12:55:42 -0400 Subject: [PATCH 13/13] Remove Debug Statements --- .github/workflows/ci.yml | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c58de8c..87ee60e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -99,25 +99,6 @@ jobs: env: COVERAGE_FILE: .coverage.${{ matrix.python-version }} - - name: Debug coverage files - run: | - echo "Looking for coverage files:" - ls -la .coverage* || echo "No .coverage files found" - echo "Coverage file that should exist: .coverage.${{ matrix.python-version }}" - test -f .coverage.${{ matrix.python-version }} && echo "Coverage file exists and is $(stat -c%s .coverage.${{ matrix.python-version }}) bytes" || echo "Coverage file does not exist" - - - name: Final debug before upload - run: | - echo "Current directory: $(pwd)" - echo "Files right before upload:" - ls -la .coverage* - echo "File info:" - stat .coverage.${{ matrix.python-version }} || echo "File vanished!" - echo "Working directory contents:" - ls -la - echo "Current path:" - pwd - - name: Upload coverage data uses: actions/upload-artifact@v4 with: