Skip to content

ci: Static and unit test automation#71

Open
slothkong wants to merge 5 commits intomainfrom
static-and-unit-test-automation
Open

ci: Static and unit test automation#71
slothkong wants to merge 5 commits intomainfrom
static-and-unit-test-automation

Conversation

@slothkong
Copy link
Contributor

@slothkong slothkong commented Feb 18, 2026

Hi @pacospace ,

This PR addresses #7 and #15.

What's new

  • A new GitHub action that triggers on every push that modifies pyproject.toml or .py files to:
    • Run pre-commit hooks (source code linting)
    • Run pytest (source code unnittesting)
  • More readiblity and clarity for documentation surrounding containerized execution and local unittesting.

Technical Details
As of 18.02.2026, the following issus are flagged by the newly added automation:

Tabs remover.............................................................Passed
check for added large files..............................................Passed
check python ast.........................................................Passed
check BOM - deprecated: use fix-byte-order-marker........................Passed
check for case conflicts.................................................Passed
check docstring is first.................................................Passed
check json...........................................(no files to check)Skipped
check for merge conflicts................................................Passed
check for broken symlinks............................(no files to check)Skipped
check toml...............................................................Passed
check yaml...............................................................Passed
debug statements (python)................................................Passed
detect private key.......................................................Failed
- hook id: detect-private-key
- exit code: 1

Private key found: ewccli/tests/ewccli_ssh_keys_test.py

fix end of files.........................................................Passed
python tests naming......................................................Failed
- hook id: name-tests-test
- exit code: 1

ewccli/tests/test_dns_utils.py does not match pattern ".*_test\.py"

trim trailing whitespace.................................................Failed
- hook id: trailing-whitespace
- exit code: 1
- files were modified by this hook

Fixing .github/scripts/test-deployment-ansible.sh
Fixing .github/workflows/test-deployment-ansible-eumetsat.yml
Fixing .github/workflows/lint.v2.yml
Fixing .github/workflows/test-deployment-ansible-ecmwf.yml
Fixing README.md
Fixing ewccli/commands/hub/hub_utils.py

ruff check...............................................................Passed
ruff format..............................................................Failed
- hook id: ruff-format
- files were modified by this hook

5 files reformatted, 39 files left unchanged

mypy.....................................................................Failed
- hook id: mypy
- exit code: 1

ewccli/tests/ewccli_base_test.py:11: error: Cannot find implementation or
library stub for module named "pydantic"  [import-not-found]
    from pydantic import BaseModel, Field
    ^
ewccli/logger.py:13: error: Cannot find implementation or library stub for
module named "rich.console"  [import-not-found]
    from rich.console import Console
    ^
ewccli/logger.py:14: error: Cannot find implementation or library stub for
module named "rich.logging"  [import-not-found]
    from rich.logging import RichHandler
    ^
ewccli/commands/hub/hub_utils.py:15: error: Cannot find implementation or
library stub for module named "rich_click"  [import-not-found]
    import rich_click as click
    ^
ewccli/commands/hub/hub_utils.py:16: error: Cannot find implementation or
library stub for module named "rich.console"  [import-not-found]
    from rich.console import Console
    ^
ewccli/backends/openstack/backend_ostack.py:18: error: Cannot find
implementation or library stub for module named "openstack"  [import-not-found]
    import openstack
    ^
ewccli/backends/openstack/backend_ostack.py:19: error: Cannot find
implementation or library stub for module named "openstack.config" 
[import-not-found]
    from openstack.config import OpenStackConfig
    ^
ewccli/backends/openstack/backend_ostack.py:20: error: Cannot find
implementation or library stub for module named "openstack.exceptions" 
[import-not-found]
    from openstack.exceptions import ConfigException
    ^
ewccli/backends/openstack/backend_ostack.py:21: error: Cannot find
implementation or library stub for module named "openstack.compute.v2.server" 
[import-not-found]
    from openstack.compute.v2.server import Server
    ^
ewccli/backends/kubernetes/backend_k8s.py:15: error: Cannot find implementation
or library stub for module named "kubernetes"  [import-not-found]
    from kubernetes import client, config
    ^
ewccli/backends/kubernetes/backend_k8s.py:16: error: Cannot find implementation
or library stub for module named "kubernetes.client.rest"  [import-not-found]
    from kubernetes.client.rest import ApiException
    ^
ewccli/backends/kubernetes/backend_k8s.py:17: error: Cannot find implementation
or library stub for module named "kubernetes.config.config_exception" 
[import-not-found]
    from kubernetes.config.config_exception import ConfigException
    ^
ewccli/utils.py:22: error: Cannot find implementation or library stub for
module named "cryptography.hazmat.primitives"  [import-not-found]
    from cryptography.hazmat.primitives import serialization
    ^
ewccli/utils.py:23: error: Cannot find implementation or library stub for
module named "cryptography.hazmat.primitives.asymmetric"  [import-not-found]
    from cryptography.hazmat.primitives.asymmetric import rsa
    ^
ewccli/utils.py:24: error: Cannot find implementation or library stub for
module named "cryptography.hazmat.backends"  [import-not-found]
    from cryptography.hazmat.backends import default_backend
    ^
ewccli/utils.py:28: error: Cannot find implementation or library stub for
module named "rich_click"  [import-not-found]
    import rich_click as click
    ^
ewccli/utils.py:29: error: Cannot find implementation or library stub for
module named "click"  [import-not-found]
    from click import ClickException
    ^
ewccli/tests/ewccli_ssh_keys_test.py:13: error: Cannot find implementation or
library stub for module named "pytest"  [import-not-found]
    import pytest
    ^
ewccli/tests/ewccli_ssh_keys_test.py:14: error: Cannot find implementation or
library stub for module named "cryptography.hazmat.primitives.asymmetric" 
[import-not-found]
    from cryptography.hazmat.primitives.asymmetric import rsa
    ^
ewccli/tests/ewccli_ssh_keys_test.py:15: error: Cannot find implementation or
library stub for module named "cryptography.hazmat.primitives" 
[import-not-found]
    from cryptography.hazmat.primitives import serialization
    ^
ewccli/tests/ewccli_download_items_test.py:11: error: Cannot find
implementation or library stub for module named "pytest"  [import-not-found]
    import pytest
    ^
ewccli/tests/ewccli_download_items_test.py:21: error: Incompatible default for
argument "raise_exc" (default has type "None", argument has type "Exception") 
[assignment]
    ...nit__(self, text: str = "dummy content", raise_exc: Exception = None):
                                                                       ^~~~
ewccli/tests/ewccli_download_items_test.py:21: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
ewccli/tests/ewccli_download_items_test.py:21: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
ewccli/tests/ewccli_config_test.py:11: error: Cannot find implementation or
library stub for module named "click"  [import-not-found]
    import click
    ^
ewccli/tests/ewccli_config_test.py:12: error: Cannot find implementation or
library stub for module named "pytest"  [import-not-found]
    import pytest
    ^
ewccli/commands/login_command.py:15: error: Cannot find implementation or
library stub for module named "rich_click"  [import-not-found]
    import rich_click as click
    ^
ewccli/commands/login_command.py:16: error: Cannot find implementation or
library stub for module named "rich.console"  [import-not-found]
    from rich.console import Console
    ^
ewccli/commands/login_command.py:18: error: Cannot find implementation or
library stub for module named "prompt_toolkit.application"  [import-not-found]
    from prompt_toolkit.application import Application
    ^
ewccli/commands/login_command.py:19: error: Cannot find implementation or
library stub for module named "prompt_toolkit.widgets"  [import-not-found]
    from prompt_toolkit.widgets import RadioList, Box, Frame
    ^
ewccli/commands/login_command.py:20: error: Cannot find implementation or
library stub for module named "prompt_toolkit.layout"  [import-not-found]
    from prompt_toolkit.layout import Layout
    ^
ewccli/commands/login_command.py:21: error: Cannot find implementation or
library stub for module named "prompt_toolkit.styles"  [import-not-found]
    from prompt_toolkit.styles import Style
    ^
ewccli/commands/login_command.py:23: error: Cannot find implementation or
library stub for module named "kubernetes"  [import-not-found]
    from kubernetes import config
    ^
ewccli/commands/login_command.py:24: error: Cannot find implementation or
library stub for module named "kubernetes.config.config_exception" 
[import-not-found]
    from kubernetes.config.config_exception import (  # noqa: N813
    ^
ewccli/commands/login_command.py:27: error: Cannot find implementation or
library stub for module named "openstack.config"  [import-not-found]
    from openstack.config import OpenStackConfig
    ^
ewccli/commands/login_command.py:28: error: Cannot find implementation or
library stub for module named "openstack.exceptions"  [import-not-found]
    from openstack.exceptions import (  # noqa: N813
    ^
ewccli/commands/login_command.py:265: error: Incompatible default for argument
"profile" (default has type "None", argument has type "str")  [assignment]
        profile: str = None,
                       ^~~~
ewccli/commands/login_command.py:265: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
ewccli/commands/login_command.py:265: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
ewccli/commands/commons_infra.py:15: error: Cannot find implementation or
library stub for module named "rich.console"  [import-not-found]
    from rich.console import Console
    ^
ewccli/commands/commons_infra.py:16: error: Cannot find implementation or
library stub for module named "rich.table"  [import-not-found]
    from rich.table import Table
    ^
ewccli/commands/commons_infra.py:17: error: Cannot find implementation or
library stub for module named "rich.panel"  [import-not-found]
    from rich.panel import Panel
    ^
ewccli/commands/commons_infra.py:18: error: Cannot find implementation or
library stub for module named "rich"  [import-not-found]
    from rich import box
    ^
ewccli/commands/commons_infra.py:19: error: Cannot find implementation or
library stub for module named "click"  [import-not-found]
    from click import ClickException
    ^
ewccli/commands/commons_infra.py:20: error: Cannot find implementation or
library stub for module named "openstack"  [import-not-found]
    from openstack import connection
    ^
ewccli/commands/commons.py:21: error: Cannot find implementation or library
stub for module named "rich_click"  [import-not-found]
    import rich_click as click
    ^
ewccli/commands/commons.py:22: error: Cannot find implementation or library
stub for module named "rich.console"  [import-not-found]
    from rich.console import Console
    ^
ewccli/commands/commons.py:23: error: Cannot find implementation or library
stub for module named "rich.table"  [import-not-found]
    from rich.table import Table
    ^
ewccli/commands/commons.py:24: error: Cannot find implementation or library
stub for module named "rich"  [import-not-found]
    from rich import box
    ^
ewccli/commands/commons.py:25: error: Cannot find implementation or library
stub for module named "rich.markdown"  [import-not-found]
    from rich.markdown import Markdown
    ^
ewccli/commands/commons.py:26: error: Cannot find implementation or library
stub for module named "rich.align"  [import-not-found]
    from rich.align import Align
    ^
ewccli/commands/commons.py:99: error: Incompatible default for argument
"path_to_catalog" (default has type "Path", argument has type "str") 
[assignment]
        path_to_catalog: str = ewc_hub_config.EWC_CLI_HUB_ITEMS_PATH,
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ewccli/backends/ansible/backend_ansible.py:15: error: Cannot find
implementation or library stub for module named "ansible_runner" 
[import-not-found]
    import ansible_runner
    ^
ewccli/backends/ansible/backend_ansible.py:15: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
ewccli/tests/ewccli_commands_hub_deploy_server_test.py:13: error: Cannot find
implementation or library stub for module named "pytest"  [import-not-found]
    import pytest
    ^
ewccli/tests/ewccli_commands_hub_deploy_server_test.py:14: error: Cannot find
implementation or library stub for module named "pydantic"  [import-not-found]
    from pydantic import BaseModel
    ^
ewccli/commands/s3_command.py:12: error: Cannot find implementation or library
stub for module named "rich_click"  [import-not-found]
    import rich_click as click
    ^
ewccli/commands/k8s_command.py:12: error: Cannot find implementation or library
stub for module named "rich_click"  [import-not-found]
    import rich_click as click
    ^
ewccli/commands/k8s_command.py:22: error: Module "ewccli.utils" has no
attribute "load_cli_config"; maybe "load_cli_profile"?  [attr-defined]
    from ewccli.utils import load_cli_config
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ewccli/commands/infra_command.py:14: error: Cannot find implementation or
library stub for module named "rich_click"  [import-not-found]
    import rich_click as click
    ^
ewccli/commands/infra_command.py:15: error: Cannot find implementation or
library stub for module named "rich.console"  [import-not-found]
    from rich.console import Console
    ^
ewccli/commands/infra_command.py:16: error: Cannot find implementation or
library stub for module named "rich.table"  [import-not-found]
    from rich.table import Table
    ^
ewccli/commands/infra_command.py:17: error: Cannot find implementation or
library stub for module named "rich"  [import-not-found]
    from rich import box
    ^
ewccli/commands/infra_command.py:18: error: Cannot find implementation or
library stub for module named "click"  [import-not-found]
    from click import ClickException
    ^
ewccli/commands/hub/hub_backends.py:19: error: Cannot find implementation or
library stub for module named "openstack"  [import-not-found]
    from openstack import connection
    ^
ewccli/commands/dns_command.py:12: error: Cannot find implementation or library
stub for module named "rich_click"  [import-not-found]
    import rich_click as click
    ^
ewccli/tests/test_dns_utils.py:14: error: Cannot find implementation or library
stub for module named "pytest"  [import-not-found]
    import pytest
    ^
ewccli/commands/hub/hub_command.py:17: error: Cannot find implementation or
library stub for module named "rich_click"  [import-not-found]
    import rich_click as click
    ^
ewccli/commands/hub/hub_command.py:18: error: Cannot find implementation or
library stub for module named "rich.console"  [import-not-found]
    from rich.console import Console
    ^
ewccli/commands/hub/hub_command.py:19: error: Cannot find implementation or
library stub for module named "click"  [import-not-found]
    from click import ClickException
    ^
ewccli/commands/hub/hub_command.py:362: error: Incompatible types in assignment
(expression has type "str | None", variable has type "str")  [assignment]
        federee: str = cli_profile["federee"]
                       ^~~~~~~~~~~~~~~~~~~~~~
ewccli/commands/hub/hub_command.py:592: error: Argument "tenancy_name" to
"build_dns_record_name" has incompatible type "str | None"; expected "str" 
[arg-type]
                    tenancy_name=tenancy_name,
                                 ^~~~~~~~~~~~
ewccli/commands/hub/hub_command.py:627: error: Argument "tenancy_name" to
"get_hub_item_env_variable_value" has incompatible type "str | None"; expected
"str"  [arg-type]
                                tenancy_name=tenancy_name,
                                             ^~~~~~~~~~~~
ewccli/tests/ewccli_commands_hub_inputs_validation_test.py:11: error: Cannot
find implementation or library stub for module named "pytest" 
[import-not-found]
    import pytest
    ^
ewccli/tests/ewccli_commands_hub_inputs_validation_test.py:12: error: Cannot
find implementation or library stub for module named "pydantic" 
[import-not-found]
    from pydantic import BaseModel
    ^
ewccli/ewccli.py:13: error: Cannot find implementation or library stub for
module named "rich_click"  [import-not-found]
    import rich_click as click
    ^
ewccli/ewccli.py:61: error: Argument "profile" to "init_command" has
incompatible type "str | None"; expected "str"  [arg-type]
            profile=profile,
                    ^~~~~~~
Found 72 errors in 23 files (checked 44 source files)

black....................................................................Failed
- hook id: black
- exit code: 1

--- ewccli/backends/openstack/backend_ostack.py	2026-02-18 09:30:50.465766+00:00
+++ ewccli/backends/openstack/backend_ostack.py	2026-02-18 09:30:55.781760+00:00
@@ -63,11 +63,13 @@
                 self.credential_secret = application_credential_secret or os.getenv(
                     "OS_APPLICATION_CREDENTIAL_SECRET"
                 )
                 self.auth_url = auth_url
             else:
-                config = OpenStackConfig()  # ~/.config/openstack/clouds.yaml, to change use OS_CLIENT_CONFIG_FILE
+                config = (
+                    OpenStackConfig()
+                )  # ~/.config/openstack/clouds.yaml, to change use OS_CLIENT_CONFIG_FILE
                 # Get the default cloud if no name is specified
                 cloud = (
                     config.get_one()
                 )  # It can be set with OS_CLOUD directly in Openstack
                 cloud_config = cloud.config.get("auth")
would reformat ewccli/backends/openstack/backend_ostack.py
--- ewccli/commands/hub/hub_command.py	2026-02-18 09:30:50.456766+00:00
+++ ewccli/commands/hub/hub_command.py	2026-02-18 09:30:56.576012+00:00
@@ -544,13 +544,15 @@
             security_groups_inputs += tuple(dsc for dsc in item_default_security_groups)
 
         server_inputs = {
             "server_name": server_name,
             "is_gpu": is_gpu,
-            "image_name": item_info_ewccli.get(HubItemCLIKeys.DEFAULT_IMAGE_NAME.value)
-            if not image_name
-            else image_name,
+            "image_name": (
+                item_info_ewccli.get(HubItemCLIKeys.DEFAULT_IMAGE_NAME.value)
+                if not image_name
+                else image_name
+            ),
             "keypair_name": keypair_name,
             "flavour_name": flavour_name,
             "external_ip": external_ip
             or item_info_ewccli.get(HubItemCLIKeys.EXTERNAL_IP.value),
             "networks": networks,
would reformat ewccli/commands/hub/hub_command.py
--- ewccli/utils.py	2026-02-18 09:30:50.455766+00:00
+++ ewccli/utils.py	2026-02-18 09:30:56.927724+00:00
@@ -156,13 +156,13 @@
 
     if application_credential_id:
         cfg[resolved_profile]["application_credential_id"] = application_credential_id
 
     if application_credential_secret:
-        cfg[resolved_profile]["application_credential_secret"] = (
-            application_credential_secret
-        )
+        cfg[resolved_profile][
+            "application_credential_secret"
+        ] = application_credential_secret
 
     os.makedirs(os.path.dirname(profiles_file_path), exist_ok=True)
     with open(profiles_file_path, "w") as f:
         cfg.write(f)
 
would reformat ewccli/utils.py

Oh no! 💥 💔 💥
3 files would be reformatted, 41 files would be left unchanged.

flake8...................................................................Failed
- hook id: flake8
- exit code: 1

ewccli/backends/ansible/backend_ansible.py:26:5: CFQ002 Function "run_ansible_live" has 7 arguments that exceeds max allowed 6
ewccli/backends/ansible/backend_ansible.py:26:5: CCR001 Cognitive complexity is too high (14 > 7)
ewccli/backends/ansible/backend_ansible.py:65:20: C408 Unnecessary dict call - rewrite as a literal.
ewccli/backends/ansible/backend_ansible.py:118:5: CFQ002 Function "run_ansible" has 7 arguments that exceeds max allowed 6
ewccli/backends/kubernetes/CRDtemplates/bucketccrd.py:32:6: N815 variable 'siteName' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/bucketccrd.py:33:6: N815 variable 'bucketName' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/bucketccrd.py:35:6: N815 variable 'writeAccessIds' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/bucketccrd.py:36:6: N815 variable 'writeAccessRefsIds' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/bucketccrd.py:37:6: N815 variable 'readAccessIds' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/bucketccrd.py:38:6: N815 variable 'readAccessRefsIds' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/bucketccrd.py:70:6: N815 variable 'apiVersion' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/clustercrd.py:30:6: N815 variable 'siteName' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/clustercrd.py:31:6: N815 variable 'clusterName' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/clustercrd.py:32:6: N815 variable 'kubernetesVersion' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/clustercrd.py:33:6: N815 variable 'nodeCount' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/clustercrd.py:34:6: N815 variable 'nodeSize' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/clustercrd.py:66:6: N815 variable 'apiVersion' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/dnscrd.py:28:6: N815 variable 'healthEndpoint' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/dnscrd.py:47:6: N815 variable 'siteName' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/dnscrd.py:48:6: N815 variable 'domainName' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/dnscrd.py:49:6: N815 variable 'recordName' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/dnscrd.py:51:6: N815 variable 'recordType' in class scope should not be mixedCase
ewccli/backends/kubernetes/CRDtemplates/dnscrd.py:84:6: N815 variable 'apiVersion' in class scope should not be mixedCase
ewccli/backends/kubernetes/backend_k8s.py:72:5: CFQ004 Function "delete_custom_resource" has 4 returns that exceeds max allowed 3
ewccli/backends/kubernetes/backend_k8s.py:119:5: CFQ004 Function "describe_custom_resource" has 4 returns that exceeds max allowed 3
ewccli/backends/kubernetes/backend_k8s.py:166:5: CFQ004 Function "list_custom_resources" has 4 returns that exceeds max allowed 3
ewccli/backends/kubernetes/backend_k8s.py:200:5: CFQ004 Function "create_custom_resource" has 6 returns that exceeds max allowed 3
ewccli/backends/kubernetes/backend_k8s.py:200:5: CCR001 Cognitive complexity is too high (13 > 7)
ewccli/backends/kubernetes/backend_k8s.py:200:5: C901 'KubernetesBackend.create_custom_resource' is too complex (11)
ewccli/backends/kubernetes/utils.py:30:1: CFQ004 Function "get_reason_from_conditions" has 4 returns that exceeds max allowed 3
ewccli/backends/openstack/backend_ostack.py:128:5: CFQ002 Function "create_server" has 12 arguments that exceeds max allowed 6
ewccli/backends/openstack/backend_ostack.py:128:5: CFQ001 Function create_server has length 222 that exceeds max allowed length 100
ewccli/backends/openstack/backend_ostack.py:128:5: CFQ004 Function "create_server" has 9 returns that exceeds max allowed 3
ewccli/backends/openstack/backend_ostack.py:128:5: CCR001 Cognitive complexity is too high (45 > 7)
ewccli/backends/openstack/backend_ostack.py:128:5: C901 'OpenstackBackend.create_server' is too complex (25)
ewccli/backends/openstack/backend_ostack.py:389:5: CFQ004 Function "check_server_inputs" has 5 returns that exceeds max allowed 3
ewccli/backends/openstack/backend_ostack.py:389:5: CCR001 Cognitive complexity is too high (29 > 7)
ewccli/backends/openstack/backend_ostack.py:389:5: C901 'OpenstackBackend.check_server_inputs' is too complex (15)
ewccli/backends/openstack/backend_ostack.py:453:5: CCR001 Cognitive complexity is too high (40 > 7)
ewccli/backends/openstack/backend_ostack.py:453:5: C901 'OpenstackBackend.list_servers' is too complex (13)
ewccli/backends/openstack/backend_ostack.py:507:38: C416 Unnecessary list comprehension - rewrite using list().
ewccli/backends/openstack/backend_ostack.py:524:5: CFQ004 Function "delete_server" has 4 returns that exceeds max allowed 3
ewccli/backends/openstack/backend_ostack.py:618:5: CFQ004 Function "add_external_ip" has 5 returns that exceeds max allowed 3
ewccli/backends/openstack/backend_ostack.py:618:5: CCR001 Cognitive complexity is too high (11 > 7)
ewccli/backends/openstack/backend_ostack.py:744:5: CFQ004 Function "create_keypair" has 4 returns that exceeds max allowed 3
ewccli/backends/openstack/backend_ostack.py:790:5: CFQ004 Function "delete_keypair" has 4 returns that exceeds max allowed 3
ewccli/commands/commons.py:376:1: CCR001 Cognitive complexity is too high (18 > 7)
ewccli/commands/commons.py:418:31: C416 Unnecessary list comprehension - rewrite using list().
ewccli/commands/commons.py:445:65: C416 Unnecessary list comprehension - rewrite using list().
ewccli/commands/commons.py:445:121: LN001 code line is too long (135 > 120)
ewccli/commands/commons.py:445:121: LN001 code line is too long (136 > 120)
ewccli/commands/commons.py:445:121: LN001 code line is too long (141 > 120)
ewccli/commands/commons.py:445:121: LN001 code line is too long (151 > 120)
ewccli/commands/commons.py:445:121: LN001 code line is too long (152 > 120)
ewccli/commands/commons.py:445:121: E501 line too long (152 > 120 characters)
ewccli/commands/commons.py:479:1: CCR001 Cognitive complexity is too high (12 > 7)
ewccli/commands/commons.py:521:1: CCR001 Cognitive complexity is too high (27 > 7)
ewccli/commands/commons.py:521:1: C901 'describe_object' is too complex (11)
ewccli/commands/commons.py:528:5: CCR001 Cognitive complexity is too high (16 > 7)
ewccli/commands/commons_infra.py:34:1: CFQ002 Function "check_server_conflict_with_inputs" has 7 arguments that exceeds max allowed 6
ewccli/commands/commons_infra.py:34:1: CFQ004 Function "check_server_conflict_with_inputs" has 6 returns that exceeds max allowed 3
ewccli/commands/commons_infra.py:34:1: CCR001 Cognitive complexity is too high (16 > 7)
ewccli/commands/commons_infra.py:34:1: C901 'check_server_conflict_with_inputs' is too complex (15)
ewccli/commands/commons_infra.py:198:1: CFQ004 Function "resolve_image_and_flavor" has 6 returns that exceeds max allowed 3
ewccli/commands/commons_infra.py:198:1: CCR001 Cognitive complexity is too high (18 > 7)
ewccli/commands/commons_infra.py:198:1: C901 'resolve_image_and_flavor' is too complex (11)
ewccli/commands/commons_infra.py:286:1: CCR001 Cognitive complexity is too high (29 > 7)
ewccli/commands/commons_infra.py:286:1: C901 'resolve_machine_ip' is too complex (14)
ewccli/commands/commons_infra.py:357:1: CCR001 Cognitive complexity is too high (23 > 7)
ewccli/commands/commons_infra.py:443:1: CFQ002 Function "deploy_server" has 10 arguments that exceeds max allowed 6
ewccli/commands/commons_infra.py:443:1: CFQ001 Function deploy_server has length 274 that exceeds max allowed length 100
ewccli/commands/commons_infra.py:443:1: CFQ004 Function "deploy_server" has 18 returns that exceeds max allowed 3
ewccli/commands/commons_infra.py:443:1: CCR001 Cognitive complexity is too high (57 > 7)
ewccli/commands/commons_infra.py:443:1: C901 'deploy_server' is too complex (34)
ewccli/commands/commons_infra.py:568:24: C409 Unnecessary list passed to tuple() - rewrite as a tuple literal.
ewccli/commands/commons_infra.py:633:121: LN001 code line is too long (135 > 120)
ewccli/commands/commons_infra.py:633:121: LN001 code line is too long (136 > 120)
ewccli/commands/commons_infra.py:633:121: E501 line too long (137 > 120 characters)
ewccli/commands/hub/hub_backends.py:60:1: CCR001 Cognitive complexity is too high (28 > 7)
ewccli/commands/hub/hub_backends.py:60:1: C901 'get_hub_item_env_variable_value' is too complex (11)
ewccli/commands/hub/hub_backends.py:226:1: CFQ002 Function "run_ansible_item" has 10 arguments that exceeds max allowed 6
ewccli/commands/hub/hub_backends.py:226:1: CFQ001 Function run_ansible_item has length 101 that exceeds max allowed length 100
ewccli/commands/hub/hub_backends.py:226:1: CCR001 Cognitive complexity is too high (13 > 7)
ewccli/commands/hub/hub_backends.py:362:1: CFQ002 Function "run_ansible_playbook_item" has 10 arguments that exceeds max allowed 6
ewccli/commands/hub/hub_command.py:579:9: E266 too many leading '#' for block comment
ewccli/commands/hub/hub_command.py:603:121: LN001 code line is too long (135 > 120)
ewccli/commands/hub/hub_command.py:603:121: LN001 code line is too long (136 > 120)
ewccli/commands/hub/hub_command.py:603:121: E501 line too long (136 > 120 characters)
ewccli/commands/hub/hub_command.py:605:121: LN001 code line is too long (122 > 120)
ewccli/commands/hub/hub_command.py:605:121: LN001 code line is too long (142 > 120)
ewccli/commands/hub/hub_command.py:605:121: LN001 code line is too long (157 > 120)
ewccli/commands/hub/hub_command.py:605:121: LN001 code line is too long (158 > 120)
ewccli/commands/hub/hub_command.py:605:121: E501 line too long (158 > 120 characters)
ewccli/commands/hub/hub_command.py:606:121: E501 line too long (148 > 120 characters)
ewccli/commands/hub/hub_command.py:607:121: E501 line too long (134 > 120 characters)
ewccli/commands/hub/hub_command.py:610:9: E266 too many leading '#' for block comment
ewccli/commands/hub/hub_command.py:647:121: LN001 code line is too long (137 > 120)
ewccli/commands/hub/hub_command.py:647:121: LN001 code line is too long (138 > 120)
ewccli/commands/hub/hub_command.py:647:121: E501 line too long (138 > 120 characters)
ewccli/commands/hub/hub_utils.py:27:1: CCR001 Cognitive complexity is too high (10 > 7)
ewccli/commands/hub/hub_utils.py:100:121: LN001 code line is too long (121 > 120)
ewccli/commands/hub/hub_utils.py:100:121: LN001 code line is too long (122 > 120)
ewccli/commands/hub/hub_utils.py:100:121: E501 line too long (122 > 120 characters)
ewccli/commands/infra_command.py:112:1: CFQ002 Function "create_cmd" has 18 arguments that exceeds max allowed 6
ewccli/commands/infra_command.py:112:1: CCR001 Cognitive complexity is too high (15 > 7)
ewccli/commands/infra_command.py:340:1: CFQ002 Function "delete_cmd" has 7 arguments that exceeds max allowed 6
ewccli/commands/login_command.py:258:1: CFQ002 Function "init_command" has 7 arguments that exceeds max allowed 6
ewccli/commands/login_command.py:258:1: CCR001 Cognitive complexity is too high (12 > 7)
ewccli/commands/s3_command.py:121:1: CCR001 Cognitive complexity is too high (8 > 7)
ewccli/ewccli.py:32:20: C408 Unnecessary dict call - rewrite as a literal.
ewccli/ewccli.py:43:1: CFQ002 Function "init" has 7 arguments that exceeds max allowed 6
ewccli/tests/ewccli_commands_hub_deploy_server_test.py:97:1: CCR001 Cognitive complexity is too high (8 > 7)
ewccli/utils.py:57:1: CFQ002 Function "save_default_login_profile" has 7 arguments that exceeds max allowed 6
ewccli/utils.py:96:1: CFQ002 Function "save_cli_profile" has 8 arguments that exceeds max allowed 6
ewccli/utils.py:170:1: CFQ001 Function load_cli_profile has length 112 that exceeds max allowed length 100
ewccli/utils.py:170:1: CCR001 Cognitive complexity is too high (28 > 7)
ewccli/utils.py:170:1: C901 'load_cli_profile' is too complex (12)
ewccli/utils.py:296:24: C416 Unnecessary list comprehension - rewrite using list().
ewccli/utils.py:299:121: LN001 code line is too long (127 > 120)
ewccli/utils.py:299:121: LN001 code line is too long (144 > 120)
ewccli/utils.py:299:121: LN001 code line is too long (146 > 120)
ewccli/utils.py:299:121: E501 line too long (146 > 120 characters)
ewccli/utils.py:359:1: CFQ004 Function "run_command_from_host_live" has 6 returns that exceeds max allowed 3
ewccli/utils.py:359:1: CCR001 Cognitive complexity is too high (11 > 7)
ewccli/utils.py:359:1: C901 'run_command_from_host_live' is too complex (11)

@slothkong slothkong marked this pull request as draft February 18, 2026 06:50
@slothkong slothkong marked this pull request as ready for review February 18, 2026 09:43
@slothkong slothkong requested a review from pacospace February 18, 2026 09:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants