diff --git a/.github/workflows/libraries-assistant-extensions.yml b/.github/workflows/libraries.yml similarity index 58% rename from .github/workflows/libraries-assistant-extensions.yml rename to .github/workflows/libraries.yml index c954edef..d9a44a3b 100644 --- a/.github/workflows/libraries-assistant-extensions.yml +++ b/.github/workflows/libraries.yml @@ -1,27 +1,19 @@ -name: assistant-extensions tests +name: libraries tests on: pull_request: branches: ["main"] - paths: - [ - "libraries/python/assistant-extensions/**", - ".github/workflows/libraries-assistant-extensions.yml", - ] + paths: ["libraries/**", ".github/workflows/libraries.yml"] push: branches: ["main"] - paths: - [ - "libraries/python/assistant-extensions/**", - ".github/workflows/libraries-assistant-extensions.yml", - ] + paths: ["libraries/**", ".github/workflows/libraries.yml"] workflow_dispatch: defaults: run: - working-directory: libraries/python/assistant-extensions + working-directory: libraries jobs: test: diff --git a/assistants/guided-conversation-assistant/uv.lock b/assistants/guided-conversation-assistant/uv.lock index c3948fdf..3816d4d6 100644 --- a/assistants/guided-conversation-assistant/uv.lock +++ b/assistants/guided-conversation-assistant/uv.lock @@ -555,13 +555,6 @@ dependencies = [ [package.metadata] requires-dist = [{ name = "semantic-kernel", specifier = ">=1.11.0" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "h11" version = "0.14.0" diff --git a/assistants/prospector-assistant/uv.lock b/assistants/prospector-assistant/uv.lock index 6927a99a..131339e0 100644 --- a/assistants/prospector-assistant/uv.lock +++ b/assistants/prospector-assistant/uv.lock @@ -182,7 +182,6 @@ dev = [ { name = "pytest", specifier = ">=8.3.1" }, { name = "pytest-asyncio", specifier = ">=0.23.8" }, { name = "pytest-repeat", specifier = ">=0.9.3" }, - { name = "ruff", specifier = ">=0.6.4" }, ] [[package]] @@ -415,13 +414,6 @@ requires-dist = [ { name = "tiktoken", specifier = ">=0.7.0" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "click" version = "8.1.7" @@ -578,13 +570,6 @@ requires-dist = [ { name = "skill-library", editable = "../../libraries/python/skills/skill-library" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "docx2txt" version = "0.8" @@ -615,13 +600,6 @@ dependencies = [ [package.metadata] requires-dist = [{ name = "pydantic", specifier = ">=2.6.1" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "fastapi" version = "0.115.0" @@ -748,13 +726,6 @@ dependencies = [ [package.metadata] requires-dist = [{ name = "semantic-kernel", specifier = ">=1.11.0" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "h11" version = "0.14.0" @@ -1488,13 +1459,6 @@ requires-dist = [ { name = "skill-library", editable = "../../libraries/python/skills/skill-library" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "prance" version = "23.6.21.0" diff --git a/assistants/skill-assistant/pyproject.toml b/assistants/skill-assistant/pyproject.toml index 033543ed..e9328917 100644 --- a/assistants/skill-assistant/pyproject.toml +++ b/assistants/skill-assistant/pyproject.toml @@ -19,7 +19,6 @@ dependencies = [ [tool.uv] package = true -dev-dependencies = ["pytest>=8.3.1", "pytest-asyncio>=0.23.8"] [tool.uv.sources] # If you copy this file to your project, you should verify the relative path to the following: diff --git a/assistants/skill-assistant/pytest.ini b/assistants/skill-assistant/pytest.ini deleted file mode 100644 index c6a6f0e1..00000000 --- a/assistants/skill-assistant/pytest.ini +++ /dev/null @@ -1,11 +0,0 @@ -[pytest] -log_cli = true -log_cli_level = INFO -log_cli_format = %(asctime)s | %(levelname)-7s | %(name)s | %(message)s -testpaths = - tests -asyncio_mode=auto - -# fail tests on warnings -filterwarnings = - error diff --git a/assistants/skill-assistant/uv.lock b/assistants/skill-assistant/uv.lock index 5b12a4b6..b8152e2e 100644 --- a/assistants/skill-assistant/uv.lock +++ b/assistants/skill-assistant/uv.lock @@ -137,12 +137,6 @@ dependencies = [ { name = "semantic-workbench-assistant" }, ] -[package.dev-dependencies] -dev = [ - { name = "pytest" }, - { name = "pytest-asyncio" }, -] - [package.metadata] requires-dist = [ { name = "azure-ai-contentsafety", specifier = ">=1.0.0" }, @@ -156,12 +150,6 @@ requires-dist = [ { name = "semantic-workbench-assistant", editable = "../../libraries/python/semantic-workbench-assistant" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, -] - [[package]] name = "attrs" version = "24.2.0" @@ -352,13 +340,6 @@ requires-dist = [ { name = "tiktoken", specifier = ">=0.7.0" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "click" version = "8.1.7" @@ -494,13 +475,6 @@ requires-dist = [ { name = "skill-library", editable = "../../libraries/python/skills/skill-library" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "email-validator" version = "2.2.0" @@ -525,13 +499,6 @@ dependencies = [ [package.metadata] requires-dist = [{ name = "pydantic", specifier = ">=2.6.1" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "fastapi" version = "0.115.0" @@ -716,15 +683,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, ] -[[package]] -name = "iniconfig" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, -] - [[package]] name = "isodate" version = "0.6.1" @@ -953,24 +911,6 @@ requires-dist = [ { name = "tiktoken", specifier = ">=0.7.0" }, ] -[[package]] -name = "packaging" -version = "24.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", size = 148788 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985 }, -] - -[[package]] -name = "pluggy" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, -] - [[package]] name = "portalocker" version = "2.10.1" @@ -1002,13 +942,6 @@ requires-dist = [ { name = "skill-library", editable = "../../libraries/python/skills/skill-library" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "pycparser" version = "2.22" @@ -1115,33 +1048,6 @@ crypto = [ { name = "cryptography" }, ] -[[package]] -name = "pytest" -version = "8.3.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "iniconfig" }, - { name = "packaging" }, - { name = "pluggy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", size = 1442487 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", size = 342341 }, -] - -[[package]] -name = "pytest-asyncio" -version = "0.24.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pytest" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/52/6d/c6cf50ce320cf8611df7a1254d86233b3df7cc07f9b5f5cbcb82e08aa534/pytest_asyncio-0.24.0.tar.gz", hash = "sha256:d081d828e576d85f875399194281e92bf8a68d60d72d1a2faf2feddb6c46b276", size = 49855 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/31/6607dab48616902f76885dfcf62c08d929796fc3b2d2318faf9fd54dbed9/pytest_asyncio-0.24.0-py3-none-any.whl", hash = "sha256:a811296ed596b69bf0b6f3dc40f83bcaf341b155a269052d82efa2b25ac7037b", size = 18024 }, -] - [[package]] name = "python-dotenv" version = "1.0.1" diff --git a/libraries/python/assistant-drive/assistant_drive/tests/test_basic.py b/libraries/python/assistant-drive/assistant_drive/tests/test_basic.py index 47fb95fe..6fa59db0 100644 --- a/libraries/python/assistant-drive/assistant_drive/tests/test_basic.py +++ b/libraries/python/assistant-drive/assistant_drive/tests/test_basic.py @@ -180,8 +180,7 @@ class TestModel(BaseModel): models = list(drive.read_models(TestModel, "summaries")) assert len(models) == 2 - assert models[0].name == "test1" - assert models[1].name == "test2" + assert sorted([models[0].name, models[1].name]) == ["test1", "test2"] def test_read_model_non_existent_file(drive) -> None: diff --git a/libraries/python/assistant-drive/pyproject.toml b/libraries/python/assistant-drive/pyproject.toml index bb7a432a..c412873a 100644 --- a/libraries/python/assistant-drive/pyproject.toml +++ b/libraries/python/assistant-drive/pyproject.toml @@ -19,7 +19,6 @@ dev-dependencies = [ "pytest>=8.3.1", "pytest-asyncio>=0.23.8", "pytest-repeat>=0.9.3", - "ruff>=0.6.4", "ipykernel>=6.29.5", ] diff --git a/libraries/python/assistant-drive/uv.lock b/libraries/python/assistant-drive/uv.lock index 2a6dc5ed..a1706ac4 100644 --- a/libraries/python/assistant-drive/uv.lock +++ b/libraries/python/assistant-drive/uv.lock @@ -39,7 +39,6 @@ dev = [ { name = "pytest" }, { name = "pytest-asyncio" }, { name = "pytest-repeat" }, - { name = "ruff" }, ] [package.metadata] @@ -55,7 +54,6 @@ dev = [ { name = "pytest", specifier = ">=8.3.1" }, { name = "pytest-asyncio", specifier = ">=0.23.8" }, { name = "pytest-repeat", specifier = ">=0.9.3" }, - { name = "ruff", specifier = ">=0.6.4" }, ] [[package]] @@ -191,13 +189,6 @@ dependencies = [ [package.metadata] requires-dist = [{ name = "pydantic", specifier = ">=2.6.1" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "executing" version = "2.1.0" @@ -643,31 +634,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7b/d6/32fd69744afb53995619bc5effa2a405ae0d343cd3e747d0fbc43fe894ee/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0", size = 1392485 }, ] -[[package]] -name = "ruff" -version = "0.6.9" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/26/0d/6148a48dab5662ca1d5a93b7c0d13c03abd3cc7e2f35db08410e47cef15d/ruff-0.6.9.tar.gz", hash = "sha256:b076ef717a8e5bc819514ee1d602bbdca5b4420ae13a9cf61a0c0a4f53a2baa2", size = 3095355 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6e/8f/f7a0a0ef1818662efb32ed6df16078c95da7a0a3248d64c2410c1e27799f/ruff-0.6.9-py3-none-linux_armv6l.whl", hash = "sha256:064df58d84ccc0ac0fcd63bc3090b251d90e2a372558c0f057c3f75ed73e1ccd", size = 10440526 }, - { url = "https://files.pythonhosted.org/packages/8b/69/b179a5faf936a9e2ab45bb412a668e4661eded964ccfa19d533f29463ef6/ruff-0.6.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:140d4b5c9f5fc7a7b074908a78ab8d384dd7f6510402267bc76c37195c02a7ec", size = 10034612 }, - { url = "https://files.pythonhosted.org/packages/c7/ef/fd1b4be979c579d191eeac37b5cfc0ec906de72c8bcd8595e2c81bb700c1/ruff-0.6.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:53fd8ca5e82bdee8da7f506d7b03a261f24cd43d090ea9db9a1dc59d9313914c", size = 9706197 }, - { url = "https://files.pythonhosted.org/packages/29/61/b376d775deb5851cb48d893c568b511a6d3625ef2c129ad5698b64fb523c/ruff-0.6.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645d7d8761f915e48a00d4ecc3686969761df69fb561dd914a773c1a8266e14e", size = 10751855 }, - { url = "https://files.pythonhosted.org/packages/13/d7/def9e5f446d75b9a9c19b24231a3a658c075d79163b08582e56fa5dcfa38/ruff-0.6.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eae02b700763e3847595b9d2891488989cac00214da7f845f4bcf2989007d577", size = 10200889 }, - { url = "https://files.pythonhosted.org/packages/6c/d6/7f34160818bcb6e84ce293a5966cba368d9112ff0289b273fbb689046047/ruff-0.6.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d5ccc9e58112441de8ad4b29dcb7a86dc25c5f770e3c06a9d57e0e5eba48829", size = 11038678 }, - { url = "https://files.pythonhosted.org/packages/13/34/a40ff8ae62fb1b26fb8e6fa7e64bc0e0a834b47317880de22edd6bfb54fb/ruff-0.6.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:417b81aa1c9b60b2f8edc463c58363075412866ae4e2b9ab0f690dc1e87ac1b5", size = 11808682 }, - { url = "https://files.pythonhosted.org/packages/2e/6d/25a4386ae4009fc798bd10ba48c942d1b0b3e459b5403028f1214b6dd161/ruff-0.6.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3c866b631f5fbce896a74a6e4383407ba7507b815ccc52bcedabb6810fdb3ef7", size = 11330446 }, - { url = "https://files.pythonhosted.org/packages/f7/f6/bdf891a9200d692c94ebcd06ae5a2fa5894e522f2c66c2a12dd5d8cb2654/ruff-0.6.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b118afbb3202f5911486ad52da86d1d52305b59e7ef2031cea3425142b97d6f", size = 12483048 }, - { url = "https://files.pythonhosted.org/packages/a7/86/96f4252f41840e325b3fa6c48297e661abb9f564bd7dcc0572398c8daa42/ruff-0.6.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a67267654edc23c97335586774790cde402fb6bbdb3c2314f1fc087dee320bfa", size = 10936855 }, - { url = "https://files.pythonhosted.org/packages/45/87/801a52d26c8dbf73424238e9908b9ceac430d903c8ef35eab1b44fcfa2bd/ruff-0.6.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3ef0cc774b00fec123f635ce5c547dac263f6ee9fb9cc83437c5904183b55ceb", size = 10713007 }, - { url = "https://files.pythonhosted.org/packages/be/27/6f7161d90320a389695e32b6ebdbfbedde28ccbf52451e4b723d7ce744ad/ruff-0.6.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:12edd2af0c60fa61ff31cefb90aef4288ac4d372b4962c2864aeea3a1a2460c0", size = 10274594 }, - { url = "https://files.pythonhosted.org/packages/00/52/dc311775e7b5f5b19831563cb1572ecce63e62681bccc609867711fae317/ruff-0.6.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:55bb01caeaf3a60b2b2bba07308a02fca6ab56233302406ed5245180a05c5625", size = 10608024 }, - { url = "https://files.pythonhosted.org/packages/98/b6/be0a1ddcbac65a30c985cf7224c4fce786ba2c51e7efeb5178fe410ed3cf/ruff-0.6.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:925d26471fa24b0ce5a6cdfab1bb526fb4159952385f386bdcc643813d472039", size = 10982085 }, - { url = "https://files.pythonhosted.org/packages/bb/a4/c84bc13d0b573cf7bb7d17b16d6d29f84267c92d79b2f478d4ce322e8e72/ruff-0.6.9-py3-none-win32.whl", hash = "sha256:eb61ec9bdb2506cffd492e05ac40e5bc6284873aceb605503d8494180d6fc84d", size = 8522088 }, - { url = "https://files.pythonhosted.org/packages/74/be/fc352bd8ca40daae8740b54c1c3e905a7efe470d420a268cd62150248c91/ruff-0.6.9-py3-none-win_amd64.whl", hash = "sha256:785d31851c1ae91f45b3d8fe23b8ae4b5170089021fbb42402d811135f0b7117", size = 9359275 }, - { url = "https://files.pythonhosted.org/packages/3e/14/fd026bc74ded05e2351681545a5f626e78ef831f8edce064d61acd2e6ec7/ruff-0.6.9-py3-none-win_arm64.whl", hash = "sha256:a9641e31476d601f83cd602608739a0840e348bda93fec9f1ee816f8b6798b93", size = 8679879 }, -] - [[package]] name = "six" version = "1.16.0" diff --git a/libraries/python/assistant-extensions/assistant_extensions/attachments/tests/test_attachments.py b/libraries/python/assistant-extensions/assistant_extensions/attachments/tests/test_attachments.py index c6f4885d..ea9330e1 100644 --- a/libraries/python/assistant-extensions/assistant_extensions/attachments/tests/test_attachments.py +++ b/libraries/python/assistant-extensions/assistant_extensions/attachments/tests/test_attachments.py @@ -73,6 +73,8 @@ async def test_get_completion_messages_for_attachments( ), ) ) + mock_conversation_context.id = "conversation_id" + mock_conversation_context.assistant.id = "assistant_id" mock_conversation_context.get_files.return_value = FileList( files=[ diff --git a/libraries/python/assistant-extensions/uv.lock b/libraries/python/assistant-extensions/uv.lock index 4d096f16..a89cc2e3 100644 --- a/libraries/python/assistant-extensions/uv.lock +++ b/libraries/python/assistant-extensions/uv.lock @@ -62,7 +62,6 @@ dev = [ { name = "pytest", specifier = ">=8.3.1" }, { name = "pytest-asyncio", specifier = ">=0.23.8" }, { name = "pytest-repeat", specifier = ">=0.9.3" }, - { name = "ruff", specifier = ">=0.6.4" }, ] [[package]] @@ -344,13 +343,6 @@ dependencies = [ [package.metadata] requires-dist = [{ name = "pydantic", specifier = ">=2.6.1" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "fastapi" version = "0.115.0" diff --git a/libraries/python/chat-driver/pyproject.toml b/libraries/python/chat-driver/pyproject.toml index 90305f53..8d181953 100644 --- a/libraries/python/chat-driver/pyproject.toml +++ b/libraries/python/chat-driver/pyproject.toml @@ -20,11 +20,6 @@ dependencies = [ [tool.uv] package = true -dev-dependencies = [ - "pytest>=8.3.1", - "pytest-asyncio>=0.23.8", - "pytest-repeat>=0.9.3", -] [tool.uv.sources] context = { path = "../context", editable = true } diff --git a/libraries/python/chat-driver/pytest.ini b/libraries/python/chat-driver/pytest.ini deleted file mode 100644 index 02bae23f..00000000 --- a/libraries/python/chat-driver/pytest.ini +++ /dev/null @@ -1,13 +0,0 @@ -# pytest.ini -[pytest] -minversion = 6.0 -addopts = -vv -rP -pythonpath = . -testpaths = **/tests -filterwarnings = - ignore::DeprecationWarning - ignore::PendingDeprecationWarning -asyncio_mode = auto -log_cli = true -log_cli_level = INFO -log_cli_format = %(asctime)s | %(levelname)-7s | %(name)s | %(message)s diff --git a/libraries/python/chat-driver/uv.lock b/libraries/python/chat-driver/uv.lock index 13206c8e..e847a66c 100644 --- a/libraries/python/chat-driver/uv.lock +++ b/libraries/python/chat-driver/uv.lock @@ -167,13 +167,6 @@ dependencies = [ { name = "tiktoken" }, ] -[package.dev-dependencies] -dev = [ - { name = "pytest" }, - { name = "pytest-asyncio" }, - { name = "pytest-repeat" }, -] - [package.metadata] requires-dist = [ { name = "azure-identity", specifier = ">=1.17.1" }, @@ -188,13 +181,6 @@ requires-dist = [ { name = "tiktoken", specifier = ">=0.7.0" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "colorama" version = "0.4.6" @@ -271,13 +257,6 @@ dependencies = [ [package.metadata] requires-dist = [{ name = "pydantic", specifier = ">=2.6.1" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "function-registry" version = "0.1.0" @@ -359,15 +338,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, ] -[[package]] -name = "iniconfig" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, -] - [[package]] name = "jiter" version = "0.5.0" @@ -446,24 +416,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c7/08/9f22356d4fbd273f734db1e6663b7ca6987943080567f5580471022e57ca/openai-1.51.0-py3-none-any.whl", hash = "sha256:d9affafb7e51e5a27dce78589d4964ce4d6f6d560307265933a94b2e3f3c5d2c", size = 383533 }, ] -[[package]] -name = "packaging" -version = "24.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", size = 148788 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985 }, -] - -[[package]] -name = "pluggy" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, -] - [[package]] name = "portalocker" version = "2.10.1" @@ -573,45 +525,6 @@ crypto = [ { name = "cryptography" }, ] -[[package]] -name = "pytest" -version = "8.3.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "iniconfig" }, - { name = "packaging" }, - { name = "pluggy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", size = 1442487 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", size = 342341 }, -] - -[[package]] -name = "pytest-asyncio" -version = "0.24.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pytest" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/52/6d/c6cf50ce320cf8611df7a1254d86233b3df7cc07f9b5f5cbcb82e08aa534/pytest_asyncio-0.24.0.tar.gz", hash = "sha256:d081d828e576d85f875399194281e92bf8a68d60d72d1a2faf2feddb6c46b276", size = 49855 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/31/6607dab48616902f76885dfcf62c08d929796fc3b2d2318faf9fd54dbed9/pytest_asyncio-0.24.0-py3-none-any.whl", hash = "sha256:a811296ed596b69bf0b6f3dc40f83bcaf341b155a269052d82efa2b25ac7037b", size = 18024 }, -] - -[[package]] -name = "pytest-repeat" -version = "0.9.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pytest" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/86/5e/99365eb229efff0b1bd475886150fc6db9937ab7e1bd21f6f65c1279e0eb/pytest_repeat-0.9.3.tar.gz", hash = "sha256:ffd3836dfcd67bb270bec648b330e20be37d2966448c4148c4092d1e8aba8185", size = 6272 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/49/a8/0a0aec0c2541b8baf4a0b95af2ba99abce217ee43534adf9cb7c908cf184/pytest_repeat-0.9.3-py3-none-any.whl", hash = "sha256:26ab2df18226af9d5ce441c858f273121e92ff55f5bb311d25755b8d7abdd8ed", size = 4196 }, -] - [[package]] name = "python-dotenv" version = "1.0.1" diff --git a/libraries/python/context/uv.lock b/libraries/python/context/uv.lock index c6610fa7..a316da87 100644 --- a/libraries/python/context/uv.lock +++ b/libraries/python/context/uv.lock @@ -59,13 +59,6 @@ dependencies = [ [package.metadata] requires-dist = [{ name = "pydantic", specifier = ">=2.6.1" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "iniconfig" version = "2.0.0" diff --git a/libraries/python/events/pyproject.toml b/libraries/python/events/pyproject.toml index 7d28fc2c..4ed72fe3 100644 --- a/libraries/python/events/pyproject.toml +++ b/libraries/python/events/pyproject.toml @@ -11,11 +11,6 @@ dependencies = [ [tool.uv] package = true -dev-dependencies = [ - "pytest>=8.3.1", - "pytest-asyncio>=0.23.8", - "pytest-repeat>=0.9.3", -] [build-system] requires = ["hatchling"] diff --git a/libraries/python/events/pytest.ini b/libraries/python/events/pytest.ini deleted file mode 100644 index 02bae23f..00000000 --- a/libraries/python/events/pytest.ini +++ /dev/null @@ -1,13 +0,0 @@ -# pytest.ini -[pytest] -minversion = 6.0 -addopts = -vv -rP -pythonpath = . -testpaths = **/tests -filterwarnings = - ignore::DeprecationWarning - ignore::PendingDeprecationWarning -asyncio_mode = auto -log_cli = true -log_cli_level = INFO -log_cli_format = %(asctime)s | %(levelname)-7s | %(name)s | %(message)s diff --git a/libraries/python/events/uv.lock b/libraries/python/events/uv.lock index 8eccfca8..0fcb74ea 100644 --- a/libraries/python/events/uv.lock +++ b/libraries/python/events/uv.lock @@ -14,15 +14,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, ] -[[package]] -name = "colorama" -version = "0.4.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, -] - [[package]] name = "events" version = "0.1.0" @@ -31,50 +22,9 @@ dependencies = [ { name = "pydantic" }, ] -[package.dev-dependencies] -dev = [ - { name = "pytest" }, - { name = "pytest-asyncio" }, - { name = "pytest-repeat" }, -] - [package.metadata] requires-dist = [{ name = "pydantic", specifier = ">=2.6.1" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - -[[package]] -name = "iniconfig" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, -] - -[[package]] -name = "packaging" -version = "24.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", size = 148788 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985 }, -] - -[[package]] -name = "pluggy" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, -] - [[package]] name = "pydantic" version = "2.9.2" @@ -136,45 +86,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a5/ae/e14b0ff8b3f48e02394d8acd911376b7b66e164535687ef7dc24ea03072f/pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5", size = 1919411 }, ] -[[package]] -name = "pytest" -version = "8.3.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "iniconfig" }, - { name = "packaging" }, - { name = "pluggy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", size = 1442487 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", size = 342341 }, -] - -[[package]] -name = "pytest-asyncio" -version = "0.24.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pytest" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/52/6d/c6cf50ce320cf8611df7a1254d86233b3df7cc07f9b5f5cbcb82e08aa534/pytest_asyncio-0.24.0.tar.gz", hash = "sha256:d081d828e576d85f875399194281e92bf8a68d60d72d1a2faf2feddb6c46b276", size = 49855 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/31/6607dab48616902f76885dfcf62c08d929796fc3b2d2318faf9fd54dbed9/pytest_asyncio-0.24.0-py3-none-any.whl", hash = "sha256:a811296ed596b69bf0b6f3dc40f83bcaf341b155a269052d82efa2b25ac7037b", size = 18024 }, -] - -[[package]] -name = "pytest-repeat" -version = "0.9.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pytest" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/86/5e/99365eb229efff0b1bd475886150fc6db9937ab7e1bd21f6f65c1279e0eb/pytest_repeat-0.9.3.tar.gz", hash = "sha256:ffd3836dfcd67bb270bec648b330e20be37d2966448c4148c4092d1e8aba8185", size = 6272 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/49/a8/0a0aec0c2541b8baf4a0b95af2ba99abce217ee43534adf9cb7c908cf184/pytest_repeat-0.9.3-py3-none-any.whl", hash = "sha256:26ab2df18226af9d5ce441c858f273121e92ff55f5bb311d25755b8d7abdd8ed", size = 4196 }, -] - [[package]] name = "typing-extensions" version = "4.12.2" diff --git a/libraries/python/function-registry/uv.lock b/libraries/python/function-registry/uv.lock index 54e2ae7a..4e4e8c94 100644 --- a/libraries/python/function-registry/uv.lock +++ b/libraries/python/function-registry/uv.lock @@ -226,13 +226,6 @@ dependencies = [ [package.metadata] requires-dist = [{ name = "pydantic", specifier = ">=2.6.1" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "function-registry" version = "0.1.0" diff --git a/libraries/python/guided-conversation/pyproject.toml b/libraries/python/guided-conversation/pyproject.toml index 673ea388..6ea9df3d 100644 --- a/libraries/python/guided-conversation/pyproject.toml +++ b/libraries/python/guided-conversation/pyproject.toml @@ -11,11 +11,6 @@ dependencies = [ [tool.uv] package = true -dev-dependencies = [ - "pytest>=8.3.1", - "pytest-asyncio>=0.23.8", - "pytest-repeat>=0.9.3", -] [tool.uv.sources] diff --git a/libraries/python/guided-conversation/uv.lock b/libraries/python/guided-conversation/uv.lock index 287b5134..345b743d 100644 --- a/libraries/python/guided-conversation/uv.lock +++ b/libraries/python/guided-conversation/uv.lock @@ -366,23 +366,9 @@ dependencies = [ { name = "semantic-kernel" }, ] -[package.dev-dependencies] -dev = [ - { name = "pytest" }, - { name = "pytest-asyncio" }, - { name = "pytest-repeat" }, -] - [package.metadata] requires-dist = [{ name = "semantic-kernel", specifier = ">=1.11.0" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "h11" version = "0.14.0" @@ -442,15 +428,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c0/14/362d31bf1076b21e1bcdcb0dc61944822ff263937b804a79231df2774d28/importlib_metadata-8.4.0-py3-none-any.whl", hash = "sha256:66f342cc6ac9818fc6ff340576acd24d65ba0b3efabb2b4ac08b598965a4a2f1", size = 26269 }, ] -[[package]] -name = "iniconfig" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, -] - [[package]] name = "isodate" version = "0.6.1" @@ -879,15 +856,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5b/0a/acfb251ba01009d3053f04f4661e96abf9d485266b04a0a4deebc702d9cb/pathable-0.4.3-py3-none-any.whl", hash = "sha256:cdd7b1f9d7d5c8b8d3315dbf5a86b2596053ae845f056f57d97c0eefff84da14", size = 9587 }, ] -[[package]] -name = "pluggy" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, -] - [[package]] name = "portalocker" version = "2.10.1" @@ -1028,45 +996,6 @@ version = "0.5.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ce/af/409edba35fc597f1e386e3860303791ab5a28d6cc9a8aecbc567051b19a9/PyMeta3-0.5.1.tar.gz", hash = "sha256:18bda326d9a9bbf587bfc0ee0bc96864964d78b067288bcf55d4d98681d05bcb", size = 29566 } -[[package]] -name = "pytest" -version = "8.3.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "iniconfig" }, - { name = "packaging" }, - { name = "pluggy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", size = 1442487 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", size = 342341 }, -] - -[[package]] -name = "pytest-asyncio" -version = "0.24.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pytest" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/52/6d/c6cf50ce320cf8611df7a1254d86233b3df7cc07f9b5f5cbcb82e08aa534/pytest_asyncio-0.24.0.tar.gz", hash = "sha256:d081d828e576d85f875399194281e92bf8a68d60d72d1a2faf2feddb6c46b276", size = 49855 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/31/6607dab48616902f76885dfcf62c08d929796fc3b2d2318faf9fd54dbed9/pytest_asyncio-0.24.0-py3-none-any.whl", hash = "sha256:a811296ed596b69bf0b6f3dc40f83bcaf341b155a269052d82efa2b25ac7037b", size = 18024 }, -] - -[[package]] -name = "pytest-repeat" -version = "0.9.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pytest" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/86/5e/99365eb229efff0b1bd475886150fc6db9937ab7e1bd21f6f65c1279e0eb/pytest_repeat-0.9.3.tar.gz", hash = "sha256:ffd3836dfcd67bb270bec648b330e20be37d2966448c4148c4092d1e8aba8185", size = 6272 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/49/a8/0a0aec0c2541b8baf4a0b95af2ba99abce217ee43534adf9cb7c908cf184/pytest_repeat-0.9.3-py3-none-any.whl", hash = "sha256:26ab2df18226af9d5ce441c858f273121e92ff55f5bb311d25755b8d7abdd8ed", size = 4196 }, -] - [[package]] name = "python-dotenv" version = "1.0.1" diff --git a/libraries/python/skills/notebooks/uv.lock b/libraries/python/skills/notebooks/uv.lock index 0a927244..7176b36f 100644 --- a/libraries/python/skills/notebooks/uv.lock +++ b/libraries/python/skills/notebooks/uv.lock @@ -153,7 +153,6 @@ dev = [ { name = "pytest", specifier = ">=8.3.1" }, { name = "pytest-asyncio", specifier = ">=0.23.8" }, { name = "pytest-repeat", specifier = ">=0.9.3" }, - { name = "ruff", specifier = ">=0.6.4" }, ] [[package]] @@ -358,13 +357,6 @@ requires-dist = [ { name = "tiktoken", specifier = ">=0.7.0" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "click" version = "8.1.7" @@ -522,13 +514,6 @@ dependencies = [ [package.metadata] requires-dist = [{ name = "pydantic", specifier = ">=2.6.1" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "executing" version = "2.1.0" @@ -1145,13 +1130,6 @@ requires-dist = [ { name = "skill-library", editable = "../skill-library" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "prompt-toolkit" version = "3.0.48" @@ -1227,6 +1205,8 @@ version = "6.0.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/18/c7/8c6872f7372eb6a6b2e4708b88419fb46b857f7a2e1892966b851cc79fc9/psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2", size = 508067 } wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/66/78c9c3020f573c58101dc43a44f6855d01bbbd747e24da2f0c4491200ea3/psutil-6.0.0-cp27-none-win32.whl", hash = "sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35", size = 249766 }, + { url = "https://files.pythonhosted.org/packages/e1/3f/2403aa9558bea4d3854b0e5e567bc3dd8e9fbc1fc4453c0aa9aafeb75467/psutil-6.0.0-cp27-none-win_amd64.whl", hash = "sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1", size = 253024 }, { url = "https://files.pythonhosted.org/packages/0b/37/f8da2fbd29690b3557cca414c1949f92162981920699cd62095a984983bf/psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0", size = 250961 }, { url = "https://files.pythonhosted.org/packages/35/56/72f86175e81c656a01c4401cd3b1c923f891b31fbcebe98985894176d7c9/psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0", size = 287478 }, { url = "https://files.pythonhosted.org/packages/19/74/f59e7e0d392bc1070e9a70e2f9190d652487ac115bb16e2eff6b22ad1d24/psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd", size = 290455 }, diff --git a/libraries/python/skills/skill-library/uv.lock b/libraries/python/skills/skill-library/uv.lock index 6207dfc0..0f99e553 100644 --- a/libraries/python/skills/skill-library/uv.lock +++ b/libraries/python/skills/skill-library/uv.lock @@ -181,13 +181,6 @@ requires-dist = [ { name = "tiktoken", specifier = ">=0.7.0" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "colorama" version = "0.4.6" @@ -264,13 +257,6 @@ dependencies = [ [package.metadata] requires-dist = [{ name = "pydantic", specifier = ">=2.6.1" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "function-registry" version = "0.1.0" diff --git a/libraries/python/skills/skills/Makefile b/libraries/python/skills/skills/Makefile new file mode 100644 index 00000000..4f6df62e --- /dev/null +++ b/libraries/python/skills/skills/Makefile @@ -0,0 +1,2 @@ +repo_root = $(shell git rev-parse --show-toplevel) +include $(repo_root)/tools/makefiles/recursive.mk diff --git a/libraries/python/skills/skills/document-skill/pyproject.toml b/libraries/python/skills/skills/document-skill/pyproject.toml index cb014617..4e437203 100644 --- a/libraries/python/skills/skills/document-skill/pyproject.toml +++ b/libraries/python/skills/skills/document-skill/pyproject.toml @@ -13,11 +13,7 @@ dependencies = [ ] [tool.uv] -dev-dependencies = [ - "pytest>=8.3.1", - "pytest-asyncio>=0.23.8", - "pytest-repeat>=0.9.3", -] +package = true [tool.uv.sources] skill-library = { path = "../../skill-library", editable= true } diff --git a/libraries/python/skills/skills/document-skill/pytest.ini b/libraries/python/skills/skills/document-skill/pytest.ini deleted file mode 100644 index 02bae23f..00000000 --- a/libraries/python/skills/skills/document-skill/pytest.ini +++ /dev/null @@ -1,13 +0,0 @@ -# pytest.ini -[pytest] -minversion = 6.0 -addopts = -vv -rP -pythonpath = . -testpaths = **/tests -filterwarnings = - ignore::DeprecationWarning - ignore::PendingDeprecationWarning -asyncio_mode = auto -log_cli = true -log_cli_level = INFO -log_cli_format = %(asctime)s | %(levelname)-7s | %(name)s | %(message)s diff --git a/libraries/python/skills/skills/document-skill/uv.lock b/libraries/python/skills/skills/document-skill/uv.lock index 58e2f4b2..d35ba0be 100644 --- a/libraries/python/skills/skills/document-skill/uv.lock +++ b/libraries/python/skills/skills/document-skill/uv.lock @@ -181,13 +181,6 @@ requires-dist = [ { name = "tiktoken", specifier = ">=0.7.0" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "colorama" version = "0.4.6" @@ -264,13 +257,6 @@ dependencies = [ { name = "skill-library" }, ] -[package.dev-dependencies] -dev = [ - { name = "pytest" }, - { name = "pytest-asyncio" }, - { name = "pytest-repeat" }, -] - [package.metadata] requires-dist = [ { name = "chat-driver", editable = "../../../chat-driver" }, @@ -279,13 +265,6 @@ requires-dist = [ { name = "skill-library", editable = "../../skill-library" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "events" version = "0.1.0" @@ -297,13 +276,6 @@ dependencies = [ [package.metadata] requires-dist = [{ name = "pydantic", specifier = ">=2.6.1" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "function-registry" version = "0.1.0" @@ -385,15 +357,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, ] -[[package]] -name = "iniconfig" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, -] - [[package]] name = "jiter" version = "0.5.0" @@ -472,24 +435,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c7/08/9f22356d4fbd273f734db1e6663b7ca6987943080567f5580471022e57ca/openai-1.51.0-py3-none-any.whl", hash = "sha256:d9affafb7e51e5a27dce78589d4964ce4d6f6d560307265933a94b2e3f3c5d2c", size = 383533 }, ] -[[package]] -name = "packaging" -version = "24.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", size = 148788 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985 }, -] - -[[package]] -name = "pluggy" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, -] - [[package]] name = "portalocker" version = "2.10.1" @@ -599,45 +544,6 @@ crypto = [ { name = "cryptography" }, ] -[[package]] -name = "pytest" -version = "8.3.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "iniconfig" }, - { name = "packaging" }, - { name = "pluggy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", size = 1442487 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", size = 342341 }, -] - -[[package]] -name = "pytest-asyncio" -version = "0.24.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pytest" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/52/6d/c6cf50ce320cf8611df7a1254d86233b3df7cc07f9b5f5cbcb82e08aa534/pytest_asyncio-0.24.0.tar.gz", hash = "sha256:d081d828e576d85f875399194281e92bf8a68d60d72d1a2faf2feddb6c46b276", size = 49855 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/31/6607dab48616902f76885dfcf62c08d929796fc3b2d2318faf9fd54dbed9/pytest_asyncio-0.24.0-py3-none-any.whl", hash = "sha256:a811296ed596b69bf0b6f3dc40f83bcaf341b155a269052d82efa2b25ac7037b", size = 18024 }, -] - -[[package]] -name = "pytest-repeat" -version = "0.9.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pytest" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/86/5e/99365eb229efff0b1bd475886150fc6db9937ab7e1bd21f6f65c1279e0eb/pytest_repeat-0.9.3.tar.gz", hash = "sha256:ffd3836dfcd67bb270bec648b330e20be37d2966448c4148c4092d1e8aba8185", size = 6272 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/49/a8/0a0aec0c2541b8baf4a0b95af2ba99abce217ee43534adf9cb7c908cf184/pytest_repeat-0.9.3-py3-none-any.whl", hash = "sha256:26ab2df18226af9d5ce441c858f273121e92ff55f5bb311d25755b8d7abdd8ed", size = 4196 }, -] - [[package]] name = "python-dotenv" version = "1.0.1" diff --git a/libraries/python/skills/skills/posix-skill/pyproject.toml b/libraries/python/skills/skills/posix-skill/pyproject.toml index 70282064..b72e1bb0 100644 --- a/libraries/python/skills/skills/posix-skill/pyproject.toml +++ b/libraries/python/skills/skills/posix-skill/pyproject.toml @@ -14,11 +14,6 @@ dependencies = [ [tool.uv] package = true -dev-dependencies = [ - "pytest>=8.3.1", - "pytest-asyncio>=0.23.8", - "pytest-repeat>=0.9.3", -] [tool.uv.sources] skill-library = { path = "../../skill-library", editable= true } diff --git a/libraries/python/skills/skills/posix-skill/pytest.ini b/libraries/python/skills/skills/posix-skill/pytest.ini deleted file mode 100644 index 02bae23f..00000000 --- a/libraries/python/skills/skills/posix-skill/pytest.ini +++ /dev/null @@ -1,13 +0,0 @@ -# pytest.ini -[pytest] -minversion = 6.0 -addopts = -vv -rP -pythonpath = . -testpaths = **/tests -filterwarnings = - ignore::DeprecationWarning - ignore::PendingDeprecationWarning -asyncio_mode = auto -log_cli = true -log_cli_level = INFO -log_cli_format = %(asctime)s | %(levelname)-7s | %(name)s | %(message)s diff --git a/libraries/python/skills/skills/posix-skill/uv.lock b/libraries/python/skills/skills/posix-skill/uv.lock index 8f325090..db4126b0 100644 --- a/libraries/python/skills/skills/posix-skill/uv.lock +++ b/libraries/python/skills/skills/posix-skill/uv.lock @@ -181,13 +181,6 @@ requires-dist = [ { name = "tiktoken", specifier = ">=0.7.0" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "colorama" version = "0.4.6" @@ -264,13 +257,6 @@ dependencies = [ [package.metadata] requires-dist = [{ name = "pydantic", specifier = ">=2.6.1" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "function-registry" version = "0.1.0" @@ -352,15 +338,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, ] -[[package]] -name = "iniconfig" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, -] - [[package]] name = "jiter" version = "0.5.0" @@ -439,24 +416,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c7/08/9f22356d4fbd273f734db1e6663b7ca6987943080567f5580471022e57ca/openai-1.51.0-py3-none-any.whl", hash = "sha256:d9affafb7e51e5a27dce78589d4964ce4d6f6d560307265933a94b2e3f3c5d2c", size = 383533 }, ] -[[package]] -name = "packaging" -version = "24.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", size = 148788 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985 }, -] - -[[package]] -name = "pluggy" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, -] - [[package]] name = "portalocker" version = "2.10.1" @@ -480,13 +439,6 @@ dependencies = [ { name = "skill-library" }, ] -[package.dev-dependencies] -dev = [ - { name = "pytest" }, - { name = "pytest-asyncio" }, - { name = "pytest-repeat" }, -] - [package.metadata] requires-dist = [ { name = "chat-driver", editable = "../../../chat-driver" }, @@ -495,13 +447,6 @@ requires-dist = [ { name = "skill-library", editable = "../../skill-library" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "pycparser" version = "2.22" @@ -599,45 +544,6 @@ crypto = [ { name = "cryptography" }, ] -[[package]] -name = "pytest" -version = "8.3.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "iniconfig" }, - { name = "packaging" }, - { name = "pluggy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", size = 1442487 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", size = 342341 }, -] - -[[package]] -name = "pytest-asyncio" -version = "0.24.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pytest" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/52/6d/c6cf50ce320cf8611df7a1254d86233b3df7cc07f9b5f5cbcb82e08aa534/pytest_asyncio-0.24.0.tar.gz", hash = "sha256:d081d828e576d85f875399194281e92bf8a68d60d72d1a2faf2feddb6c46b276", size = 49855 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/31/6607dab48616902f76885dfcf62c08d929796fc3b2d2318faf9fd54dbed9/pytest_asyncio-0.24.0-py3-none-any.whl", hash = "sha256:a811296ed596b69bf0b6f3dc40f83bcaf341b155a269052d82efa2b25ac7037b", size = 18024 }, -] - -[[package]] -name = "pytest-repeat" -version = "0.9.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pytest" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/86/5e/99365eb229efff0b1bd475886150fc6db9937ab7e1bd21f6f65c1279e0eb/pytest_repeat-0.9.3.tar.gz", hash = "sha256:ffd3836dfcd67bb270bec648b330e20be37d2966448c4148c4092d1e8aba8185", size = 6272 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/49/a8/0a0aec0c2541b8baf4a0b95af2ba99abce217ee43534adf9cb7c908cf184/pytest_repeat-0.9.3-py3-none-any.whl", hash = "sha256:26ab2df18226af9d5ce441c858f273121e92ff55f5bb311d25755b8d7abdd8ed", size = 4196 }, -] - [[package]] name = "python-dotenv" version = "1.0.1" diff --git a/libraries/python/skills/skills/prospector-skill/uv.lock b/libraries/python/skills/skills/prospector-skill/uv.lock index 53ab3b3d..20c61b54 100644 --- a/libraries/python/skills/skills/prospector-skill/uv.lock +++ b/libraries/python/skills/skills/prospector-skill/uv.lock @@ -181,13 +181,6 @@ requires-dist = [ { name = "tiktoken", specifier = ">=0.7.0" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "colorama" version = "0.4.6" @@ -264,13 +257,6 @@ dependencies = [ [package.metadata] requires-dist = [{ name = "pydantic", specifier = ">=2.6.1" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "function-registry" version = "0.1.0" diff --git a/libraries/python/skills/skills/skill-template/uv.lock b/libraries/python/skills/skills/skill-template/uv.lock index 83b9bb2c..031f77c3 100644 --- a/libraries/python/skills/skills/skill-template/uv.lock +++ b/libraries/python/skills/skills/skill-template/uv.lock @@ -181,13 +181,6 @@ requires-dist = [ { name = "tiktoken", specifier = ">=0.7.0" }, ] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "colorama" version = "0.4.6" @@ -264,13 +257,6 @@ dependencies = [ [package.metadata] requires-dist = [{ name = "pydantic", specifier = ">=2.6.1" }] -[package.metadata.requires-dev] -dev = [ - { name = "pytest", specifier = ">=8.3.1" }, - { name = "pytest-asyncio", specifier = ">=0.23.8" }, - { name = "pytest-repeat", specifier = ">=0.9.3" }, -] - [[package]] name = "function-registry" version = "0.1.0" diff --git a/tools/makefiles/docker-assistant.mk b/tools/makefiles/docker-assistant.mk index 713dea7d..e73b9367 100644 --- a/tools/makefiles/docker-assistant.mk +++ b/tools/makefiles/docker-assistant.mk @@ -1,5 +1,5 @@ repo_root = $(shell git rev-parse --show-toplevel) -this_dir = $(patsubst %/,%,$(dir $(realpath $(lastword $(MAKEFILE_LIST))))) +mkfile_dir = $(patsubst %/,%,$(dir $(realpath $(lastword $(MAKEFILE_LIST))))) # the directory containing the assistant's Makefile is expected to be # the directory of the assistant @@ -16,7 +16,7 @@ DOCKER_IMAGE_NAME = $(ASSISTANT_IMAGE_NAME) AZURE_WEBSITE_NAME ?= $(ASSISTANT_PACKAGE)-service -include $(this_dir)/docker.mk +include $(mkfile_dir)/docker.mk ASSISTANT__WORKBENCH_SERVICE_URL ?= http://host.docker.internal:3000 diff --git a/tools/makefiles/python.mk b/tools/makefiles/python.mk index b0e1bc87..ea9c2b04 100644 --- a/tools/makefiles/python.mk +++ b/tools/makefiles/python.mk @@ -1,5 +1,5 @@ -this_dir = $(patsubst %/,%,$(dir $(realpath $(lastword $(MAKEFILE_LIST))))) -include $(this_dir)/shell.mk +mkfile_dir = $(patsubst %/,%,$(dir $(realpath $(lastword $(MAKEFILE_LIST))))) +include $(mkfile_dir)/shell.mk .DEFAULT_GOAL ?= install @@ -13,6 +13,8 @@ endif UV_SYNC_ARGS ?= --all-extras UV_RUN_ARGS ?= --all-extras +PYTEST_ARGS ?= --color=yes + ## Rules .PHONY: install @@ -25,7 +27,7 @@ lock: .PHONY: clean clean: - $(rm) $(venv_dir) + $(rm_dir) $(venv_dir) $(ignore_failure) .PHONY: lint lint: @@ -35,7 +37,7 @@ lint: format: uvx ruff format . -ifneq ($(findstring pytest,$(if $(shell command -v uv $(null_stderr)),$(shell uv tree --depth 1),)),) +ifneq ($(findstring pytest,$(if $(shell $(call command_exists,uv) $(stderr_redirect_null)),$(shell uv tree --depth 1 $(stderr_redirect_null)),)),) .PHONY: test test: uv run $(uv_project_args) $(UV_RUN_ARGS) pytest $(PYTEST_ARGS) diff --git a/tools/makefiles/recursive.mk b/tools/makefiles/recursive.mk index 85f89100..42cf2c72 100644 --- a/tools/makefiles/recursive.mk +++ b/tools/makefiles/recursive.mk @@ -3,19 +3,30 @@ # ex: make (runs DEFAULT_GOAL) # ex: make clean (runs clean) # ex: make install (runs install) -this_dir = $(patsubst %/,%,$(dir $(realpath $(lastword $(MAKEFILE_LIST))))) +mkfile_dir = $(patsubst %/,%,$(dir $(realpath $(lastword $(MAKEFILE_LIST))))) + +# if IS_RECURSIVE_MAKE is set, then this is being invoked by another recursive.mk. +# in that case, we don't want any targets +ifndef IS_RECURSIVE_MAKE .DEFAULT_GOAL := install +# make with VERBOSE=1 to print all outputs of recursive makes +VERBOSE ?= 0 + # You can pass in a list of files or directories to retain when running `clean/git-clean` # ex: make clean GIT_CLEAN_RETAIN=".env .data" # As always with make, you can also set this as an environment variable GIT_CLEAN_RETAIN ?= .env -GIT_CLEAN_EXCLUDE = $(foreach v,$(GIT_CLEAN_RETAIN),--exclude !$(v)) +GIT_CLEAN_EXTRA_ARGS = $(foreach v,$(GIT_CLEAN_RETAIN),--exclude !$(v)) +ifeq ($(VERBOSE),0) +GIT_CLEAN_EXTRA_ARGS += --quiet +endif + .PHONY: git-clean git-clean: - git clean -dffX . $(GIT_CLEAN_EXCLUDE) + git clean -dffX . $(GIT_CLEAN_EXTRA_ARGS) FILTER_OUT = $(foreach v,$(2),$(if $(findstring $(1),$(v)),,$(v))) MAKE_FILES = $(shell find . -mindepth 2 -name Makefile) @@ -27,17 +38,73 @@ endif MAKE_DIRS := $(call FILTER_OUT,site-packages,$(call FILTER_OUT,node_modules,$(ALL_MAKE_DIRS))) +.PHONY: .clean-error-log .print-error-log + +MAKE_CMD_MESSAGE = $(if $(MAKECMDGOALS), $(MAKECMDGOALS),) + +.clean-error-log: + @$(rm_file) $(call fix_path,$(mkfile_dir)/make*.log) $(ignore_output) $(ignore_failure) + +.print-error-log: +ifeq ($(suffix $(SHELL)),.exe) + @if exist $(call fix_path,$(mkfile_dir)/make_error_dirs.log) ( \ + echo Directories failed to make$(MAKE_CMD_MESSAGE): && \ + type $(call fix_path,$(mkfile_dir)/make_error_dirs.log) && \ + ($(rm_file) $(call fix_path,$(mkfile_dir)/make*.log) $(ignore_output) $(ignore_failure)) && \ + exit 1 \ + ) +else + @if [ -e $(call fix_path,$(mkfile_dir)/make_error_dirs.log) ]; then \ + echo "\n\033[31;1mDirectories failed to make$(MAKE_CMD_MESSAGE):\033[0m\n"; \ + cat $(call fix_path,$(mkfile_dir)/make_error_dirs.log); \ + echo ""; \ + $(rm_file) $(call fix_path,$(mkfile_dir)/make*.log) $(ignore_output) $(ignore_failure); \ + exit 1; \ + fi +endif + .PHONY: clean install test format lint $(MAKE_DIRS) + clean: git-clean -clean install test format lint: $(MAKE_DIRS) + +clean install test format lint: .clean-error-log $(MAKE_DIRS) .print-error-log $(MAKE_DIRS): -ifndef IS_RECURSIVE_MAKE ifdef FAIL_ON_ERROR $(MAKE) -C $@ $(MAKECMDGOALS) IS_RECURSIVE_MAKE=1 else - $(MAKE) -C $@ $(MAKECMDGOALS) IS_RECURSIVE_MAKE=1 || $(true_expression) -endif + @$(rm_file) $(call fix_path,$@/make*.log) $(ignore_output) $(ignore_failure) + @echo make -C $@ $(MAKECMDGOALS) +ifeq ($(suffix $(SHELL)),.exe) + @$(MAKE) -C $@ $(MAKECMDGOALS) IS_RECURSIVE_MAKE=1 1>$(call fix_path,$@/make.log) $(stderr_redirect_stdout) || \ + ( \ + grep -qF "*** No" $(call fix_path,$@/make.log) || ( \ + echo $@ >> $(call fix_path,$(mkfile_dir)/make_error_dirs.log) && \ + $(call touch,$@/make_error.log) \ + ) \ + ) + @if exist $(call fix_path,$@/make_error.log) echo make -C $@$(MAKE_CMD_MESSAGE) failed: + @if exist $(call fix_path,$@/make_error.log) $(call touch,$@/make_print.log) + @if "$(VERBOSE)" neq "0" $(call touch,$@/make_print.log) + @if exist $(call fix_path,$@/make_print.log) type $(call fix_path,$@/make.log) +else + @$(MAKE) -C $@ $(MAKECMDGOALS) IS_RECURSIVE_MAKE=1 1>$(call fix_path,$@/make.log) $(stderr_redirect_stdout) || \ + ( \ + grep -qF "*** No" $(call fix_path,$@/make.log) || ( \ + echo "\t$@" >> $(call fix_path,$(mkfile_dir)/make_error_dirs.log) ; \ + $(call touch,$@/make_error.log) ; \ + ) \ + ) + @if [ -e $(call fix_path,$@/make_error.log) ]; then \ + echo "\n\033[31;1mmake -C $@$(MAKE_CMD_MESSAGE) failed:\033[0m\n" ; \ + fi + @if [ "$(VERBOSE)" != "0" -o -e $(call fix_path,$@/make_error.log) ]; then \ + cat $(call fix_path,$@/make.log); \ + fi endif + @$(rm_file) $(call fix_path,$@/make*.log) $(ignore_output) $(ignore_failure) +endif # ifdef FAIL_ON_ERROR + +endif # ifndef IS_RECURSIVE_MAKE -include $(this_dir)/shell.mk +include $(mkfile_dir)/shell.mk diff --git a/tools/makefiles/shell.mk b/tools/makefiles/shell.mk index 08089132..a73b87f2 100644 --- a/tools/makefiles/shell.mk +++ b/tools/makefiles/shell.mk @@ -1,15 +1,27 @@ -rm = rm -rf +# posix shell +rm_dir = rm -rf +rm_file = rm -rf fix_path = $(1) touch = touch $(1) true_expression = true -null_stderr = 2>/dev/null +stdout_redirect_null = 1>/dev/null +stderr_redirect_null = 2>/dev/null +stderr_redirect_stdout = 2>&1 +command_exists = command -v $(1) - -ifeq ($(OS),Windows_NT) -rm = rd /S /Q +# windows shell +ifeq ($(suffix $(SHELL)),.exe) +rm_dir = rd /s /q +rm_file = del /f /q fix_path = $(subst /,\,$(abspath $(1))) # https://ss64.com/nt/touch.html -touch = type nul >> $(call fix_path,$(1)) && copy /y /b $(call fix_path,$(1))+,, $(call fix_path,$(1)) +touch = type nul >> $(call fix_path,$(1)) && copy /y /b $(call fix_path,$(1))+,, $(call fix_path,$(1)) $(ignore_output) true_expression = VER>NUL -null_stderr = 2>NUL +stdout_redirect_null = 1>NUL +stderr_redirect_null = 2>NUL +stderr_redirect_stdout = 2>&1 +command_exists = where $(1) endif + +ignore_output = $(stdout_redirect_null) $(stderr_redirect_stdout) +ignore_failure = || $(true_expression) diff --git a/workbench-app/Makefile b/workbench-app/Makefile index 75ad86f2..261fca03 100644 --- a/workbench-app/Makefile +++ b/workbench-app/Makefile @@ -4,22 +4,22 @@ repo_root = $(shell git rev-parse --show-toplevel) .PHONY: clean clean: - $(rm) node_modules || $(true_expression) + $(rm_dir) node_modules $(ignore_failure) .PHONY: install install: pnpm install .PHONY: test -test: +test: install pnpm run type-check .PHONY: format -format: +format: install pnpm run format .PHONY: lint -lint: +lint: install pnpm run lint include $(repo_root)/tools/makefiles/shell.mk