diff --git a/pyproject.toml b/pyproject.toml index ab39695..2b1481b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,4 +16,13 @@ dependencies = [ dev-dependencies = [ "pre-commit>=4.0.1", "textual-dev>=1.6.1", + "types-pyyaml>=6.0.12.20240917", ] +[tool.mypy] +ignore_missing_imports = true + +[[tool.mypy.overrides]] +module = [ + "yaml" +] +ignore_missing_imports = true diff --git a/src/presentation/summary/composer_card.py b/src/presentation/summary/composer_card.py index 9e624fd..dedcc0d 100644 --- a/src/presentation/summary/composer_card.py +++ b/src/presentation/summary/composer_card.py @@ -62,7 +62,8 @@ def get_composer_panel(self) -> Table: if updatable_packages > 0: table.add_row( "[label]Packages:", - f"[blue]{len(self._composer.required_packages)}[/blue] ([orange1]{updatable_packages} updates available[/orange1])", + f"[blue]{len(self._composer.required_packages)}[/blue] " + f"([orange1]{updatable_packages} updates available[/orange1])", ) else: table.add_row( diff --git a/src/services/docker_client.py b/src/services/docker_client.py index 00dd344..38445dd 100644 --- a/src/services/docker_client.py +++ b/src/services/docker_client.py @@ -12,6 +12,7 @@ class ContainerStatus(Enum): NA = "n/a" RUNNING = "Running" + class DockerClient(BaseService): def __init__(self, context: AppContext): self._client = docker.from_env() @@ -40,19 +41,24 @@ def list_container_names(self) -> dict[str, str]: running_containers = self.get_running_containers() for compose_file in project.docker_compose_files: file_path = os.path.join(project.path, compose_file) - with open(file_path, 'r') as file: + with open(file_path, "r") as file: docker_compose = yaml.safe_load(file) services = docker_compose.get("services", {}) for service_name, service_config in services.items(): - container_name = service_config.get("container_name", f"{basename}-{service_name}") + container_name = service_config.get( + "container_name", f"{basename}-{service_name}" + ) container_names[container_name] = ContainerStatus.NA.value for running_container in running_containers: if running_container.name.startswith(container_name): status = running_container.status if "Health" in running_container.attrs["State"]: - status += f" ({running_container.attrs["State"]["Health"]["Status"]})" + health = running_container.attrs["State"]["Health"][ + "Status" + ] + status += f" ({health})" container_names[container_name] = status break diff --git a/uv.lock b/uv.lock index 090a005..41fbe72 100644 --- a/uv.lock +++ b/uv.lock @@ -512,6 +512,7 @@ dependencies = [ dev = [ { name = "pre-commit" }, { name = "textual-dev" }, + { name = "types-pyyaml" }, ] [package.metadata] @@ -527,6 +528,7 @@ requires-dist = [ dev = [ { name = "pre-commit", specifier = ">=4.0.1" }, { name = "textual-dev", specifier = ">=1.6.1" }, + { name = "types-pyyaml", specifier = ">=6.0.12.20240917" }, ] [[package]] @@ -776,6 +778,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a8/2b/886d13e742e514f704c33c4caa7df0f3b89e5a25ef8db02aa9ca3d9535d5/typer-0.12.5-py3-none-any.whl", hash = "sha256:62fe4e471711b147e3365034133904df3e235698399bc4de2b36c8579298d52b", size = 47288 }, ] +[[package]] +name = "types-pyyaml" +version = "6.0.12.20240917" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/92/7d/a95df0a11f95c8f48d7683f03e4aed1a2c0fc73e9de15cca4d38034bea1a/types-PyYAML-6.0.12.20240917.tar.gz", hash = "sha256:d1405a86f9576682234ef83bcb4e6fff7c9305c8b1fbad5e0bcd4f7dbdc9c587", size = 12381 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/2c/c1d81d680997d24b0542aa336f0a65bd7835e5224b7670f33a7d617da379/types_PyYAML-6.0.12.20240917-py3-none-any.whl", hash = "sha256:392b267f1c0fe6022952462bf5d6523f31e37f6cea49b14cee7ad634b6301570", size = 15264 }, +] + [[package]] name = "typing-extensions" version = "4.12.2"