refactor: use dataclasses vs. NamedTuples
This commit is contained in:
+10
-9
@@ -1,5 +1,4 @@
|
||||
import contextlib
|
||||
import dataclasses
|
||||
import fnmatch
|
||||
import itertools
|
||||
import os
|
||||
@@ -11,6 +10,7 @@ import sys
|
||||
import textwrap
|
||||
import time
|
||||
import urllib.request
|
||||
from dataclasses import dataclass
|
||||
from enum import Enum
|
||||
from functools import lru_cache
|
||||
from pathlib import Path
|
||||
@@ -22,7 +22,6 @@ from typing import (
|
||||
Iterable,
|
||||
Iterator,
|
||||
List,
|
||||
NamedTuple,
|
||||
Optional,
|
||||
Sequence,
|
||||
TextIO,
|
||||
@@ -228,7 +227,7 @@ def selector_matches(patterns: str, string: str) -> bool:
|
||||
|
||||
|
||||
# Once we require Python 3.10+, we can add kw_only=True
|
||||
@dataclasses.dataclass
|
||||
@dataclass(frozen=True)
|
||||
class IdentifierSelector:
|
||||
"""
|
||||
This class holds a set of build/skip patterns. You call an instance with a
|
||||
@@ -266,14 +265,14 @@ class IdentifierSelector:
|
||||
return should_build and not should_skip
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
@dataclass(frozen=True)
|
||||
class BuildSelector(IdentifierSelector):
|
||||
pass
|
||||
|
||||
|
||||
# Note that requires-python is not needed for TestSelector, as you can't test
|
||||
# what you can't build.
|
||||
@dataclasses.dataclass
|
||||
@dataclass(frozen=True)
|
||||
class TestSelector(IdentifierSelector):
|
||||
build_config: str = "*"
|
||||
|
||||
@@ -413,6 +412,12 @@ def unwrap(text: str) -> str:
|
||||
return re.sub(r"\s+", " ", text)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class FileReport:
|
||||
name: str
|
||||
size: str
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def print_new_wheels(msg: str, output_dir: Path) -> Iterator[None]:
|
||||
"""
|
||||
@@ -427,10 +432,6 @@ def print_new_wheels(msg: str, output_dir: Path) -> Iterator[None]:
|
||||
yield
|
||||
final_contents = set(output_dir.iterdir())
|
||||
|
||||
class FileReport(NamedTuple):
|
||||
name: str
|
||||
size: str
|
||||
|
||||
new_contents = [
|
||||
FileReport(wheel.name, f"{(wheel.stat().st_size + 1023) // 1024:,d}")
|
||||
for wheel in final_contents - existing_contents
|
||||
|
||||
Reference in New Issue
Block a user