Mercurial > public > mercurial-scm > hg
comparison mercurial/subrepo.py @ 52741:5c48fd4c0e68
typing: introduce a `types` module and a MatcherT alias
This is a proposal to formalise the way we do typing and do more of it.
The initial motivation to make progress is to help break the 100+ module
cycle that is slowing pytype a lot.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 30 Jan 2025 18:22:01 +0100 |
parents | 5cc8deb96b48 |
children |
comparison
equal
deleted
inserted
replaced
52740:7405f8a67611 | 52741:5c48fd4c0e68 |
---|---|
16 import sys | 16 import sys |
17 import tarfile | 17 import tarfile |
18 import xml.dom.minidom | 18 import xml.dom.minidom |
19 | 19 |
20 from .i18n import _ | 20 from .i18n import _ |
21 from .interfaces.types import ( | |
22 MatcherT, | |
23 ) | |
21 from .node import ( | 24 from .node import ( |
22 bin, | 25 bin, |
23 hex, | 26 hex, |
24 short, | 27 short, |
25 ) | 28 ) |
365 | 368 |
366 def printfiles(self, ui, m, uipathfn, fm, fmt, subrepos): | 369 def printfiles(self, ui, m, uipathfn, fm, fmt, subrepos): |
367 """handle the files command for this subrepo""" | 370 """handle the files command for this subrepo""" |
368 return 1 | 371 return 1 |
369 | 372 |
370 def archive(self, opener, prefix, match: matchmod.basematcher, decode=True): | 373 def archive(self, opener, prefix, match: MatcherT, decode=True): |
371 files = [f for f in self.files() if match(f)] | 374 files = [f for f in self.files() if match(f)] |
372 total = len(files) | 375 total = len(files) |
373 relpath = subrelpath(self) | 376 relpath = subrelpath(self) |
374 progress = self.ui.makeprogress( | 377 progress = self.ui.makeprogress( |
375 _(b'archiving (%s)') % relpath, unit=_(b'files'), total=total | 378 _(b'archiving (%s)') % relpath, unit=_(b'files'), total=total |
654 _(b'warning: error "%s" in subrepository "%s"\n') | 657 _(b'warning: error "%s" in subrepository "%s"\n') |
655 % (inst, subrelpath(self)) | 658 % (inst, subrelpath(self)) |
656 ) | 659 ) |
657 | 660 |
658 @annotatesubrepoerror | 661 @annotatesubrepoerror |
659 def archive(self, opener, prefix, match: matchmod.basematcher, decode=True): | 662 def archive(self, opener, prefix, match: MatcherT, decode=True): |
660 self._get(self._state + (b'hg',)) | 663 self._get(self._state + (b'hg',)) |
661 files = [f for f in self.files() if match(f)] | 664 files = [f for f in self.files() if match(f)] |
662 rev = self._state[1] | 665 rev = self._state[1] |
663 ctx = self._repo[rev] | 666 ctx = self._repo[rev] |
664 scmutil.prefetchfiles( | 667 scmutil.prefetchfiles( |
1911 if kind == stat.S_IFDIR: | 1914 if kind == stat.S_IFDIR: |
1912 self.wvfs.rmtree(f) | 1915 self.wvfs.rmtree(f) |
1913 else: | 1916 else: |
1914 self.wvfs.unlink(f) | 1917 self.wvfs.unlink(f) |
1915 | 1918 |
1916 def archive(self, opener, prefix, match: matchmod.basematcher, decode=True): | 1919 def archive(self, opener, prefix, match: MatcherT, decode=True): |
1917 total = 0 | 1920 total = 0 |
1918 source, revision = self._state | 1921 source, revision = self._state |
1919 if not revision: | 1922 if not revision: |
1920 return total | 1923 return total |
1921 self._fetch(source, revision) | 1924 self._fetch(source, revision) |