Usiel opened a new issue, #40962: URL: https://github.com/apache/superset/issues/40962
### Bug description A pip install of Superset 6.1.0 results in the following: ``` google-auth>=1.23.0 (from shillelagh[gsheetsapi]<2.0,>=1.4.3->apache-superset==6.1.0->apache-superset[athena,clickhouse,druid,hive,mysql]==6.1.0) Downloading google_auth-2.53.0-py3-none-any.whl.metadata (5.5 kB) ``` `google-auth` used to depend on `cachetools` ([ref v2.43.0, the version that is pinned in Superset's base.txt](https://github.com/googleapis/google-auth-library-python/blob/v2.43.0/setup.py#L23)), but its latest version v.2.53.0 [does not](https://github.com/googleapis/google-cloud-python/blob/google-auth-v2.53.0/packages/google-auth/setup.py). Unfortunately, `cachetools` seems to be a hard Superset requirement, leading to the stacktrace below: https://github.com/apache/superset/blob/6.1.0/superset/db_engine_specs/aws_iam.py#L35 I believe we should include an explicit dependency on `cachetools` in Superset's pyproject to ensure the package is installed. ### Screenshots/recordings _No response_ ### Superset version 6.1.0 ### Python version 3.11 ### Node version Not applicable ### Browser Not applicable ### Additional context ``` superset-web-dev-574ffb5b9-gf95z web 2026-06-11 03:18:04,089:ERROR:superset.views.error_handling:No module named 'cachetools' superset-web-dev-574ffb5b9-gf95z web Traceback (most recent call last): superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/superset/views/error_handling.py", line 100, in wraps superset-web-dev-574ffb5b9-gf95z web return f(self, *args, **kwargs) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/superset/utils/log.py", line 301, in wrapper superset-web-dev-574ffb5b9-gf95z web value = f(*args, **kwargs) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/superset/datasets/api.py", line 1248, in get superset-web-dev-574ffb5b9-gf95z web response[API_RESULT_RES_KEY] = show_model_schema.dump(table, many=False) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/marshmallow/schema.py", line 621, in dump superset-web-dev-574ffb5b9-gf95z web result = self._serialize(processed_obj, many=many) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/marshmallow/schema.py", line 589, in _serialize superset-web-dev-574ffb5b9-gf95z web value = field_obj.serialize(attr_name, obj, accessor=self.get_attribute) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/marshmallow/fields.py", line 348, in serialize superset-web-dev-574ffb5b9-gf95z web return self._serialize(value, attr, obj, **kwargs) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/marshmallow/fields.py", line 656, in _serialize superset-web-dev-574ffb5b9-gf95z web return schema.dump(nested_obj, many=many) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/marshmallow/schema.py", line 621, in dump superset-web-dev-574ffb5b9-gf95z web result = self._serialize(processed_obj, many=many) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/marshmallow/schema.py", line 589, in _serialize superset-web-dev-574ffb5b9-gf95z web value = field_obj.serialize(attr_name, obj, accessor=self.get_attribute) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/marshmallow/fields.py", line 340, in serialize superset-web-dev-574ffb5b9-gf95z web value = self.get_value(obj, attr, accessor=accessor) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/marshmallow/fields.py", line 270, in get_value superset-web-dev-574ffb5b9-gf95z web return accessor_func(obj, check_key, default) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/marshmallow/schema.py", line 554, in get_attribute superset-web-dev-574ffb5b9-gf95z web return get_value(obj, attr, default) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/marshmallow/utils.py", line 283, in get_value superset-web-dev-574ffb5b9-gf95z web return _get_value_for_key(obj, key, default) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/marshmallow/utils.py", line 296, in _get_value_for_key superset-web-dev-574ffb5b9-gf95z web return getattr(obj, key, default) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/superset/models/core.py", line 267, in allow_multi_catalog superset-web-dev-574ffb5b9-gf95z web return self.get_extra().get("allow_multi_catalog", False) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/superset/models/core.py", line 1052, in get_extra superset-web-dev-574ffb5b9-gf95z web return self.db_engine_spec.get_extra_params(self, source) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/superset/models/core.py", line 1024, in db_engine_spec superset-web-dev-574ffb5b9-gf95z web return self.get_db_engine_spec(url) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/superset/models/core.py", line 1038, in get_db_engine_spec superset-web-dev-574ffb5b9-gf95z web return db_engine_specs.get_engine_spec(backend, driver) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/superset/db_engine_specs/__init__.py", line 99, in get_engine_spec superset-web-dev-574ffb5b9-gf95z web engine_specs = load_engine_specs() superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/superset/db_engine_specs/__init__.py", line 71, in load_engine_specs superset-web-dev-574ffb5b9-gf95z web module = import_module(module_info.name, package=__name__) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/lib/python3.11/importlib/__init__.py", line 126, in import_module superset-web-dev-574ffb5b9-gf95z web return _bootstrap._gcd_import(name[level:], package, level) superset-web-dev-574ffb5b9-gf95z web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ superset-web-dev-574ffb5b9-gf95z web File "<frozen importlib._bootstrap>", line 1204, in _gcd_import superset-web-dev-574ffb5b9-gf95z web File "<frozen importlib._bootstrap>", line 1176, in _find_and_load superset-web-dev-574ffb5b9-gf95z web File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked superset-web-dev-574ffb5b9-gf95z web File "<frozen importlib._bootstrap>", line 690, in _load_unlocked superset-web-dev-574ffb5b9-gf95z web File "<frozen importlib._bootstrap_external>", line 940, in exec_module superset-web-dev-574ffb5b9-gf95z web File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed superset-web-dev-574ffb5b9-gf95z web File "/opt/.pyenv/versions/3.11.4/envs/superset/lib/python3.11/site-packages/superset/db_engine_specs/aws_iam.py", line 35, in <module> superset-web-dev-574ffb5b9-gf95z web from cachetools import TTLCache superset-web-dev-574ffb5b9-gf95z web ModuleNotFoundError: No module named 'cachetools' ``` ### Checklist - [x] I have searched Superset docs and Slack and didn't find a solution to my problem. - [x] I have searched the GitHub issue tracker and didn't find a similar bug report. - [x] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
