From c6fbb655b146ca3e2a84b065acefe697bbc54f20 Mon Sep 17 00:00:00 2001 From: David Hotham Date: Sat, 16 Mar 2024 14:28:01 +0000 Subject: [PATCH] Tidying (#9167) - mypy: keyring, importlib-metadata - tiny simplifications --- poetry.lock | 10 +++++----- pyproject.toml | 6 ++---- src/poetry/utils/authenticator.py | 4 +--- src/poetry/utils/env/env_manager.py | 2 +- tests/conftest.py | 8 ++++---- tests/utils/test_cache.py | 16 ++++++++-------- 6 files changed, 21 insertions(+), 25 deletions(-) diff --git a/poetry.lock b/poetry.lock index cf070e21ed1..0cd0a823709 100644 --- a/poetry.lock +++ b/poetry.lock @@ -691,13 +691,13 @@ trio = ["async_generator", "trio"] [[package]] name = "keyring" -version = "24.3.0" +version = "24.3.1" description = "Store and access your passwords safely." optional = false python-versions = ">=3.8" files = [ - {file = "keyring-24.3.0-py3-none-any.whl", hash = "sha256:4446d35d636e6a10b8bce7caa66913dd9eca5fd222ca03a3d42c38608ac30836"}, - {file = "keyring-24.3.0.tar.gz", hash = "sha256:e730ecffd309658a08ee82535a3b5ec4b4c8669a9be11efb66249d8e0aeb9a25"}, + {file = "keyring-24.3.1-py3-none-any.whl", hash = "sha256:df38a4d7419a6a60fea5cef1e45a948a3e8430dd12ad88b0f423c5c143906218"}, + {file = "keyring-24.3.1.tar.gz", hash = "sha256:c3327b6ffafc0e8befbdb597cacdb4928ffe5c1212f7645f186e6d9957a898db"}, ] [package.dependencies] @@ -711,7 +711,7 @@ SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} [package.extras] completion = ["shtab (>=1.1.0)"] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [[package]] name = "more-itertools" @@ -1595,4 +1595,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "248e9730965d57236bea78bd77def9b901b48df7adda1590065e0b0078bd2ecc" +content-hash = "7729493b02c98c369388b7f7a717166b595208e268f1e05f45f4c419c34ef3c6" diff --git a/pyproject.toml b/pyproject.toml index cf0512c3639..ae57280c126 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ dulwich = "^0.21.2" fastjsonschema = "^2.18.0" importlib-metadata = { version = ">=4.4", python = "<3.10" } installer = "^0.7.0" -keyring = "^24.0.0" +keyring = "^24.3.1" # packaging uses calver, so version is unclamped packaging = ">=23.1" pexpect = "^4.7.0" @@ -64,6 +64,7 @@ pre-commit = ">=2.10" coverage = ">=7.2.0" deepdiff = "^6.3" httpretty = "^1.1" +jaraco-classes = "^3.3.1" pytest = "^8.0" pytest-cov = "^4.0" pytest-mock = "^3.9" @@ -161,10 +162,8 @@ exclude = [ module = [ 'poetry.plugins.plugin_manager', 'poetry.repositories.installed_repository', - 'poetry.utils.env.site_packages', 'tests.console.commands.self.test_show_plugins', 'tests.helpers', - 'tests.repositories.test_installed_repository', ] warn_unused_ignores = false @@ -173,7 +172,6 @@ module = [ 'deepdiff.*', 'fastjsonschema.*', 'httpretty.*', - 'keyring.*', 'pexpect.*', 'requests_toolbelt.*', 'shellingham.*', diff --git a/src/poetry/utils/authenticator.py b/src/poetry/utils/authenticator.py index 47a03a7fd4b..397a5f7d4af 100644 --- a/src/poetry/utils/authenticator.py +++ b/src/poetry/utils/authenticator.py @@ -1,6 +1,5 @@ from __future__ import annotations -import contextlib import dataclasses import functools import logging @@ -167,8 +166,7 @@ def get_session(self, url: str | None = None) -> requests.Session: def close(self) -> None: for session in self._sessions_for_netloc.values(): if session is not None: - with contextlib.suppress(AttributeError): - session.close() + session.close() def __del__(self) -> None: self.close() diff --git a/src/poetry/utils/env/env_manager.py b/src/poetry/utils/env/env_manager.py index 12eaac57e8b..a759fdcc0d0 100644 --- a/src/poetry/utils/env/env_manager.py +++ b/src/poetry/utils/env/env_manager.py @@ -232,7 +232,7 @@ def activate(self, python: str) -> Env: venv = venv_path / name # Create if needed - if not venv.exists() or venv.exists() and create: + if not venv.exists() or create: in_venv = os.environ.get("VIRTUAL_ENV") is not None if in_venv or not venv.exists(): create = True diff --git a/tests/conftest.py b/tests/conftest.py index 603eb045d5b..70ff1545cf8 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -16,8 +16,8 @@ import keyring import pytest +from jaraco.classes import properties from keyring.backend import KeyringBackend -from keyring.backend import properties # type: ignore[attr-defined] from keyring.backends.fail import Keyring as FailKeyring from keyring.errors import KeyringError from keyring.errors import KeyringLocked @@ -110,7 +110,7 @@ def __init__(self) -> None: self._passwords: dict[str, dict[str | None, str | None]] = {} @properties.classproperty - def priority(self) -> int | float: + def priority(self) -> float: return 42 def set_password(self, service: str, username: str | None, password: Any) -> None: @@ -129,7 +129,7 @@ def delete_password(self, service: str, username: str | None) -> None: class LockedBackend(KeyringBackend): @properties.classproperty - def priority(self) -> int | float: + def priority(self) -> float: return 42 def set_password(self, service: str, username: str | None, password: Any) -> None: @@ -147,7 +147,7 @@ def delete_password(self, service: str, username: str | None) -> None: class ErroneousBackend(FailKeyring): @properties.classproperty - def priority(self) -> int | float: # type: ignore[override] + def priority(self) -> float: return 42 def get_credential(self, service: str, username: str | None) -> Any: diff --git a/tests/utils/test_cache.py b/tests/utils/test_cache.py index 3e73e832ca1..1ae518baa00 100644 --- a/tests/utils/test_cache.py +++ b/tests/utils/test_cache.py @@ -337,17 +337,17 @@ def replace_file(_: str, dest: Path) -> None: download_mock = mocker.Mock(side_effect=replace_file) + def get_archive(link: Link) -> Path: + path: Path = cache.get_cached_archive_for_link( + link, strict=True, download_func=download_mock + ) + return path + with concurrent.futures.ThreadPoolExecutor() as executor: tasks = [] for _ in range(4): - tasks.append( - executor.submit( - cache.get_cached_archive_for_link, - link, - strict=True, - download_func=download_mock, - ) - ) + tasks.append(executor.submit(get_archive, link)) + concurrent.futures.wait(tasks) results = set() for task in tasks: