zenml-io / zenml

ZenML 🙏: Build portable, production-ready MLOps pipelines. https://zenml.io.
https://zenml.io
Apache License 2.0
3.83k stars 420 forks source link

[BUG]: Copying stack fails after updating zenml server version #2734

Closed jlopezpena closed 4 weeks ago

jlopezpena commented 1 month ago

Contact Details [Optional]

No response

System Information

ZENML_LOCAL_VERSION: 0.58.0 ZENML_SERVER_VERSION: 0.58.0 ZENML_SERVER_DATABASE: mysql ZENML_SERVER_DEPLOYMENT_TYPE: other ZENML_CONFIG_DIR: /root/.config/zenml ZENML_LOCAL_STORE_DIR: /root/.config/zenml/local_stores ZENML_SERVER_URL: https://zenml.wayflyer.team ZENML_ACTIVE_REPOSITORY_ROOT: /workspaces/mlmodels-delinquency PYTHON_VERSION: 3.11.6 ENVIRONMENT: native SYSTEM_INFO: {'os': 'linux', 'linux_distro': 'ubuntu', 'linux_distro_like': 'debian', 'linux_distro_version': '23.10'} ACTIVE_WORKSPACE: default ACTIVE_STACK: Wayflyer DS ACTIVE_USER: javier.lopezpena TELEMETRY_STATUS: enabled ANALYTICS_CLIENT_ID: 2e9c30c6-120c-46c8-a66c-9214b2a32653 ANALYTICS_USER_ID: fda958f2-f055-47c7-942c-9ff3977f610e ANALYTICS_SERVER_ID: 15db87e7-3688-4478-8c1f-f7d634988a14 INTEGRATIONS: ['bitbucket', 'kaniko', 'lightgbm', 'pigeon', 'pillow', 's3', 'scipy', 'sklearn', 'slack', 'xgboost'] PACKAGES: {'babel': '2.14.0', 'deprecated': '1.2.14', 'faker': '24.0.0', 'gitpython': '3.1.42', 'jinja2': '3.1.3', 'mako': '1.3.2', 'markdown': '3.6', 'markupsafe': '2.1.5', 'pyjwt': '2.7.0', 'pymysql': '1.1.1', 'pyyaml': '6.0.1', 'sqlalchemy': '1.4.41', 'sqlalchemy-utils': '0.38.3', 'absl-py': '2.1.0', 'accessible-pygments': '0.0.4', 'aiobotocore': '2.5.2', 'aiohttp': '3.9.3', 'aioitertools': '0.11.0', 'aiosignal': '1.3.1', 'alabaster': '0.7.16', 'alembic': '1.8.1', 'anyio': '4.3.0', 'appdirs': '1.4.4', 'arfs': '2.2.6', 'argparse': '1.4.0', 'asn1crypto': '1.5.1', 'asttokens': '2.4.1', 'attrs': '23.2.0', 'aws-profile-manager': '0.7.3', 'azure-common': '1.1.28', 'azure-core': '1.30.1', 'azure-mgmt-core': '1.4.0', 'azure-mgmt-resource': '23.0.1', 'bcrypt': '4.0.1', 'beautifulsoup4': '4.12.3', 'boto3': '1.26.76', 'botocore': '1.29.161', 'bytecode': '0.15.1', 'cachetools': '5.3.3', 'cattrs': '23.2.3', 'certifi': '2024.2.2', 'cffi': '1.16.0', 'chardet': '5.2.0', 'charset-normalizer': '3.3.2', 'clarabel': '0.7.1', 'click': '8.1.3', 'click-params': '0.3.0', 'cloudpickle': '2.2.1', 'colorama': '0.4.6', 'colorcet': '3.1.0', 'comm': '0.2.1', 'configparser': '6.0.1', 'contourpy': '1.2.0', 'coverage': '7.4.3', 'cryptography': '42.0.5', 'cvxpy': '1.4.2', 'cycler': '0.12.1', 'datadog': '0.49.1', 'ddsketch': '3.0.1', 'ddtrace': '2.8.1', 'debugpy': '1.8.1', 'decorator': '5.1.1', 'deptry': '0.16.1', 'diff-cover': '8.0.3', 'distro': '1.9.0', 'docker': '6.1.3', 'docopt': '0.6.2', 'docutils': '0.20.1', 'dynaconf': '3.2.4', 'ecos': '2.0.13', 'entrypoints': '0.4', 'envier': '0.5.1', 'evidently': '0.4.16', 'executing': '2.0.1', 'fastapi': '0.99.1', 'fastapi-utils': '0.2.1', 'fastjsonschema': '2.19.1', 'feature-engine': '1.6.2', 'filelock': '3.13.1', 'fonttools': '4.49.0', 'frozenlist': '1.4.1', 'fsspec': '2023.4.0', 'furo': '2024.1.29', 'giskard': '2.8.0', 'gitdb': '4.0.11', 'greenlet': '3.0.3', 'griffe': '0.42.1', 'h11': '0.14.0', 'httpcore': '1.0.4', 'httplib2': '0.19.1', 'httptools': '0.6.1', 'httpx': '0.27.0', 'idna': '3.6', 'imagesize': '1.4.1', 'importlib-metadata': '6.11.0', 'iniconfig': '2.0.0', 'ipinfo': '5.0.1', 'ipykernel': '6.29.3', 'ipython': '8.22.2', 'ipywidgets': '8.1.2', 'isodate': '0.6.1', 'iterative-telemetry': '0.0.8', 'jedi': '0.19.1', 'jmespath': '1.0.1', 'joblib': '1.3.2', 'jsonschema': '4.21.1', 'jsonschema-specifications': '2023.12.1', 'jupyter-book': '1.0.0', 'jupyter-cache': '1.0.0', 'jupyter-client': '8.6.0', 'jupyter-core': '5.7.1', 'jupyterlab-widgets': '3.0.10', 'jupytext': '1.16.1', 'kiwisolver': '1.4.5', 'langdetect': '1.0.9', 'latexcodec': '2.0.1', 'lightgbm': '4.3.0', 'linkify-it-py': '2.0.3', 'litestar': '2.6.3', 'livereload': '2.6.3', 'llvmlite': '0.42.0', 'markdown-it-py': '3.0.0', 'matplotlib': '3.8.3', 'matplotlib-inline': '0.1.6', 'mdit-py-plugins': '0.4.0', 'mdurl': '0.1.2', 'mixpanel': '4.10.1', 'mlflow-skinny': '2.11.3', 'msgspec': '0.18.6', 'multidict': '6.0.5', 'mypy': '1.8.0', 'mypy-extensions': '1.0.0', 'myst-nb': '1.0.0', 'myst-parser': '2.0.0', 'nbclient': '0.9.0', 'nbformat': '5.9.2', 'nest-asyncio': '1.6.0', 'nltk': '3.8.1', 'num2words': '0.5.13', 'numba': '0.59.0', 'numpy': '1.26.4', 'opentelemetry-api': '1.23.0', 'optbinning': '0.19.0', 'orjson': '3.10.3', 'ortools': '9.7.2996', 'osqp': '0.6.4', 'packaging': '23.2', 'pandas': '2.2.2', 'pandas-stubs': '2.2.0.240218', 'parso': '0.8.3', 'passlib': '1.7.4', 'pathspec': '0.12.1', 'patsy': '0.5.6', 'pexpect': '4.9.0', 'pika': '1.3.2', 'pillow': '10.2.0', 'platformdirs': '3.11.0', 'plotly': '5.19.0', 'pluggy': '1.4.0', 'polyfactory': '2.15.0', 'prompt-toolkit': '3.0.43', 'protobuf': '4.25.3', 'psutil': '5.9.8', 'ptyprocess': '0.7.0', 'pure-eval': '0.2.2', 'pyopenssl': '24.0.0', 'pyarrow': '15.0.0', 'pybind11': '2.11.1', 'pybtex': '0.24.0', 'pybtex-docutils': '1.0.3', 'pycparser': '2.21', 'pydantic': '1.10.14', 'pydata-sphinx-theme': '0.15.2', 'pygments': '2.17.2', 'pyparsing': '2.4.7', 'pytest': '8.0.2', 'pytest-cov': '4.1.0', 'python-dateutil': '2.9.0.post0', 'python-dotenv': '1.0.1', 'python-multipart': '0.0.9', 'pytz': '2024.1', 'pyxirr': '0.10.3', 'pyzmq': '25.1.2', 'qdldl': '0.1.7.post0', 'referencing': '0.33.0', 'regex': '2023.12.25', 'requests': '2.31.0', 'requests-toolbelt': '1.0.0', 'rich': '13.7.1', 'rich-click': '1.7.3', 'ropwr': '1.0.0', 'rpds-py': '0.18.0', 'ruff': '0.3.0', 's3fs': '2023.4.0', 's3transfer': '0.6.2', 'scikit-learn': '1.5.0', 'scipy': '1.11.4', 'scs': '3.2.4.post1', 'seaborn': '0.13.2', 'secure': '0.3.0', 'sentry-sdk': '1.44.1', 'setuptools': '69.1.1', 'shap': '0.44.1', 'six': '1.16.0', 'slack-sdk': '3.27.1', 'slicer': '0.0.7', 'smmap': '5.0.1', 'sniffio': '1.3.1', 'snowballstemmer': '2.2.0', 'snowflake-connector-python': '3.7.1', 'sortedcontainers': '2.4.0', 'soupsieve': '2.5', 'sphinx': '7.2.6', 'sphinx-autobuild': '2024.2.4', 'sphinx-basic-ng': '1.0.0b2', 'sphinx-book-theme': '1.1.2', 'sphinx-comments': '0.0.3', 'sphinx-copybutton': '0.5.2', 'sphinx-design': '0.5.0', 'sphinx-external-toc': '1.0.1', 'sphinx-jupyterbook-latex': '1.0.0', 'sphinx-multitoc-numbering': '0.1.3', 'sphinx-thebe': '0.3.1', 'sphinx-togglebutton': '0.3.2', 'sphinxcontrib-applehelp': '1.0.8', 'sphinxcontrib-bibtex': '2.6.2', 'sphinxcontrib-devhelp': '1.0.6', 'sphinxcontrib-htmlhelp': '2.0.5', 'sphinxcontrib-jsmath': '1.0.1', 'sphinxcontrib-qthelp': '1.0.7', 'sphinxcontrib-serializinghtml': '1.1.10', 'sqlalchemy2-stubs': '0.0.2a38', 'sqlfluff': '3.0.6', 'sqlmodel': '0.0.8', 'sqlparse': '0.4.4', 'stack-data': '0.6.3', 'starlette': '0.27.0', 'statsmodels': '0.14.1', 'tabulate': '0.9.0', 'tblib': '3.0.0', 'tenacity': '8.2.3', 'threadpoolctl': '3.3.0', 'toml': '0.10.2', 'tomlkit': '0.12.4', 'tornado': '6.4', 'tqdm': '4.66.2', 'traitlets': '5.14.1', 'typer': '0.9.0', 'types-pygments': '2.17.0.20240310', 'types-docutils': '0.20.0.20240331', 'types-pytz': '2024.1.0.20240203', 'types-setuptools': '69.2.0.20240317', 'typing-extensions': '4.10.0', 'typing-inspect': '0.9.0', 'tzdata': '2024.1', 'uc-micro-py': '1.0.3', 'urllib3': '1.26.18', 'uvicorn': '0.27.1', 'uvloop': '0.19.0', 'validators': '0.18.2', 'watchdog': '4.0.0', 'watchfiles': '0.21.0', 'wcwidth': '0.2.13', 'websocket-client': '1.7.0', 'websockets': '12.0', 'wf-aws': '1.15.0', 'wf-blackbox': '3.0.5', 'wf-bunny': '4.7.0', 'wf-cli': '1.27.9', 'wf-cli-plugin-aws': '1.5.7', 'wf-cli-plugin-docs': '1.2.7', 'wf-cli-plugin-login': '1.1.0', 'wf-cli-plugin-py': '2.8.5', 'wf-codec': '1.29.4', 'wf-codec-pandas': '1.0.1', 'wf-comms': '2.3.0', 'wf-configvars': '1.1.0', 'wf-ds-tools': '0.13.0', 'wf-env': '1.2.0', 'wf-memo': '1.1.1', 'wf-mlmodels-delinquency': '0.0.0', 'wf-modelhub': '0.7.3', 'wf-modelhub-types': '0.7.0', 'wf-sync': '2.5.0', 'wheel': '0.42.0', 'widgetsnbextension': '4.0.10', 'wrapt': '1.16.0', 'xgboost': '2.0.3', 'xmltodict': '0.13.0', 'xxhash': '3.4.1', 'yarl': '1.9.4', 'zenml': '0.58.0', 'zipp': '3.17.0', 'zstandard': '0.22.0'}

CURRENT STACK

Name: Wayflyer DS ID: 3876302e-0de4-439d-81b2-de954dc56eed User: javier.lopezpena / fda958f2-f055-47c7-942c-9ff3977f610e Workspace: default / ad453c60-e306-48a2-bb48-102098f0a3a9

ORCHESTRATOR: default

Name: default ID: c79ec6fb-89f7-4d2b-b642-19f4d070820d Type: orchestrator Flavor: local Configuration: {} Workspace: default / ad453c60-e306-48a2-bb48-102098f0a3a9

ARTIFACT_STORE: s3

Name: s3 ID: e372107f-0349-4b93-9b47-5645339bcfb8 Type: artifact_store Flavor: s3 Configuration: {'authentication_secret': None, 'path': 's3://wf-zenml/artifacts', 'key': '****', 'secret': '****', 'token': '****', 'client_kwargs': None, 'config_kwargs': None, 's3_additional_kwargs': None} User: dave.hall / da3bf4ff-c7e1-4f85-9bd5-b3f779e03954 Workspace: default / ad453c60-e306-48a2-bb48-102098f0a3a9

ALERTER: DS Alerter

Name: DS Alerter ID: e7c058d4-96c5-4caa-8115-a7a998ec86a5 Type: alerter Flavor: slack Configuration: {'slack_token': '****', 'default_slack_channel_id': 'C064J8NMV8V'} User: javier.lopezpena / fda958f2-f055-47c7-942c-9ff3977f610e Workspace: default / ad453c60-e306-48a2-bb48-102098f0a3a9

What happened?

We recently updated our zenml OSS server to version 0.58. Our stack works fine and we have been running our pipelines without issues. Yesterday I tried to make a copy of my active stack to play around with components, and I got this error when it tried to copy the alerter component (Slack Alerter, full stacktrace further below):

...
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/integrations/slack/flavors/slack_alerter_flavor.py", line 82, in is_valid
    logger.error("Slack API Error:", e.response["error"])
Message: 'Slack API Error:'
Arguments: ('missing_scope',)
...
ValueError: Invalid stack component configuration. Please verify the configurations set for alerter.

The slack alerter component is simple enough to set up again, so this is not a massive deal, but I thought you might want to know. I never tried to copy the stack before so I don't really know if this ever worked and was broken by the migration, or if it never worked.

Reproduction steps

No response

Relevant log output

Traceback (most recent call last):
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/integrations/slack/flavors/slack_alerter_flavor.py", line 75, in is_valid
    response = client.conversations_info(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/slack_sdk/web/client.py", line 2852, in conversations_info
    return self.api_call("conversations.info", http_verb="GET", params=kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/slack_sdk/web/base_client.py", line 155, in api_call
    return self._sync_send(api_url=api_url, req_args=req_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/slack_sdk/web/base_client.py", line 186, in _sync_send
    return self._urllib_api_call(
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/slack_sdk/web/base_client.py", line 317, in _urllib_api_call
    ).validate()
      ^^^^^^^^^^
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/slack_sdk/web/slack_response.py", line 199, in validate
    raise e.SlackApiError(message=msg, response=self)
slack_sdk.errors.SlackApiError: The request to the Slack API failed. (url: https://www.slack.com/api/conversations.info)
The server responded with: {'ok': False, 'error': 'missing_scope', 'needed': 'channels:read,groups:read,mpim:read,im:read', 'provided': 
'chat:write,chat:write.customize,chat:write.public'}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.11/logging/__init__.py", line 1110, in emit
    msg = self.format(record)
          ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/logging/__init__.py", line 953, in format
    return fmt.format(record)
           ^^^^^^^^^^^^^^^^^^
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/logger.py", line 87, in format
    formatted_message = formatter.format(record)
                        ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/logging/__init__.py", line 687, in format
    record.message = record.getMessage()
                     ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/logging/__init__.py", line 377, in getMessage
    msg = msg % self.args
          ~~~~^~~~~~~~~~~
TypeError: not all arguments converted during string formatting
Call stack:
  File "/workspaces/mlmodels-delinquency/.venv/bin/zenml", line 8, in <module>
    sys.exit(cli())
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/cli/stack.py", line 1071, in copy_stack
    copied_stack = client.create_stack(
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/client_lazy_loader.py", line 192, in _inner
    return func(*args_, **kwargs)
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/client.py", line 1187, in create_stack
    self._validate_stack_configuration(stack=stack)
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/client_lazy_loader.py", line 192, in _inner
    return func(*args_, **kwargs)
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/client.py", line 1536, in _validate_stack_configuration
    configuration = validate_stack_component_config(
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/stack/utils.py", line 79, in validate_stack_component_config
    if not configuration.is_valid:
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/stack/stack_component.py", line 195, in __custom_getattribute__
    value = super().__getattribute__(key)
  File "/workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/integrations/slack/flavors/slack_alerter_flavor.py", line 82, in is_valid
    logger.error("Slack API Error:", e.response["error"])
Message: 'Slack API Error:'
Arguments: ('missing_scope',)
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /workspaces/mlmodels-delinquency/.venv/bin/zenml:8 in <module>                                   │
│                                                                                                  │
│   5 from zenml.cli.cli import cli                                                                │
│   6 if __name__ == "__main__":                                                                   │
│   7 │   sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])                         │
│ ❱ 8 │   sys.exit(cli())                                                                          │
│   9                                                                                              │
│                                                                                                  │
│ /workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/click/core.py:1130 in        │
│ __call__                                                                                         │
│                                                                                                  │
│   1127 │                                                                                         │
│   1128 │   def __call__(self, *args: t.Any, **kwargs: t.Any) -> t.Any:                           │
│   1129 │   │   """Alias for :meth:`main`."""                                                     │
│ ❱ 1130 │   │   return self.main(*args, **kwargs)                                                 │
│   1131                                                                                           │
│   1132                                                                                           │
│   1133 class Command(BaseCommand):                                                               │
│                                                                                                  │
│ /workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/click/core.py:1055 in main   │
│                                                                                                  │
│   1052 │   │   try:                                                                              │
│   1053 │   │   │   try:                                                                          │
│   1054 │   │   │   │   with self.make_context(prog_name, args, **extra) as ctx:                  │
│ ❱ 1055 │   │   │   │   │   rv = self.invoke(ctx)                                                 │
│   1056 │   │   │   │   │   if not standalone_mode:                                               │
│   1057 │   │   │   │   │   │   return rv                                                         │
│   1058 │   │   │   │   │   # it's not safe to `ctx.exit(rv)` here!                               │
│                                                                                                  │
│ /workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/click/core.py:1657 in invoke │
│                                                                                                  │
│   1654 │   │   │   │   super().invoke(ctx)                                                       │
│   1655 │   │   │   │   sub_ctx = cmd.make_context(cmd_name, args, parent=ctx)                    │
│   1656 │   │   │   │   with sub_ctx:                                                             │
│ ❱ 1657 │   │   │   │   │   return _process_result(sub_ctx.command.invoke(sub_ctx))               │
│   1658 │   │                                                                                     │
│   1659 │   │   # In chain mode we create the contexts step by step, but after the                │
│   1660 │   │   # base command has been invoked.  Because at that point we do not                 │
│                                                                                                  │
│ /workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/click/core.py:1657 in invoke │
│                                                                                                  │
│   1654 │   │   │   │   super().invoke(ctx)                                                       │
│   1655 │   │   │   │   sub_ctx = cmd.make_context(cmd_name, args, parent=ctx)                    │
│   1656 │   │   │   │   with sub_ctx:                                                             │
│ ❱ 1657 │   │   │   │   │   return _process_result(sub_ctx.command.invoke(sub_ctx))               │
│   1658 │   │                                                                                     │
│   1659 │   │   # In chain mode we create the contexts step by step, but after the                │
│   1660 │   │   # base command has been invoked.  Because at that point we do not                 │
│                                                                                                  │
│ /workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/click/core.py:1404 in invoke │
│                                                                                                  │
│   1401 │   │   │   echo(style(message, fg="red"), err=True)                                      │
│   1402 │   │                                                                                     │
│   1403 │   │   if self.callback is not None:                                                     │
│ ❱ 1404 │   │   │   return ctx.invoke(self.callback, **ctx.params)                                │
│   1405 │                                                                                         │
│   1406 │   def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]:  │
│   1407 │   │   """Return a list of completions for the incomplete value. Looks                   │
│                                                                                                  │
│ /workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/click/core.py:760 in invoke  │
│                                                                                                  │
│    757 │   │                                                                                     │
│    758 │   │   with augment_usage_errors(__self):                                                │
│    759 │   │   │   with ctx:                                                                     │
│ ❱  760 │   │   │   │   return __callback(*args, **kwargs)                                        │
│    761 │                                                                                         │
│    762 │   def forward(                                                                          │
│    763 │   │   __self, __cmd: "Command", *args: t.Any, **kwargs: t.Any  # noqa: B902             │
│                                                                                                  │
│ /workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/cli/stack.py:1071 in   │
│ copy_stack                                                                                       │
│                                                                                                  │
│   1068 │   │   │   if c_list:                                                                    │
│   1069 │   │   │   │   component_mapping[c_type] = c_list[0].id                                  │
│   1070 │   │                                                                                     │
│ ❱ 1071 │   │   copied_stack = client.create_stack(                                               │
│   1072 │   │   │   name=target_stack,                                                            │
│   1073 │   │   │   components=component_mapping,                                                 │
│   1074 │   │   )                                                                                 │
│                                                                                                  │
│ /workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/client_lazy_loader.py: │
│ 192 in _inner                                                                                    │
│                                                                                                  │
│   189 │   │   │   │   │   with contextlib.suppress(ValueError):                                  │
│   190 │   │   │   │   │   │   kwargs[k] = ClientLazyLoader(**v).evaluate()                       │
│   191 │   │   │                                                                                  │
│ ❱ 192 │   │   │   return func(*args_, **kwargs)                                                  │
│   193 │   │                                                                                      │
│   194 │   │   return _inner                                                                      │
│   195                                                                                            │
│                                                                                                  │
│ /workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/client.py:1187 in      │
│ create_stack                                                                                     │
│                                                                                                  │
│   1184 │   │   │   user=self.active_user.id,                                                     │
│   1185 │   │   )                                                                                 │
│   1186 │   │                                                                                     │
│ ❱ 1187 │   │   self._validate_stack_configuration(stack=stack)                                   │
│   1188 │   │                                                                                     │
│   1189 │   │   return self.zen_store.create_stack(stack=stack)                                   │
│   1190                                                                                           │
│                                                                                                  │
│ /workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/client_lazy_loader.py: │
│ 192 in _inner                                                                                    │
│                                                                                                  │
│   189 │   │   │   │   │   with contextlib.suppress(ValueError):                                  │
│   190 │   │   │   │   │   │   kwargs[k] = ClientLazyLoader(**v).evaluate()                       │
│   191 │   │   │                                                                                  │
│ ❱ 192 │   │   │   return func(*args_, **kwargs)                                                  │
│   193 │   │                                                                                      │
│   194 │   │   return _inner                                                                      │
│   195                                                                                            │
│                                                                                                  │
│ /workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/client.py:1536 in      │
│ _validate_stack_configuration                                                                    │
│                                                                                                  │
│   1533 │   │   │   │   │   warn_if_config_server_mismatch,                                       │
│   1534 │   │   │   │   )                                                                         │
│   1535 │   │   │   │                                                                             │
│ ❱ 1536 │   │   │   │   configuration = validate_stack_component_config(                          │
│   1537 │   │   │   │   │   configuration_dict=component.configuration,                           │
│   1538 │   │   │   │   │   flavor_name=component.flavor,                                         │
│   1539 │   │   │   │   │   component_type=component.type,                                        │
│                                                                                                  │
│ /workspaces/mlmodels-delinquency/.venv/lib/python3.11/site-packages/zenml/stack/utils.py:80 in   │
│ validate_stack_component_config                                                                  │
│                                                                                                  │
│    77 │                                                                                          │
│    78 │   configuration = flavor_class.config_class(**configuration_dict)                        │
│    79 │   if not configuration.is_valid:                                                         │
│ ❱  80 │   │   raise ValueError(                                                                  │
│    81 │   │   │   f"Invalid stack component configuration. Please verify "                       │
│    82 │   │   │   f"the configurations set for {component_type}."                                │
│    83 │   │   )                                                                                  │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
ValueError: Invalid stack component configuration. Please verify the configurations set for alerter.

Code of Conduct

strickvl commented 1 month ago

Thanks for the report. We'll check it out and report back here when replicated + (if needed) fixed etc.

avishniakov commented 1 month ago

Hey @jlopezpena , thanks for reporting! I checked this issue and it works just right if the token is properly configured with the given versions. The error message suggests that the scopes set for the token do not fulfill the requirements. Can you look into extending the scopes to the needed channels:read,groups:read,mpim:read,im:read while given are chat:write,chat:write.customize,chat:write.public? More details on the Conversations API for Slack

jlopezpena commented 4 weeks ago

Checked recreating the token and it worked, I guess what confuses me is how it did work before with the wrong token, for several versions, and then stopped. In any case, deleting the token and recreating it is a simple enough solution, so I am happy to close this