commit e71ece5e66f81979a2671e7476eaaf5330c250a8 from: Jelmer Vernooij via: GitHub date: Fri Sep 29 18:43:13 2023 UTC Merge pull request #1217 from jelmer/pyupgrade Run pyupgrade commit - 5dd478755a82fcbf49b8e35ed465b86613b1c080 commit + e71ece5e66f81979a2671e7476eaaf5330c250a8 blob - 3089c2c06fa5b1bb501bf0b97d52f2e370e60be1 blob + 82e92994deaf0d55feb23214584ba299d7f690cc --- dulwich/client.py +++ dulwich/client.py @@ -1329,8 +1329,8 @@ def find_git_command() -> List[str]: """Find command to run for system Git (usually C Git).""" if sys.platform == "win32": # support .exe, .bat and .cmd try: # to avoid overhead - import win32api import pywintypes + import win32api except ImportError: # run through cmd.exe with some overhead return ["cmd", "/c", "git"] else: @@ -2181,11 +2181,7 @@ class AbstractHttpGitClient(GitClient): return cls(urlunparse(parsedurl), **kwargs) def __repr__(self) -> str: - return "{}({!r}, dumb={!r})".format( - type(self).__name__, - self._base_url, - self.dumb, - ) + return f"{type(self).__name__}({self._base_url!r}, dumb={self.dumb!r})" class Urllib3HttpGitClient(AbstractHttpGitClient): blob - 8c93672381d66b84bf21d64228aad3529a7cc5f4 blob + 459222434fbf0bfce2e2a1c3a9f51b6d375db6bd --- dulwich/cloud/gcs.py +++ dulwich/cloud/gcs.py @@ -38,8 +38,7 @@ class GcsObjectStore(BucketBasedObjectStore): self.subpath = subpath def __repr__(self) -> str: - return "{}({!r}, subpath={!r})".format( - type(self).__name__, self.bucket, self.subpath) + return f"{type(self).__name__}({self.bucket!r}, subpath={self.subpath!r})" def _remove_pack(self, name): self.bucket.delete_blobs([ blob - 888af088ee6f36d7927c91a404ef398910733c0d blob + 5db7ebdf83d217fa6d1d44b0d32e7971536e31f9 --- dulwich/graph.py +++ dulwich/graph.py @@ -20,15 +20,15 @@ """Implementation of merge-base following the approach of git.""" +from heapq import heappop, heappush + from .lru_cache import LRUCache -from heapq import heappush, heappop - # priority queue using builtin python minheap tools # why they do not have a builtin maxheap is simply ridiculous but # liveable with integer time stamps using negation -class WorkList(object): +class WorkList: def __init__(self): self.pq = [] @@ -108,7 +108,7 @@ def _find_lcas(lookup_parents, c1, c2s, lookup_stamp, # remove any duplicates and sort it so that earliest is first results = [] for dt, cmt in cands: - if not ((cstates[cmt] & _DNC) == _DNC) and not (dt, cmt) in results: + if not ((cstates[cmt] & _DNC) == _DNC) and (dt, cmt) not in results: results.append((dt, cmt)) results.sort(key=lambda x: x[0]) lcas = [cmt for dt, cmt in results] blob - 56f1c6207e8627c143fbe585d152bd2c6b6e945e blob + 8c0a5bd2fa9a507b28c2059c160f1e7b2ff3e1e7 --- dulwich/ignore.py +++ dulwich/ignore.py @@ -177,11 +177,7 @@ class Pattern: ) def __repr__(self) -> str: - return "{}({!r}, {!r})".format( - type(self).__name__, - self.pattern, - self.ignorecase, - ) + return f"{type(self).__name__}({self.pattern!r}, {self.ignorecase!r})" def match(self, path: bytes) -> bool: """Try to match a path against this ignore pattern. blob - e40c8bfe9e12ede707b58069424c2df0ddf25f81 blob + c2e7702606ff584c63afb8407477903731d16013 --- dulwich/lru_cache.py +++ dulwich/lru_cache.py @@ -131,31 +131,31 @@ class LRUCache(Generic[K, V]): raise AssertionError( "the _most_recently_used entry is not" " supposed to have a previous entry" - " {}".format(node) + f" {node}" ) while node is not None: if node.next_key is _null_key: if node is not self._least_recently_used: raise AssertionError( - "only the last node should have" " no next value: {}".format(node) + "only the last node should have" f" no next value: {node}" ) node_next = None else: node_next = self._cache[node.next_key] if node_next.prev is not node: raise AssertionError( - "inconsistency found, node.next.prev" " != node: {}".format(node) + "inconsistency found, node.next.prev" f" != node: {node}" ) if node.prev is None: if node is not self._most_recently_used: raise AssertionError( "only the _most_recently_used should" - " not have a previous node: {}".format(node) + f" not have a previous node: {node}" ) else: if node.prev.next_key != node.key: raise AssertionError( - "inconsistency found, node.prev.next" " != node: {}".format(node) + "inconsistency found, node.prev.next" f" != node: {node}" ) yield node node = node_next blob - 255ecbc34b593689be0cf13905ecb935f6c12311 blob + 9cfadd86cef71a9ec512158f9f5be548bf5628a9 --- dulwich/patch.py +++ dulwich/patch.py @@ -136,12 +136,8 @@ def unified_diff( started = True fromdate = f"\t{fromfiledate}" if fromfiledate else "" todate = f"\t{tofiledate}" if tofiledate else "" - yield "--- {}{}{}".format( - fromfile.decode(tree_encoding), fromdate, lineterm - ).encode(output_encoding) - yield "+++ {}{}{}".format( - tofile.decode(tree_encoding), todate, lineterm - ).encode(output_encoding) + yield f"--- {fromfile.decode(tree_encoding)}{fromdate}{lineterm}".encode(output_encoding) + yield f"+++ {tofile.decode(tree_encoding)}{todate}{lineterm}".encode(output_encoding) first, last = group[0], group[-1] file1_range = _format_range_unified(first[1], last[2]) blob - 253989551f98928a3338363e87522d7de4703416 blob + 5f6ef31fd0805b2606be48b30ae33bde00126025 --- dulwich/tests/test_client.py +++ dulwich/tests/test_client.py @@ -1037,9 +1037,7 @@ class HttpGitClientTests(TestCase): original_password = "Ya#1$2%3" quoted_password = urlquote(original_password) - url = "https://{username}:{password}@github.com/jelmer/dulwich".format( - username=quoted_username, password=quoted_password - ) + url = f"https://{quoted_username}:{quoted_password}@github.com/jelmer/dulwich" c = HttpGitClient.from_parsedurl(urlparse(url)) self.assertEqual(original_username, c._username) blob - ee940e834b431a15a1bb23dfe2f06a96b85133c0 blob + 08e00c6a732e2093cc6ca2c64906f360db243963 --- dulwich/tests/test_graph.py +++ dulwich/tests/test_graph.py @@ -21,7 +21,7 @@ from dulwich.tests import TestCase -from ..graph import _find_lcas, can_fast_forward, WorkList +from ..graph import WorkList, _find_lcas, can_fast_forward from ..repo import MemoryRepo from .utils import make_commit blob - 4da428e941063c66f62b073d1d1adadc7d6d45ad blob + 4c2c24ece78b41caa3271548a9743bf7e617ea59 --- dulwich/tests/test_walk.py +++ dulwich/tests/test_walk.py @@ -39,10 +39,7 @@ class TestWalkEntry: self.changes = changes def __repr__(self) -> str: - return "".format( - self.commit.id, - self.changes, - ) + return f"" def __eq__(self, other): if not isinstance(other, WalkEntry) or self.commit != other.commit: blob - 7e20ce908a67af5b121ee7fecf8edadcda2e7aec blob + 795eb4f07bdce6958d2c9ae2cc2dc4b726ba5b8f --- dulwich/walk.py +++ dulwich/walk.py @@ -117,10 +117,7 @@ class WalkEntry: return self._changes[path_prefix] def __repr__(self) -> str: - return "".format( - self.commit.id, - self.changes(), - ) + return f"" class _CommitTimeQueue: blob - bc301069f63bcc0beae4b695da282b44ef39cdfb blob + 00e492bdb2dbed49a37a46ffaf37ed7e5d0465e4 --- setup.py +++ setup.py @@ -7,12 +7,6 @@ import sys from setuptools import Extension, setup -if sys.version_info < (3, 7): - raise Exception( - 'Dulwich only supports Python 3.6 and later. ' - 'For 2.7 support, please install a version prior to 0.20') - - if sys.platform == 'darwin' and os.path.exists('/usr/bin/xcodebuild'): # XCode 4.0 dropped support for ppc architecture, which is hardcoded in # distutils.sysconfig