mirror of
https://github.com/TheFunny/ArisuAutoSweeper
synced 2026-10-15 19:12:24 +00:00
feat: backport removeprefix and removesuffix functions for compatibility with Python <3.9
This commit is contained in:
@@ -301,32 +301,53 @@ def get_serial_pair(serial):
|
|||||||
return None, None
|
return None, None
|
||||||
|
|
||||||
|
|
||||||
def remove_prefix(s, prefix):
|
@t.overload
|
||||||
|
def removeprefix(s: str, prefix: str) -> str: ...
|
||||||
|
|
||||||
|
|
||||||
|
@t.overload
|
||||||
|
def removeprefix(s: bytes, prefix: bytes) -> bytes: ...
|
||||||
|
|
||||||
|
|
||||||
|
@t.overload
|
||||||
|
def removesuffix(s: str, suffix: str) -> str: ...
|
||||||
|
|
||||||
|
|
||||||
|
@t.overload
|
||||||
|
def removesuffix(s: bytes, suffix: bytes) -> bytes: ...
|
||||||
|
|
||||||
|
|
||||||
|
def removeprefix(s, prefix):
|
||||||
"""
|
"""
|
||||||
Remove prefix of a string or bytes like `string.removeprefix(prefix)`, which is on Python3.9+
|
Backport `string.removeprefix(prefix)`, which is on Python>=3.9
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
s (str, bytes):
|
s (str | bytes):
|
||||||
prefix (str, bytes):
|
prefix (str | bytes):
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str, bytes:
|
str | bytes:
|
||||||
"""
|
"""
|
||||||
return s[len(prefix):] if s.startswith(prefix) else s
|
if s.startswith(prefix):
|
||||||
|
return s[len(prefix):]
|
||||||
|
return s
|
||||||
|
|
||||||
|
|
||||||
def remove_suffix(s, suffix):
|
def removesuffix(s, suffix):
|
||||||
"""
|
"""
|
||||||
Remove suffix of a string or bytes like `string.removesuffix(suffix)`, which is on Python3.9+
|
Backport `string.removesuffix(suffix)`, which is on Python>=3.9
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
s (str, bytes):
|
s (str | bytes):
|
||||||
suffix (str, bytes):
|
suffix (str | bytes):
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str, bytes:
|
str | bytes:
|
||||||
"""
|
"""
|
||||||
return s[:-len(suffix)] if s.endswith(suffix) else s
|
# s[:-0] is empty string, so we need to check if suffix is empty
|
||||||
|
if suffix and s.endswith(suffix):
|
||||||
|
return s[:-len(suffix)]
|
||||||
|
return s
|
||||||
|
|
||||||
|
|
||||||
class IniterNoMinicap(u2.init.Initer):
|
class IniterNoMinicap(u2.init.Initer):
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ except KeyError:
|
|||||||
logger.error('Patch pkg_resources failed, patch module does not exists')
|
logger.error('Patch pkg_resources failed, patch module does not exists')
|
||||||
|
|
||||||
|
|
||||||
def remove_suffix(s, suffix):
|
def removesuffix(s, suffix):
|
||||||
"""
|
"""
|
||||||
Remove suffix of a string or bytes like `string.removesuffix(suffix)`, which is on Python3.9+
|
Remove suffix of a string or bytes like `string.removesuffix(suffix)`, which is on Python3.9+
|
||||||
|
|
||||||
@@ -36,7 +36,10 @@ def remove_suffix(s, suffix):
|
|||||||
Returns:
|
Returns:
|
||||||
str, bytes:
|
str, bytes:
|
||||||
"""
|
"""
|
||||||
return s[:-len(suffix)] if s.endswith(suffix) else s
|
# s[:-0] is empty string, so we need to check if suffix is empty
|
||||||
|
if suffix and s.endswith(suffix):
|
||||||
|
return s[:-len(suffix)]
|
||||||
|
return s
|
||||||
|
|
||||||
|
|
||||||
class FakeDistributionObject:
|
class FakeDistributionObject:
|
||||||
@@ -71,7 +74,7 @@ class PackageCache:
|
|||||||
# adbutils-0.11.0-py3.7.egg-info
|
# adbutils-0.11.0-py3.7.egg-info
|
||||||
res = re.match(r'^([a-zA-Z0-9._]+)-([a-zA-Z0-9._]+)-', file)
|
res = re.match(r'^([a-zA-Z0-9._]+)-([a-zA-Z0-9._]+)-', file)
|
||||||
if res:
|
if res:
|
||||||
version = remove_suffix(res.group(2), '.dist')
|
version = removesuffix(res.group(2), '.dist')
|
||||||
# version = res.group(2)
|
# version = res.group(2)
|
||||||
obj = FakeDistributionObject(
|
obj = FakeDistributionObject(
|
||||||
dist=res.group(1),
|
dist=res.group(1),
|
||||||
|
|||||||
Reference in New Issue
Block a user