From e78145277a546550144c736578a26b9feabc7d7c Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Sat, 18 May 2024 13:52:52 +0200 Subject: [PATCH] =?UTF-8?q?NamedTuple=20=E2=86=92=20dataclass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Helps maintainability. For example, it can help use mutable default values during class initialisation. --- src/pipx/package_specifier.py | 6 ++++-- src/pipx/util.py | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/pipx/package_specifier.py b/src/pipx/package_specifier.py index 26ced4f471..e3b1985af2 100644 --- a/src/pipx/package_specifier.py +++ b/src/pipx/package_specifier.py @@ -9,8 +9,9 @@ import logging import re import urllib.parse +from dataclasses import dataclass from pathlib import Path -from typing import List, NamedTuple, Optional, Set, Tuple +from typing import List, Optional, Set, Tuple from packaging.requirements import InvalidRequirement, Requirement from packaging.specifiers import SpecifierSet @@ -24,7 +25,8 @@ ARCHIVE_EXTENSIONS = (".whl", ".tar.gz", ".zip") -class ParsedPackage(NamedTuple): +@dataclass(frozen=True) +class ParsedPackage: valid_pep508: Optional[Requirement] valid_url: Optional[str] valid_local_path: Optional[str] diff --git a/src/pipx/util.py b/src/pipx/util.py index e5fd72f276..7b18320d1a 100644 --- a/src/pipx/util.py +++ b/src/pipx/util.py @@ -7,12 +7,12 @@ import subprocess import sys import textwrap +from dataclasses import dataclass from pathlib import Path from typing import ( Any, Dict, List, - NamedTuple, NoReturn, Optional, Pattern, @@ -36,7 +36,8 @@ def __init__(self, message: str, wrap_message: bool = True): super().__init__(message) -class RelevantSearch(NamedTuple): +@dataclass(frozen=True) +class RelevantSearch: pattern: Pattern[str] category: str