Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/pkgps/_impl/attrs/nevr.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
__all__ = ["NEVR"]

from attrs import asdict, evolve, field, frozen
from attrs.validators import matches_re
from attrs.validators import ge, matches_re, min_len
from typing_extensions import Self

from ..parse import parse_nevr, parse_nevr_or_none
Expand Down Expand Up @@ -31,11 +31,11 @@ class NEVR:
)
)
"""Name. Must not contain: < > = whitespace { } %"""
epoch: int = 0
epoch: int = field(default=0, validator=ge(0))
"""Epoch."""
version: str
version: str = field(validator=min_len(1))
"""Version."""
release: str
release: str = field(validator=min_len(1))
"""Release."""

copy = evolve
Expand Down
8 changes: 4 additions & 4 deletions src/pkgps/_impl/attrs/nevra.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
__all__ = ["NEVRA"]

from attrs import asdict, evolve, field, frozen
from attrs.validators import matches_re
from attrs.validators import ge, matches_re, min_len

from ..parse import parse_nevra, parse_nevra_or_none
from .nevr import NEVR
Expand Down Expand Up @@ -32,11 +32,11 @@ class NEVRA:
)
)
"""Name. Must not contain: < > = whitespace { } %"""
epoch: int = 0
epoch: int = field(default=0, validator=ge(0))
"""Epoch."""
version: str
version: str = field(validator=min_len(1))
"""Version."""
release: str
release: str = field(validator=min_len(1))
"""Release."""
arch: str
"""Architecture."""
Expand Down
6 changes: 3 additions & 3 deletions src/pkgps/_impl/attrs/nvr.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@


from attrs import asdict, evolve, field, frozen
from attrs.validators import matches_re
from attrs.validators import matches_re, min_len

from ..parse import parse_nvr, parse_nvr_or_none

Expand All @@ -31,9 +31,9 @@ class NVR:
)
)
"""Name. Must not contain: < > = whitespace { } %"""
version: str
version: str = field(validator=min_len(1))
"""Version."""
release: str
release: str = field(validator=min_len(1))
"""Release."""

copy = evolve
Expand Down
6 changes: 3 additions & 3 deletions src/pkgps/_impl/attrs/nvra.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
__all__ = ["NVRA"]

from attrs import asdict, evolve, field, frozen
from attrs.validators import matches_re
from attrs.validators import matches_re, min_len

from ..parse import parse_nvra, parse_nvra_or_none
from .nvr import NVR
Expand All @@ -30,9 +30,9 @@ class NVRA:
)
)
"""Name. Must not contain: < > = whitespace { } %"""
version: str
version: str = field(validator=min_len(1))
"""Version."""
release: str
release: str = field(validator=min_len(1))
"""Release."""
arch: str
"""Architecture."""
Expand Down
16 changes: 9 additions & 7 deletions src/pkgps/_impl/nevr.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ def __init__(
f"Prohibited characters: {INVALID_NAME_CHARS_DISPLAY}",
)
require(epoch >= 0, "epoch must be a positive integer")
require(len(version) > 0, "Version cannot be empty")
require(len(release) > 0, "Release cannot be empty")

self._name = name
self._epoch = epoch
Expand All @@ -54,23 +56,23 @@ def __eq__(self, other: object) -> bool:
return (
isinstance(other, NEVR)
and self._name == other.name
and self.epoch == other.epoch
and self.version == other.version
and self.release == other.release
and self._epoch == other.epoch
and self._version == other.version
and self._release == other.release
)

def __hash__(self) -> int:
return hash((self._name, self.epoch, self.version, self.release))
return hash((self._name, self._epoch, self._version, self._release))

def __repr__(self) -> str:
return f"NEVR(name={self._name!r}, epoch={self._epoch!r}, version={self._version!r}, release={self._release!r})"

def __str__(self) -> str:
epoch_string = f"{self.epoch}:" if self.epoch else ""
return f"{self.name}-{epoch_string}{self.version}-{self.release}"
epoch_string = f"{self._epoch}:" if self._epoch else ""
return f"{self._name}-{epoch_string}{self._version}-{self._release}"

def __iter__(self):
return iter((self.name, self.epoch, self.version, self.release))
return iter((self._name, self._epoch, self._version, self._release))

@property
def name(self) -> str:
Expand Down
22 changes: 13 additions & 9 deletions src/pkgps/_impl/nevra.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ def __init__(
f"Prohibited characters: {INVALID_NAME_CHARS_DISPLAY}",
)
require(epoch >= 0, "epoch must be a positive integer")
require(len(version) > 0, "Version cannot be empty")
require(len(release) > 0, "Release cannot be empty")

self._name = name
self._epoch = epoch
Expand All @@ -56,25 +58,27 @@ def from_string_or_none(cls, nevra: str | None) -> NEVRA | None:
def __eq__(self, other: object) -> bool:
return (
isinstance(other, NEVRA)
and self.name == other.name
and self.epoch == other.epoch
and self.version == other.version
and self.release == other.release
and self.arch == other.arch
and self._name == other.name
and self._epoch == other.epoch
and self._version == other.version
and self._release == other.release
and self._arch == other.arch
)

def __hash__(self) -> int:
return hash((self._name, self.epoch, self.version, self.release, self.arch))
return hash((self._name, self._epoch, self._version, self._release, self._arch))

def __repr__(self) -> str:
return f"NEVRA(name={self._name!r}, epoch={self._epoch!r}, version={self._version!r}, release={self._release!r}, arch={self._arch!r})"

def __str__(self) -> str:
epoch_string = f"{self.epoch}:" if self.epoch else ""
return f"{self.name}-{epoch_string}{self.version}-{self.release}.{self.arch}"
epoch_string = f"{self._epoch}:" if self._epoch else ""
return (
f"{self._name}-{epoch_string}{self._version}-{self._release}.{self._arch}"
)

def __iter__(self):
return iter((self.name, self.epoch, self.version, self.release, self.arch))
return iter((self._name, self._epoch, self._version, self._release, self._arch))

@property
def name(self) -> str:
Expand Down
12 changes: 7 additions & 5 deletions src/pkgps/_impl/nvr.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ def __init__(self, *, name: str, version: str, release: str) -> None:
f"Package name '{name}' contains invalid character {invalid_match.group() if invalid_match else ''}. "
f"Prohibited characters: {INVALID_NAME_CHARS_DISPLAY}",
)
require(len(version) > 0, "Version cannot be empty")
require(len(release) > 0, "Release cannot be empty")

self._name = name
self._version = version
Expand All @@ -56,21 +58,21 @@ def __eq__(self, other: object) -> bool:
return (
isinstance(other, NVR)
and self._name == other.name
and self.version == other.version
and self.release == other.release
and self._version == other.version
and self._release == other.release
)

def __hash__(self) -> int:
return hash((self._name, self.version, self.release))
return hash((self._name, self._version, self._release))

def __repr__(self) -> str:
return f"NVR(name={self._name!r}, version={self._version!r}, release={self._release!r})"

def __str__(self) -> str:
return f"{self.name}-{self.version}-{self.release}"
return f"{self._name}-{self._version}-{self._release}"

def __iter__(self) -> Iterator[str]:
return iter((self.name, self.version, self.release))
return iter((self._name, self._version, self._release))

@property
def name(self) -> str:
Expand Down
18 changes: 10 additions & 8 deletions src/pkgps/_impl/nvra.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ def __init__(self, *, name: str, version: str, release: str, arch: str) -> None:
f"Package name '{name}' contains invalid character {invalid_match.group() if invalid_match else ''}. "
f"Prohibited characters: {INVALID_NAME_CHARS_DISPLAY}",
)
require(len(version) > 0, "Version cannot be empty")
require(len(release) > 0, "Release cannot be empty")

self._name = name
self._version = version
Expand All @@ -50,23 +52,23 @@ def from_string_or_none(cls, nvra: str | None) -> NVRA | None:
def __eq__(self, other: object) -> bool:
return (
isinstance(other, NVRA)
and self.name == other.name
and self.version == other.version
and self.release == other.release
and self.arch == other.arch
and self._name == other.name
and self._version == other.version
and self._release == other.release
and self._arch == other.arch
)

def __hash__(self) -> int:
return hash((self.name, self.version, self.release, self.arch))
return hash((self._name, self._version, self._release, self._arch))

def __repr__(self) -> str:
return f"NVRA(name={self.name!r}, version={self.version!r}, release={self.release!r}, arch={self.arch!r})"
return f"NVRA(name={self._name!r}, version={self._version!r}, release={self._release!r}, arch={self._arch!r})"

def __str__(self) -> str:
return f"{self.name}-{self.version}-{self.release}.{self.arch}"
return f"{self._name}-{self._version}-{self._release}.{self._arch}"

def __iter__(self):
return iter((self.name, self.version, self.release, self.arch))
return iter((self._name, self._version, self._release, self._arch))

@property
def name(self) -> str:
Expand Down
4 changes: 2 additions & 2 deletions src/pkgps/_impl/pydantic/nevr.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ class NEVR(Frozen):
"""Name. Must not contain: < > = whitespace { } %"""
epoch: int = Field(default=0, ge=0)
"""Epoch."""
version: str
version: str = Field(min_length=1)
"""Version."""
release: str
release: str = Field(min_length=1)
"""Release."""

@classmethod
Expand Down
4 changes: 2 additions & 2 deletions src/pkgps/_impl/pydantic/nevra.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ class NEVRA(Frozen):
"""Name. Must not contain: < > = whitespace { } %"""
epoch: int = Field(default=0, ge=0)
"""Epoch."""
version: str
version: str = Field(min_length=1)
"""Version."""
release: str
release: str = Field(min_length=1)
"""Release."""
arch: str
"""Architecture."""
Expand Down
4 changes: 2 additions & 2 deletions src/pkgps/_impl/pydantic/nvr.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ class NVR(Frozen):

name: str = Field(pattern=r"^[^<>=\s{}%]+$")
"""Name. Must not contain: < > = whitespace { } %"""
version: str
version: str = Field(min_length=1)
"""Version."""
release: str
release: str = Field(min_length=1)
"""Release."""

@classmethod
Expand Down
4 changes: 2 additions & 2 deletions src/pkgps/_impl/pydantic/nvra.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ class NVRA(Frozen):

name: str = Field(pattern=r"^[^<>=\s{}%]+$")
"""Name. Must not contain: < > = whitespace { } %"""
version: str
version: str = Field(min_length=1)
"""Version."""
release: str
release: str = Field(min_length=1)
"""Release."""
arch: str
"""Architecture."""
Expand Down