diff --git a/.openapi-generator/custom_templates/requirements.mustache b/.openapi-generator/custom_templates/requirements.mustache index 230bff3ba..2580f6ddf 100644 --- a/.openapi-generator/custom_templates/requirements.mustache +++ b/.openapi-generator/custom_templates/requirements.mustache @@ -1,3 +1,3 @@ python_dateutil >= 2.5.3 setuptools >= 21.0.0 -urllib3 ~= 2.6.1 +urllib3 ~= 2.8 diff --git a/.openapi-generator/custom_templates/setup.mustache b/.openapi-generator/custom_templates/setup.mustache index 46a76c426..f792ebadc 100644 --- a/.openapi-generator/custom_templates/setup.mustache +++ b/.openapi-generator/custom_templates/setup.mustache @@ -19,7 +19,7 @@ VERSION = "{{packageVersion}}" # http://pypi.python.org/pypi/setuptools REQUIRES = [ - "urllib3 >= 2.6.1", + "urllib3 >= 2.8.0", "python-dateutil", {{#asyncio}} "aiohttp >= 3.0.0", @@ -41,7 +41,7 @@ setup( author_email="{{infoEmail}}{{^infoEmail}}team@openapitools.org{{/infoEmail}}", url="{{packageUrl}}", keywords=["OpenAPI", "OpenAPI-Generator", "{{{appName}}}"], - python_requires=">=3.6", + python_requires=">=3.10", install_requires=REQUIRES, packages=find_packages(exclude=["test", "tests"]), include_package_data=True, diff --git a/gooddata-api-client/requirements.txt b/gooddata-api-client/requirements.txt index 230bff3ba..2580f6ddf 100644 --- a/gooddata-api-client/requirements.txt +++ b/gooddata-api-client/requirements.txt @@ -1,3 +1,3 @@ python_dateutil >= 2.5.3 setuptools >= 21.0.0 -urllib3 ~= 2.6.1 +urllib3 ~= 2.8 diff --git a/gooddata-api-client/setup.py b/gooddata-api-client/setup.py index 4f8a9fdfb..7b4e1aa20 100644 --- a/gooddata-api-client/setup.py +++ b/gooddata-api-client/setup.py @@ -25,7 +25,7 @@ # http://pypi.python.org/pypi/setuptools REQUIRES = [ - "urllib3 >= 2.6.1", + "urllib3 >= 2.8.0", "python-dateutil", ] @@ -37,7 +37,7 @@ author_email="support@gooddata.com", url="", keywords=["OpenAPI", "OpenAPI-Generator", "OpenAPI definition"], - python_requires=">=3.6", + python_requires=">=3.10", install_requires=REQUIRES, packages=find_packages(exclude=["test", "tests"]), include_package_data=True, diff --git a/packages/gooddata-dbt/pyproject.toml b/packages/gooddata-dbt/pyproject.toml index 93ef7a6b2..811b71240 100644 --- a/packages/gooddata-dbt/pyproject.toml +++ b/packages/gooddata-dbt/pyproject.toml @@ -59,3 +59,6 @@ source = [ [build-system] requires = ["hatchling"] build-backend = "hatchling.build" + +[tool.pytest] +strict = true diff --git a/packages/gooddata-eval/pyproject.toml b/packages/gooddata-eval/pyproject.toml index 5ea54b445..0c36e0969 100644 --- a/packages/gooddata-eval/pyproject.toml +++ b/packages/gooddata-eval/pyproject.toml @@ -71,3 +71,6 @@ allowed-unresolved-imports = ["openai.**", "gooddata_api_client.**"] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" + +[tool.pytest] +strict = true diff --git a/packages/gooddata-fdw/pyproject.toml b/packages/gooddata-fdw/pyproject.toml index 8facc2758..7e092ae66 100644 --- a/packages/gooddata-fdw/pyproject.toml +++ b/packages/gooddata-fdw/pyproject.toml @@ -54,7 +54,7 @@ test = [ "pytest-json-report==1.5.0", "vcrpy~=8.3.0", # TODO - Bump the version together with bumping the version of openapi generator - "urllib3~=2.7.0", + "urllib3~=2.8", "pyyaml", "tests_support", ] @@ -77,3 +77,6 @@ source = [ [build-system] requires = ["hatchling"] build-backend = "hatchling.build" + +[tool.pytest] +strict = true diff --git a/packages/gooddata-flexconnect/pyproject.toml b/packages/gooddata-flexconnect/pyproject.toml index 1e38b651c..16a20e6bc 100644 --- a/packages/gooddata-flexconnect/pyproject.toml +++ b/packages/gooddata-flexconnect/pyproject.toml @@ -79,3 +79,6 @@ source = [ [build-system] requires = ["hatchling"] build-backend = "hatchling.build" + +[tool.pytest] +strict = true diff --git a/packages/gooddata-flight-server/pyproject.toml b/packages/gooddata-flight-server/pyproject.toml index e8e6ce987..c45ea7a39 100644 --- a/packages/gooddata-flight-server/pyproject.toml +++ b/packages/gooddata-flight-server/pyproject.toml @@ -86,3 +86,6 @@ source = [ [build-system] requires = ["hatchling"] build-backend = "hatchling.build" + +[tool.pytest] +strict = true diff --git a/packages/gooddata-pandas/pyproject.toml b/packages/gooddata-pandas/pyproject.toml index 6edadb0bf..a7a99d73a 100644 --- a/packages/gooddata-pandas/pyproject.toml +++ b/packages/gooddata-pandas/pyproject.toml @@ -61,7 +61,7 @@ test = [ "pytest-snapshot==0.9.0", "pytest-order~=1.5.0", "vcrpy~=8.3.0", - "urllib3~=2.7.0", + "urllib3~=2.8", "python-dotenv~=1.2.3", "pyyaml", "tests_support", @@ -88,3 +88,6 @@ source = [ [build-system] requires = ["hatchling"] build-backend = "hatchling.build" + +[tool.pytest] +strict = true diff --git a/packages/gooddata-pandas/tests/dataframe/test_indexed_dataframe.py b/packages/gooddata-pandas/tests/dataframe/test_indexed_dataframe.py index f42ae3783..e1dd49e39 100644 --- a/packages/gooddata-pandas/tests/dataframe/test_indexed_dataframe.py +++ b/packages/gooddata-pandas/tests/dataframe/test_indexed_dataframe.py @@ -14,20 +14,20 @@ index_types = [ # reference to the columns key - "region", - dict(reg="region"), + pytest.param("region", id="column_key"), + pytest.param(dict(reg="region"), id="column_key_dict"), # label_id, i.e. obj id without "label/" prefix - index can reference only attributes - "region", - dict(region="region"), + pytest.param("region", id="label_id"), + pytest.param(dict(region="region"), id="label_id_dict"), # object identifier in string form - "label/region", - dict(reg="label/region"), + pytest.param("label/region", id="obj_id_str"), + pytest.param(dict(reg="label/region"), id="obj_id_str_dict"), # Attribute instance - Attribute(local_id="abcd", label=ObjId(id="region", type="label")), - dict(region=Attribute(local_id="abcd", label=ObjId(id="region", type="label"))), + pytest.param(Attribute(local_id="abcd", label=ObjId(id="region", type="label")), id="attribute"), + pytest.param(dict(region=Attribute(local_id="abcd", label=ObjId(id="region", type="label"))), id="attribute_dict"), # ObjId instance - ObjId(id="region", type="label"), - dict(region=ObjId(id="region", type="label")), + pytest.param(ObjId(id="region", type="label"), id="obj_id"), + pytest.param(dict(region=ObjId(id="region", type="label")), id="obj_id_dict"), ] diff --git a/packages/gooddata-pipelines/pyproject.toml b/packages/gooddata-pipelines/pyproject.toml index bda8b239e..c59e58c48 100644 --- a/packages/gooddata-pipelines/pyproject.toml +++ b/packages/gooddata-pipelines/pyproject.toml @@ -9,7 +9,7 @@ readme = "README.md" requires-python = ">=3.10" dependencies = [ "pydantic (>=2.9.2,<3.0.0)", - "requests (>=2.32.3,<3.0.0)", + "requests (>=2.33.0,<3.0.0)", "types-requests (>1.0.0,<3.0.0)", "gooddata-sdk~=1.76.0", "boto3 (>=1.39.3,<2.0.0)", @@ -44,3 +44,6 @@ source = [ [build-system] requires = ["hatchling"] build-backend = "hatchling.build" + +[tool.pytest] +strict = true diff --git a/packages/gooddata-sdk/pyproject.toml b/packages/gooddata-sdk/pyproject.toml index 0a89fa56a..e4dba2a41 100644 --- a/packages/gooddata-sdk/pyproject.toml +++ b/packages/gooddata-sdk/pyproject.toml @@ -33,7 +33,7 @@ dependencies = [ "cattrs>=22.1.0,<=26.1.0", "brotli==1.2.0", "requests>=2.33.0,<3.0.0", - "python-dotenv>=1.0.0,<2.0.0", + "python-dotenv>=1.2.2,<2.0.0", "gooddata-code-convertors>=11.57.0", ] classifiers = [ @@ -68,7 +68,7 @@ test = [ "pytest-snapshot==0.9.0", "pytest-order~=1.5.0", "vcrpy~=8.3.0", - "urllib3~=2.7.0", + "urllib3~=2.8", "python-dotenv~=1.2.3", "deepdiff~=9.1.0", "tests_support", @@ -93,3 +93,6 @@ source = [ [build-system] requires = ["hatchling"] build-backend = "hatchling.build" + +[tool.pytest] +strict = true diff --git a/packages/gooddata-sdk/tests/catalog/test_catalog_user_service.py b/packages/gooddata-sdk/tests/catalog/test_catalog_user_service.py index ff4e3a5cd..3666f225a 100644 --- a/packages/gooddata-sdk/tests/catalog/test_catalog_user_service.py +++ b/packages/gooddata-sdk/tests/catalog/test_catalog_user_service.py @@ -24,7 +24,6 @@ import copy from pathlib import Path -import pytest from gooddata_sdk import ( CatalogAssigneeIdentifier, CatalogDeclarativeUser, @@ -581,7 +580,6 @@ def test_user_replace_user_groups(test_config): assert user_2.user_groups == user_groups -@pytest.mark.dependency(name="test_get_user_permissions") @gd_vcr.use_cassette(str(_fixtures_dir / "test_get_user_permissions.yaml")) def test_get_user_permissions(test_config): """Test retrieving user permissions. @@ -644,7 +642,6 @@ def test_manage_user_permissions(test_config): safe_delete(sdk.catalog_user.manage_user_permissions, user_id, origin_permissions) -@pytest.mark.dependency(name="test_get_user_group_permissions") @gd_vcr.use_cassette(str(_fixtures_dir / "test_get_user_group_permissions.yaml")) def test_get_user_group_permissions(test_config): """Test retrieving user group permissions. diff --git a/uv.lock b/uv.lock index 0b0fa65a6..5e8492921 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 3 +revision = 5 requires-python = ">=3.10, <4.0" resolution-markers = [ "python_full_version >= '3.14'", @@ -998,7 +998,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "python-dateutil" }, - { name = "urllib3", specifier = ">=2.6.1" }, + { name = "urllib3", specifier = ">=2.8.0" }, ] [[package]] @@ -1134,7 +1134,7 @@ test = [ { name = "pytest-json-report", specifier = "==1.5.0" }, { name = "pyyaml" }, { name = "tests-support", editable = "packages/tests-support" }, - { name = "urllib3", specifier = "~=2.7.0" }, + { name = "urllib3", specifier = "~=2.8" }, { name = "vcrpy", specifier = "~=8.3.0" }, ] @@ -1268,7 +1268,7 @@ test = [ { name = "python-dotenv", specifier = "~=1.2.3" }, { name = "pyyaml" }, { name = "tests-support", editable = "packages/tests-support" }, - { name = "urllib3", specifier = "~=2.7.0" }, + { name = "urllib3", specifier = "~=2.8" }, { name = "vcrpy", specifier = "~=8.3.0" }, ] @@ -1306,7 +1306,7 @@ requires-dist = [ { name = "boto3-stubs", specifier = ">=1.39.3,<2.0.0" }, { name = "gooddata-sdk", editable = "packages/gooddata-sdk" }, { name = "pydantic", specifier = ">=2.9.2,<3.0.0" }, - { name = "requests", specifier = ">=2.32.3,<3.0.0" }, + { name = "requests", specifier = ">=2.33.0,<3.0.0" }, { name = "types-pyyaml", specifier = ">=6.0.12.20250326,<7.0.0" }, { name = "types-requests", specifier = ">1.0.0,<3.0.0" }, ] @@ -1325,6 +1325,7 @@ test = [ name = "gooddata-python-sdk-workspace" version = "1.76.0" source = { virtual = "." } +default-groups = ["dev", "lint", "test", "tox", "type"] dependencies = [ { name = "gooddata-api-client" }, { name = "gooddata-dbt" }, @@ -1471,7 +1472,7 @@ requires-dist = [ { name = "gooddata-code-convertors", specifier = ">=11.57.0" }, { name = "pyarrow", marker = "extra == 'arrow'", specifier = ">=23.0.1" }, { name = "python-dateutil", specifier = ">=2.5.3" }, - { name = "python-dotenv", specifier = ">=1.0.0,<2.0.0" }, + { name = "python-dotenv", specifier = ">=1.2.2,<2.0.0" }, { name = "pyyaml", specifier = ">=6.0" }, { name = "requests", specifier = ">=2.33.0,<3.0.0" }, ] @@ -1488,7 +1489,7 @@ test = [ { name = "pytest-snapshot", specifier = "==0.9.0" }, { name = "python-dotenv", specifier = "~=1.2.3" }, { name = "tests-support", editable = "packages/tests-support" }, - { name = "urllib3", specifier = "~=2.7.0" }, + { name = "urllib3", specifier = "~=2.8" }, { name = "vcrpy", specifier = "~=8.3.0" }, ] @@ -2616,14 +2617,14 @@ wheels = [ [[package]] name = "pyjwt" -version = "2.13.0" +version = "2.15.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3b/81/58d0ac84e1ef3a3843791d6954d94c0b33d526c75eeb1efbce9d0a4c4077/pyjwt-2.13.0.tar.gz", hash = "sha256:41571c89ca91598c79e8ef18a2d07367d4810fbbd6f637794879baf1b7703423", size = 107515, upload-time = "2026-05-21T19:54:36.618Z" } +sdist = { url = "https://files.pythonhosted.org/packages/43/ea/5194e52748b0da83d71e082d75496eaec6e58f419f5e184786ded517e6a9/pyjwt-2.15.1.tar.gz", hash = "sha256:4f259e80cdfb6b3fc18a7de51fd1ef9ec79652f25019bae68975ca2468a34df8", size = 121252, upload-time = "2026-09-28T18:40:42.598Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/5e/ecf12fdb62546d64385c158514e9b2b671f7832108ef2ecd2020ce0af2d1/pyjwt-2.13.0-py3-none-any.whl", hash = "sha256:66adcc2aff09b3f1bbd95fc1e1577df8ac8723c978552fd43304c8a290ac5728", size = 31274, upload-time = "2026-05-21T19:54:35.362Z" }, + { url = "https://files.pythonhosted.org/packages/50/ca/44de4e75f8aadc457f0634be3b542815078ded46dca30efb960edeecad6e/pyjwt-2.15.1-py3-none-any.whl", hash = "sha256:42d59d631f7768a1028a64c7ff581a9bf7519804daf91fc5b6c56e30eec5e193", size = 33860, upload-time = "2026-09-28T18:40:41.429Z" }, ] [package.optional-dependencies] @@ -3514,11 +3515,11 @@ wheels = [ [[package]] name = "urllib3" -version = "2.7.0" +version = "2.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/05/b17359e1cefb4f909b5e40b1b90a496d987258916dbbf88e842c729f510e/urllib3-2.8.0.tar.gz", hash = "sha256:63bf2ead4c879426ebf22ef2a781eeb4aa3b4ae798a0435506f8687fd5bb9b63", size = 458972, upload-time = "2026-09-15T19:29:36.253Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, + { url = "https://files.pythonhosted.org/packages/92/9d/c4e665119135114480843e7ab388fa94d8480650450e6f8e26b70d323a4c/urllib3-2.8.0-py3-none-any.whl", hash = "sha256:0cf3cae568d36aa9576b28dfb35f11328f1cb974ca7647d9475ebb86c75ac6e3", size = 135717, upload-time = "2026-09-15T19:29:34.577Z" }, ] [[package]] @@ -3536,18 +3537,19 @@ wheels = [ [[package]] name = "virtualenv" -version = "21.7.8" +version = "21.14.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "distlib" }, { name = "filelock" }, + { name = "packaging" }, { name = "platformdirs" }, { name = "python-discovery" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/1c/69faa2e6a83484e2a8227bce5cfaa183941c5720f99c48f204931d286b07/virtualenv-21.7.8.tar.gz", hash = "sha256:1dc49c790072a9072cb1803f9bd62aa69cd583077cada32390f75505cdc64c9b", size = 5347580, upload-time = "2026-09-01T13:36:13.894Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c4/f9/f323b3b6058cff3853b31cf6a49c0425ed797bf9611572ec10d065e08bac/virtualenv-21.14.5.tar.gz", hash = "sha256:c4cb6c13e46b57225a999c7e22a09b163393878facc7ac4c059a57f46faa1647", size = 5467127, upload-time = "2026-10-02T17:42:25.613Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/34/88d507d4a4030fa559788de9c690a214f9a4053aa1d91cfb60e9b36127c2/virtualenv-21.7.8-py3-none-any.whl", hash = "sha256:3040eb3cbf5d32b10ffd57d167e6a162237ad82ba7d8cf1400a1efed593d85ac", size = 5324617, upload-time = "2026-09-01T13:36:11.248Z" }, + { url = "https://files.pythonhosted.org/packages/df/93/084f10ebbecdedf7902ed68fbecc903f0e9c5742155bfffb05eccbc071da/virtualenv-21.14.5-py3-none-any.whl", hash = "sha256:b0651e0174982bba17cc6f0aaa2ef496730cb85a3f35eb5d1119d1c904f7d1da", size = 5487482, upload-time = "2026-10-02T17:42:23.38Z" }, ] [[package]] @@ -3569,14 +3571,14 @@ wheels = [ [[package]] name = "werkzeug" -version = "3.1.8" +version = "3.1.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/dd/b2/381be8cfdee792dd117872481b6e378f85c957dd7c5bca38897b08f765fd/werkzeug-3.1.8.tar.gz", hash = "sha256:9bad61a4268dac112f1c5cd4630a56ede601b6ed420300677a869083d70a4c44", size = 875852, upload-time = "2026-04-02T18:49:14.268Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a4/34/4dd12fc8bb7d61c91467ec3efe415ffa7d5456f799954b40c5bbaeae470e/werkzeug-3.1.9.tar.gz", hash = "sha256:55ca7c70a75689be937aa27f8ff4b018f06ff4838fc73045560bf0f5a1291060", size = 940188, upload-time = "2026-09-27T18:33:41.637Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/93/8c/2e650f2afeb7ee576912636c23ddb621c91ac6a98e66dc8d29c3c69446e1/werkzeug-3.1.8-py3-none-any.whl", hash = "sha256:63a77fb8892bf28ebc3178683445222aa500e48ebad5ec77b0ad80f8726b1f50", size = 226459, upload-time = "2026-04-02T18:49:12.72Z" }, + { url = "https://files.pythonhosted.org/packages/a1/38/df03f564f43cec2684823f3cccae1a652ee7face1cbaa76fb223096e64d7/werkzeug-3.1.9-py3-none-any.whl", hash = "sha256:6392e50c78460ba618e5b21f08a71f59c99ce99cdc6cf6e3dd7e6ccca8754fab", size = 228700, upload-time = "2026-09-27T18:33:39.685Z" }, ] [[package]]