From b64313d313723c62f173f750f2d699ebf169e01f Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Wed, 21 Feb 2024 10:15:26 +0100 Subject: revoke the false promise that bytes would be convertible to Path pathlib.Path(somebytes) fails. Hence bytes is not actually convertible and should not be included in PathConvertible. Then, we can simplify matters in quite a few places by knowing that the thing we work with is not bytes. --- linuxnamespaces/__init__.py | 7 ++----- linuxnamespaces/atlocation.py | 10 ++-------- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/linuxnamespaces/__init__.py b/linuxnamespaces/__init__.py index c060e01..f2e54ce 100644 --- a/linuxnamespaces/__init__.py +++ b/linuxnamespaces/__init__.py @@ -246,11 +246,8 @@ def bind_mount( source = AtLocation(source) target = AtLocation(target) try: - # mypy does not know that os.fspath accepts AtLocation - srcloc: str | bytes - srcloc = os.fspath(source) # type: ignore - tgtloc: str | bytes - tgtloc = os.fspath(target) # type: ignore + srcloc = os.fspath(source) + tgtloc = os.fspath(target) except ValueError: otflags = OpenTreeFlags.OPEN_TREE_CLONE if recursive: diff --git a/linuxnamespaces/atlocation.py b/linuxnamespaces/atlocation.py index 2c827a2..5871db8 100644 --- a/linuxnamespaces/atlocation.py +++ b/linuxnamespaces/atlocation.py @@ -17,7 +17,7 @@ import typing AT_FDCWD = -100 -PathConvertible = typing.Union[bytes, str, os.PathLike] +PathConvertible = typing.Union[str, os.PathLike] class AtFlags(enum.IntFlag): @@ -124,12 +124,6 @@ class AtLocation: ) if not self.location: return AtLocation(self.fd, name, self.flags) - if isinstance(self.location, bytes) or isinstance(name, bytes): - return AtLocation( - self.fd, - os.path.join(os.fsencode(self.location), os.fsencode(name)), - self.flags, - ) return AtLocation( self.fd, pathlib.Path(self.location).joinpath(name), self.flags ) @@ -344,7 +338,7 @@ class AtLocation: """ self.close() - def __fspath__(self) -> str | bytes: + def __fspath__(self) -> str: """Return the underlying location if it uniquely defines this object. Otherwise raise a ValueError. """ -- cgit v1.2.3