Mercurial > public > mercurial-scm > hg
annotate mercurial/interfaces/dirstate.py @ 52748:fecda9f44e57
interfaces: minor documentation tweaks to the `types` module
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 06 Feb 2025 20:03:57 -0500 |
parents | 5c48fd4c0e68 |
children | a7dcb7c1ff5a |
rev | line source |
---|---|
51859
f4733654f144
typing: add `from __future__ import annotations` to most files
Matt Harbison <matt_harbison@yahoo.com>
parents:
51270
diff
changeset
|
1 from __future__ import annotations |
f4733654f144
typing: add `from __future__ import annotations` to most files
Matt Harbison <matt_harbison@yahoo.com>
parents:
51270
diff
changeset
|
2 |
52431
2c8c46c3c401
interfaces: mark a few dirstate methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
51925
diff
changeset
|
3 import abc |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
4 import contextlib |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
5 import os |
51919
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
6 import typing |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
7 |
51917
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
8 from typing import ( |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
9 Any, |
51919
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
10 Callable, |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
11 Dict, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
12 Iterable, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
13 Iterator, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
14 List, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
15 Optional, |
51917
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
16 Protocol, |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
17 Tuple, |
51917
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
18 ) |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
19 |
51919
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
20 if typing.TYPE_CHECKING: |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
21 # Almost all mercurial modules are only imported in the type checking phase |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
22 # to avoid circular imports |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
23 from .. import ( |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
24 transaction as txnmod, |
51919
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
25 ) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43008
diff
changeset
|
26 |
52741
5c48fd4c0e68
typing: introduce a `types` module and a MatcherT alias
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52508
diff
changeset
|
27 from . import ( |
5c48fd4c0e68
typing: introduce a `types` module and a MatcherT alias
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52508
diff
changeset
|
28 matcher, |
5c48fd4c0e68
typing: introduce a `types` module and a MatcherT alias
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52508
diff
changeset
|
29 status as istatus, |
5c48fd4c0e68
typing: introduce a `types` module and a MatcherT alias
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52508
diff
changeset
|
30 ) |
52452
9d79ffeed7c0
typing: use the `Status` protocol wherever `scmutil.status` was being used
Matt Harbison <matt_harbison@yahoo.com>
parents:
52431
diff
changeset
|
31 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
32 # TODO: finish adding type hints |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
33 AddParentChangeCallbackT = Callable[ |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
34 ["idirstate", Tuple[Any, Any], Tuple[Any, Any]], Any |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
35 ] |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
36 """The callback type for dirstate.addparentchangecallback().""" |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
37 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
38 # TODO: add a Protocol for dirstatemap.DirStateItem? (It is |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
39 # conditionalized with python or rust implementations. Also, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
40 # git.dirstate needs to yield non-None from ``items()``.) |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
41 DirstateItemT = Any # dirstatemap.DirstateItem |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
42 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
43 IgnoreFileAndLineT = Tuple[Optional[bytes], int, bytes] |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
44 """The return type of dirstate._ignorefileandline(), which holds |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
45 ``(file, lineno, originalline)``. |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
46 """ |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
47 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
48 FlagFuncFallbackT = Callable[[], "FlagFuncReturnT"] |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
49 """The type for the dirstate.flagfunc() fallback function.""" |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
50 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
51 FlagFuncReturnT = Callable[[bytes], bytes] |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
52 """The return type of dirstate.flagfunc().""" |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
53 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
54 # TODO: verify and complete this- it came from a pytype *.pyi file |
52452
9d79ffeed7c0
typing: use the `Status` protocol wherever `scmutil.status` was being used
Matt Harbison <matt_harbison@yahoo.com>
parents:
52431
diff
changeset
|
55 StatusReturnT = Tuple[Any, istatus.Status, Any] |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
56 """The return type of dirstate.status().""" |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
57 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
58 # TODO: probably doesn't belong here. |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
59 TransactionT = txnmod.transaction |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
60 """The type for a transaction used with dirstate. |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
61 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
62 This is meant to help callers avoid having to remember to delay the import |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
63 of the transaction module. |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
64 """ |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
65 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
66 # TODO: The value can also be mercurial.osutil.stat |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
67 WalkReturnT = Dict[bytes, Optional[os.stat_result]] |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
68 """The return type of dirstate.walk(). |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
69 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
70 The matched files are keyed in the dictionary, mapped to a stat-like object |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
71 if the file exists. |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
72 """ |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
73 |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
74 |
51917
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
75 class idirstate(Protocol): |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
76 # TODO: convert these constructor args to fields? |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
77 # def __init__( |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
78 # self, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
79 # opener, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
80 # ui, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
81 # root, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
82 # validate, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
83 # sparsematchfn, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
84 # nodeconstants, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
85 # use_dirstate_v2, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
86 # use_tracked_hint=False, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
87 # ): |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
88 # """Create a new dirstate object. |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
89 # |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
90 # opener is an open()-like callable that can be used to open the |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
91 # dirstate file; root is the root of the directory tracked by |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
92 # the dirstate. |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
93 # """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
94 |
42929
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
95 # TODO: all these private methods and attributes should be made |
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
96 # public or removed from the interface. |
51919
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
97 |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
98 # TODO: decorate with `@rootcache(b'.hgignore')` like dirstate class? |
51924
3688a984134b
interfaces: change a couple of dirstate fields to `@property`
Matt Harbison <matt_harbison@yahoo.com>
parents:
51919
diff
changeset
|
99 @property |
52741
5c48fd4c0e68
typing: introduce a `types` module and a MatcherT alias
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52508
diff
changeset
|
100 def _ignore(self) -> matcher.IMatcher: |
51924
3688a984134b
interfaces: change a couple of dirstate fields to `@property`
Matt Harbison <matt_harbison@yahoo.com>
parents:
51919
diff
changeset
|
101 """Matcher for ignored files.""" |
51919
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
102 |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
103 @property |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
104 @abc.abstractmethod |
51919
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
105 def is_changing_any(self) -> bool: |
50023
e1cff85484e2
dirstate: introduce a `is_changing_any` property
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50022
diff
changeset
|
106 """True if any changes in progress.""" |
51919
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
107 |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
108 @property |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
109 @abc.abstractmethod |
51919
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
110 def is_changing_parents(self) -> bool: |
50022
e333cc169c45
dirstate: rename `pendingparentchange` to `is_changing_parents`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49961
diff
changeset
|
111 """True if parents changes in progress.""" |
51919
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
112 |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
113 @property |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
114 @abc.abstractmethod |
51919
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
115 def is_changing_files(self) -> bool: |
50026
3550e4a88ccd
dirstate: add a context for tracking files change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50023
diff
changeset
|
116 """True if file tracking changes in progress.""" |
42929
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
117 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
118 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
119 def _ignorefileandline(self, f: bytes) -> IgnoreFileAndLineT: |
43787
be8552f25cab
cleanup: fix docstring formatting
Matt Harbison <matt_harbison@yahoo.com>
parents:
43077
diff
changeset
|
120 """Given a file `f`, return the ignore file and line that ignores it.""" |
42929
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
121 |
51919
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
122 # TODO: decorate with `@util.propertycache` like dirstate class? |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
123 # (can't because circular import) |
51924
3688a984134b
interfaces: change a couple of dirstate fields to `@property`
Matt Harbison <matt_harbison@yahoo.com>
parents:
51919
diff
changeset
|
124 @property |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
125 @abc.abstractmethod |
51924
3688a984134b
interfaces: change a couple of dirstate fields to `@property`
Matt Harbison <matt_harbison@yahoo.com>
parents:
51919
diff
changeset
|
126 def _checklink(self) -> bool: |
3688a984134b
interfaces: change a couple of dirstate fields to `@property`
Matt Harbison <matt_harbison@yahoo.com>
parents:
51919
diff
changeset
|
127 """Callable for checking symlinks.""" # TODO: this comment looks stale |
51919
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
128 |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
129 # TODO: decorate with `@util.propertycache` like dirstate class? |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
130 # (can't because circular import) |
51924
3688a984134b
interfaces: change a couple of dirstate fields to `@property`
Matt Harbison <matt_harbison@yahoo.com>
parents:
51919
diff
changeset
|
131 @property |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
132 @abc.abstractmethod |
51924
3688a984134b
interfaces: change a couple of dirstate fields to `@property`
Matt Harbison <matt_harbison@yahoo.com>
parents:
51919
diff
changeset
|
133 def _checkexec(self) -> bool: |
3688a984134b
interfaces: change a couple of dirstate fields to `@property`
Matt Harbison <matt_harbison@yahoo.com>
parents:
51919
diff
changeset
|
134 """Callable for checking exec bits.""" # TODO: this comment looks stale |
42929
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
135 |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
136 @contextlib.contextmanager |
52431
2c8c46c3c401
interfaces: mark a few dirstate methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
51925
diff
changeset
|
137 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
138 def changing_parents(self, repo) -> Iterator: # TODO: typehint this |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
139 """Context manager for handling dirstate parents. |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
140 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
141 If an exception occurs in the scope of the context manager, |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
142 the incoherent dirstate won't be written when wlock is |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
143 released. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
144 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
145 |
50026
3550e4a88ccd
dirstate: add a context for tracking files change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50023
diff
changeset
|
146 @contextlib.contextmanager |
52431
2c8c46c3c401
interfaces: mark a few dirstate methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
51925
diff
changeset
|
147 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
148 def changing_files(self, repo) -> Iterator: # TODO: typehint this |
50026
3550e4a88ccd
dirstate: add a context for tracking files change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50023
diff
changeset
|
149 """Context manager for handling dirstate files. |
3550e4a88ccd
dirstate: add a context for tracking files change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50023
diff
changeset
|
150 |
3550e4a88ccd
dirstate: add a context for tracking files change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50023
diff
changeset
|
151 If an exception occurs in the scope of the context manager, |
3550e4a88ccd
dirstate: add a context for tracking files change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50023
diff
changeset
|
152 the incoherent dirstate won't be written when wlock is |
3550e4a88ccd
dirstate: add a context for tracking files change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50023
diff
changeset
|
153 released. |
3550e4a88ccd
dirstate: add a context for tracking files change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50023
diff
changeset
|
154 """ |
3550e4a88ccd
dirstate: add a context for tracking files change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50023
diff
changeset
|
155 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
156 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
157 def hasdir(self, d: bytes) -> bool: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
158 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
159 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
160 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
161 def flagfunc(self, buildfallback: FlagFuncFallbackT) -> FlagFuncReturnT: |
49880
9ea66d166ec7
dirstate: update docstrings in idirstate from the current dirstate
Anton Shestakov <av6@dwimlabs.net>
parents:
49076
diff
changeset
|
162 """build a callable that returns flags associated with a filename |
9ea66d166ec7
dirstate: update docstrings in idirstate from the current dirstate
Anton Shestakov <av6@dwimlabs.net>
parents:
49076
diff
changeset
|
163 |
9ea66d166ec7
dirstate: update docstrings in idirstate from the current dirstate
Anton Shestakov <av6@dwimlabs.net>
parents:
49076
diff
changeset
|
164 The information is extracted from three possible layers: |
9ea66d166ec7
dirstate: update docstrings in idirstate from the current dirstate
Anton Shestakov <av6@dwimlabs.net>
parents:
49076
diff
changeset
|
165 1. the file system if it supports the information |
9ea66d166ec7
dirstate: update docstrings in idirstate from the current dirstate
Anton Shestakov <av6@dwimlabs.net>
parents:
49076
diff
changeset
|
166 2. the "fallback" information stored in the dirstate if any |
9ea66d166ec7
dirstate: update docstrings in idirstate from the current dirstate
Anton Shestakov <av6@dwimlabs.net>
parents:
49076
diff
changeset
|
167 3. a more expensive mechanism inferring the flags from the parents. |
9ea66d166ec7
dirstate: update docstrings in idirstate from the current dirstate
Anton Shestakov <av6@dwimlabs.net>
parents:
49076
diff
changeset
|
168 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
169 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
170 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
171 def getcwd(self) -> bytes: |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
172 """Return the path from which a canonical path is calculated. |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
173 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
174 This path should be used to resolve file patterns or to convert |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
175 canonical paths back to file paths for display. It shouldn't be |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
176 used to get real file paths. Use vfs functions instead. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
177 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
178 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
179 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
180 def pathto(self, f: bytes, cwd: Optional[bytes] = None) -> bytes: |
49881
b3ae17037b54
dirstate: swap pathto() and get_entry() in idirstate
Anton Shestakov <av6@dwimlabs.net>
parents:
49880
diff
changeset
|
181 pass |
b3ae17037b54
dirstate: swap pathto() and get_entry() in idirstate
Anton Shestakov <av6@dwimlabs.net>
parents:
49880
diff
changeset
|
182 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
183 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
184 def get_entry(self, path: bytes) -> DirstateItemT: |
49076
9c8d67a3af5e
idirstate: add missing get_entry() method
Matt Harbison <matt_harbison@yahoo.com>
parents:
48875
diff
changeset
|
185 """return a DirstateItem for the associated path""" |
9c8d67a3af5e
idirstate: add missing get_entry() method
Matt Harbison <matt_harbison@yahoo.com>
parents:
48875
diff
changeset
|
186 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
187 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
188 def __contains__(self, key: Any) -> bool: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
189 """Check if bytestring `key` is known to the dirstate.""" |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
190 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
191 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
192 def __iter__(self) -> Iterator[bytes]: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
193 """Iterate the dirstate's contained filenames as bytestrings.""" |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
194 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
195 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
196 def items(self) -> Iterator[Tuple[bytes, DirstateItemT]]: |
47539
84391ddf4c78
dirstate-item: rename the class to DirstateItem
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47280
diff
changeset
|
197 """Iterate the dirstate's entries as (filename, DirstateItem. |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
198 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
199 As usual, filename is a bytestring. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
200 """ |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
201 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
202 iteritems = items |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
203 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
204 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
205 def parents(self) -> List[bytes]: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
206 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
207 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
208 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
209 def p1(self) -> bytes: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
210 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
211 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
212 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
213 def p2(self) -> bytes: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
214 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
215 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
216 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
217 def branch(self) -> bytes: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
218 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
219 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
220 # TODO: typehint the return. It's a copies Map of some sort. |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
221 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
222 def setparents(self, p1: bytes, p2: Optional[bytes] = None): |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
223 """Set dirstate parents to p1 and p2. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
224 |
49880
9ea66d166ec7
dirstate: update docstrings in idirstate from the current dirstate
Anton Shestakov <av6@dwimlabs.net>
parents:
49076
diff
changeset
|
225 When moving from two parents to one, "merged" entries a |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
226 adjusted to normal and previous copy records discarded and |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
227 returned by the call. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
228 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
229 See localrepo.setparents() |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
230 """ |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
231 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
232 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
233 def setbranch( |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
234 self, branch: bytes, transaction: Optional[TransactionT] |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
235 ) -> None: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
236 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
237 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
238 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
239 def invalidate(self) -> None: |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
240 """Causes the next access to reread the dirstate. |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
241 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
242 This is different from localrepo.invalidatedirstate() because it always |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
243 rereads the dirstate. Use localrepo.invalidatedirstate() if you want to |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
244 check whether the dirstate has changed before rereading it.""" |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
245 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
246 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
247 def copy(self, source: Optional[bytes], dest: bytes) -> None: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
248 """Mark dest as a copy of source. Unmark dest if source is None.""" |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
249 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
250 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
251 def copied(self, file: bytes) -> Optional[bytes]: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
252 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
253 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
254 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
255 def copies(self) -> Dict[bytes, bytes]: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
256 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
257 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
258 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
259 def normalize( |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
260 self, path: bytes, isknown: bool = False, ignoremissing: bool = False |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
261 ) -> bytes: |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
262 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
263 normalize the case of a pathname when on a casefolding filesystem |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
264 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
265 isknown specifies whether the filename came from walking the |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
266 disk, to avoid extra filesystem access. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
267 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
268 If ignoremissing is True, missing path are returned |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
269 unchanged. Otherwise, we try harder to normalize possibly |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
270 existing path components. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
271 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
272 The normalized case is determined based on the following precedence: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
273 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
274 - version of name already stored in the dirstate |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
275 - version of name stored on disk |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
276 - version provided via command arguments |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
277 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
278 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
279 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
280 def clear(self) -> None: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
281 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
282 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
283 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
284 def rebuild( |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
285 self, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
286 parent: bytes, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
287 allfiles: Iterable[bytes], # TODO: more than iterable? (uses len()) |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
288 changedfiles: Optional[Iterable[bytes]] = None, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
289 ) -> None: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
290 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
291 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
292 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
293 def write(self, tr: Optional[TransactionT]) -> None: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
294 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
295 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
296 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
297 def addparentchangecallback( |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
298 self, category: bytes, callback: AddParentChangeCallbackT |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
299 ) -> None: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
300 """add a callback to be called when the wd parents are changed |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
301 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
302 Callback will be called with the following arguments: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
303 dirstate, (oldp1, oldp2), (newp1, newp2) |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
304 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
305 Category is a unique identifier to allow overwriting an old callback |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
306 with a newer callback. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
307 """ |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
308 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
309 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
310 def walk( |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
311 self, |
52741
5c48fd4c0e68
typing: introduce a `types` module and a MatcherT alias
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52508
diff
changeset
|
312 match: matcher.IMatcher, |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
313 subrepos: Any, # TODO: figure out what this is |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
314 unknown: bool, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
315 ignored: bool, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
316 full: bool = True, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
317 ) -> WalkReturnT: |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
318 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
319 Walk recursively through the directory tree, finding all files |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
320 matched by match. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
321 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
322 If full is False, maybe skip some known-clean files. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
323 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
324 Return a dict mapping filename to stat-like object (either |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
325 mercurial.osutil.stat instance or return value of os.stat()). |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
326 |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
327 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
328 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
329 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
330 def status( |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
331 self, |
52741
5c48fd4c0e68
typing: introduce a `types` module and a MatcherT alias
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52508
diff
changeset
|
332 match: matcher.IMatcher, |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
333 subrepos: bool, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
334 ignored: bool, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
335 clean: bool, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
336 unknown: bool, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
337 ) -> StatusReturnT: |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
338 """Determine the status of the working copy relative to the |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
339 dirstate and return a pair of (unsure, status), where status is of type |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
340 scmutil.status and: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
341 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
342 unsure: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
343 files that might have been modified since the dirstate was |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
344 written, but need to be read to be sure (size is the same |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
345 but mtime differs) |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
346 status.modified: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
347 files that have definitely been modified since the dirstate |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
348 was written (different size or mode) |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
349 status.clean: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
350 files that have definitely not been modified since the |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
351 dirstate was written |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
352 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
353 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
354 # TODO: could return a list, except git.dirstate is a generator |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
355 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
356 @abc.abstractmethod |
52741
5c48fd4c0e68
typing: introduce a `types` module and a MatcherT alias
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52508
diff
changeset
|
357 def matches(self, match: matcher.IMatcher) -> Iterable[bytes]: |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
358 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
359 return files in the dirstate (in whatever state) filtered by match |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
360 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
361 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
362 # TODO: finish adding typehints here, and to subclasses |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
363 |
52508
2ac368d0a5b6
interfaces: make `dirstate` Protocol class methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
52507
diff
changeset
|
364 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
365 def verify( |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
366 self, m1, m2, p1: bytes, narrow_matcher: Optional[Any] = None |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
367 ) -> Iterator[bytes]: |
49882
8c7895db8955
dirstate: add missing methods and kwargs to idirstate interface
Anton Shestakov <av6@dwimlabs.net>
parents:
49881
diff
changeset
|
368 """ |
8c7895db8955
dirstate: add missing methods and kwargs to idirstate interface
Anton Shestakov <av6@dwimlabs.net>
parents:
49881
diff
changeset
|
369 check the dirstate contents against the parent manifest and yield errors |
8c7895db8955
dirstate: add missing methods and kwargs to idirstate interface
Anton Shestakov <av6@dwimlabs.net>
parents:
49881
diff
changeset
|
370 """ |