Mercurial > public > mercurial-scm > hg
annotate mercurial/interfaces/dirstate.py @ 52452:9d79ffeed7c0
typing: use the `Status` protocol wherever `scmutil.status` was being used
This likely isn't everything, but these were all of the places the latter was
referenced in the generated *.pyi files, plus a few cases that were inferred as
`Any`, but found in a module that was being changed anyway.
We should figure out some sort of consistency as far as naming these Protocol
classes (stdlib ones tend to be CamelCase and imported directly). The current
convention of `from xxx.interfaces import foo as ifoo` is a little clever, but a
little annoying to type out. Also, this package is likely to grow beyond just
Protocol classes, where treating the types as interfaces is wrong (e.g. a
theoretical `NodeT` type to represent the binary form of a node, instead of
treating that and the incompatible hex form as both bytes). But that's a
project for another day.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Mon, 09 Dec 2024 00:21:38 -0500 |
parents | 2c8c46c3c401 |
children | 8820c991aee4 |
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 ( |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
24 match as matchmod, |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
25 transaction as txnmod, |
51919
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
26 ) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43008
diff
changeset
|
27 |
52452
9d79ffeed7c0
typing: use the `Status` protocol wherever `scmutil.status` was being used
Matt Harbison <matt_harbison@yahoo.com>
parents:
52431
diff
changeset
|
28 from . import status as istatus |
9d79ffeed7c0
typing: use the `Status` protocol wherever `scmutil.status` was being used
Matt Harbison <matt_harbison@yahoo.com>
parents:
52431
diff
changeset
|
29 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
30 # TODO: finish adding type hints |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
31 AddParentChangeCallbackT = Callable[ |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
32 ["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
|
33 ] |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
34 """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
|
35 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
36 # 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
|
37 # 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
|
38 # 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
|
39 DirstateItemT = Any # dirstatemap.DirstateItem |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
40 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
41 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
|
42 """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
|
43 ``(file, lineno, originalline)``. |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
44 """ |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
45 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
46 FlagFuncFallbackT = Callable[[], "FlagFuncReturnT"] |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
47 """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
|
48 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
49 FlagFuncReturnT = Callable[[bytes], bytes] |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
50 """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
|
51 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
52 # 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
|
53 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
|
54 """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
|
55 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
56 # 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
|
57 TransactionT = txnmod.transaction |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
58 """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
|
59 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
60 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
|
61 of the transaction module. |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
62 """ |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
63 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
64 # 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
|
65 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
|
66 """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
|
67 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
68 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
|
69 if the file exists. |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
70 """ |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
71 |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
72 |
51917
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
73 class idirstate(Protocol): |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
74 # 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
|
75 # def __init__( |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
76 # self, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
77 # opener, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
78 # ui, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
79 # root, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
80 # validate, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
81 # sparsematchfn, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
82 # nodeconstants, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
83 # use_dirstate_v2, |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
84 # 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
|
85 # ): |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
86 # """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
|
87 # |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
88 # 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
|
89 # 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
|
90 # the dirstate. |
382d9629cede
interfaces: convert the dirstate zope interface to a Protocol class
Matt Harbison <matt_harbison@yahoo.com>
parents:
51859
diff
changeset
|
91 # """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
92 |
42929
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
93 # 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
|
94 # 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
|
95 |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
96 # 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
|
97 @property |
3688a984134b
interfaces: change a couple of dirstate fields to `@property`
Matt Harbison <matt_harbison@yahoo.com>
parents:
51919
diff
changeset
|
98 def _ignore(self) -> matchmod.basematcher: |
3688a984134b
interfaces: change a couple of dirstate fields to `@property`
Matt Harbison <matt_harbison@yahoo.com>
parents:
51919
diff
changeset
|
99 """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
|
100 |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
101 @property |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
102 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
|
103 """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
|
104 |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
105 @property |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
106 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
|
107 """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
|
108 |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
109 @property |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
110 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
|
111 """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
|
112 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
113 def _ignorefiles(self) -> List[bytes]: |
42929
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
114 """Return a list of files containing patterns to ignore.""" |
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
115 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
116 def _ignorefileandline(self, f: bytes) -> IgnoreFileAndLineT: |
43787
be8552f25cab
cleanup: fix docstring formatting
Matt Harbison <matt_harbison@yahoo.com>
parents:
43077
diff
changeset
|
117 """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
|
118 |
51919
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
119 # 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
|
120 # (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
|
121 @property |
3688a984134b
interfaces: change a couple of dirstate fields to `@property`
Matt Harbison <matt_harbison@yahoo.com>
parents:
51919
diff
changeset
|
122 def _checklink(self) -> bool: |
3688a984134b
interfaces: change a couple of dirstate fields to `@property`
Matt Harbison <matt_harbison@yahoo.com>
parents:
51919
diff
changeset
|
123 """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
|
124 |
b455dfddfed0
interfaces: convert the zope `Attribute` attrs to regular fields
Matt Harbison <matt_harbison@yahoo.com>
parents:
51918
diff
changeset
|
125 # 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
|
126 # (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
|
127 @property |
3688a984134b
interfaces: change a couple of dirstate fields to `@property`
Matt Harbison <matt_harbison@yahoo.com>
parents:
51919
diff
changeset
|
128 def _checkexec(self) -> bool: |
3688a984134b
interfaces: change a couple of dirstate fields to `@property`
Matt Harbison <matt_harbison@yahoo.com>
parents:
51919
diff
changeset
|
129 """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
|
130 |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
131 @contextlib.contextmanager |
52431
2c8c46c3c401
interfaces: mark a few dirstate methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
51925
diff
changeset
|
132 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
133 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
|
134 """Context manager for handling dirstate parents. |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
135 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
136 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
|
137 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
|
138 released. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
139 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
140 |
50026
3550e4a88ccd
dirstate: add a context for tracking files change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50023
diff
changeset
|
141 @contextlib.contextmanager |
52431
2c8c46c3c401
interfaces: mark a few dirstate methods abstract
Matt Harbison <matt_harbison@yahoo.com>
parents:
51925
diff
changeset
|
142 @abc.abstractmethod |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
143 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
|
144 """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
|
145 |
3550e4a88ccd
dirstate: add a context for tracking files change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50023
diff
changeset
|
146 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
|
147 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
|
148 released. |
3550e4a88ccd
dirstate: add a context for tracking files change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50023
diff
changeset
|
149 """ |
3550e4a88ccd
dirstate: add a context for tracking files change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50023
diff
changeset
|
150 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
151 def hasdir(self, d: bytes) -> bool: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
152 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
153 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
154 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
|
155 """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
|
156 |
9ea66d166ec7
dirstate: update docstrings in idirstate from the current dirstate
Anton Shestakov <av6@dwimlabs.net>
parents:
49076
diff
changeset
|
157 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
|
158 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
|
159 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
|
160 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
|
161 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
162 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
163 def getcwd(self) -> bytes: |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
164 """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
|
165 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
166 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
|
167 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
|
168 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
|
169 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
170 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
171 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
|
172 pass |
b3ae17037b54
dirstate: swap pathto() and get_entry() in idirstate
Anton Shestakov <av6@dwimlabs.net>
parents:
49880
diff
changeset
|
173 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
174 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
|
175 """return a DirstateItem for the associated path""" |
9c8d67a3af5e
idirstate: add missing get_entry() method
Matt Harbison <matt_harbison@yahoo.com>
parents:
48875
diff
changeset
|
176 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
177 def __contains__(self, key: Any) -> bool: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
178 """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
|
179 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
180 def __iter__(self) -> Iterator[bytes]: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
181 """Iterate the dirstate's contained filenames as bytestrings.""" |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
182 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
183 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
|
184 """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
|
185 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
186 As usual, filename is a bytestring. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
187 """ |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
188 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
189 iteritems = items |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
190 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
191 def parents(self) -> List[bytes]: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
192 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
193 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
194 def p1(self) -> bytes: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
195 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
196 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
197 def p2(self) -> bytes: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
198 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
199 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
200 def branch(self) -> bytes: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
201 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
202 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
203 # TODO: typehint the return. It's a copies Map of some sort. |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
204 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
|
205 """Set dirstate parents to p1 and p2. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
206 |
49880
9ea66d166ec7
dirstate: update docstrings in idirstate from the current dirstate
Anton Shestakov <av6@dwimlabs.net>
parents:
49076
diff
changeset
|
207 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
|
208 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
|
209 returned by the call. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
210 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
211 See localrepo.setparents() |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
212 """ |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
213 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
214 def setbranch( |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
215 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
|
216 ) -> None: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
217 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
218 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
219 def invalidate(self) -> None: |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
220 """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
|
221 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
222 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
|
223 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
|
224 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
|
225 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
226 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
|
227 """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
|
228 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
229 def copied(self, file: bytes) -> Optional[bytes]: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
230 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
231 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
232 def copies(self) -> Dict[bytes, bytes]: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
233 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
234 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
235 def normalize( |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
236 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
|
237 ) -> bytes: |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
238 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
239 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
|
240 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
241 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
|
242 disk, to avoid extra filesystem access. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
243 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
244 If ignoremissing is True, missing path are returned |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
245 unchanged. Otherwise, we try harder to normalize possibly |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
246 existing path components. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
247 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
248 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
|
249 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
250 - version of name already stored in the dirstate |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
251 - version of name stored on disk |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
252 - version provided via command arguments |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
253 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
254 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
255 def clear(self) -> None: |
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 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
258 def rebuild( |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
259 self, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
260 parent: bytes, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
261 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
|
262 changedfiles: Optional[Iterable[bytes]] = None, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
263 ) -> None: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
264 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
265 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
266 def write(self, tr: Optional[TransactionT]) -> None: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
267 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
268 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
269 def addparentchangecallback( |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
270 self, category: bytes, callback: AddParentChangeCallbackT |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
271 ) -> None: |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
272 """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
|
273 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
274 Callback will be called with the following arguments: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
275 dirstate, (oldp1, oldp2), (newp1, newp2) |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
276 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
277 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
|
278 with a newer callback. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
279 """ |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
280 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
281 def walk( |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
282 self, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
283 match: matchmod.basematcher, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
284 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
|
285 unknown: bool, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
286 ignored: bool, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
287 full: bool = True, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
288 ) -> WalkReturnT: |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
289 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
290 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
|
291 matched by match. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
292 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
293 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
|
294 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
295 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
|
296 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
|
297 |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
298 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
299 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
300 def status( |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
301 self, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
302 match: matchmod.basematcher, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
303 subrepos: bool, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
304 ignored: bool, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
305 clean: bool, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
306 unknown: bool, |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
307 ) -> StatusReturnT: |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
308 """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
|
309 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
|
310 scmutil.status and: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
311 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
312 unsure: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
313 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
|
314 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
|
315 but mtime differs) |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
316 status.modified: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
317 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
|
318 was written (different size or mode) |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
319 status.clean: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
320 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
|
321 dirstate was written |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
322 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
323 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
324 # 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
|
325 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
326 def matches(self, match: matchmod.basematcher) -> Iterable[bytes]: |
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 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
|
329 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
330 |
51925
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
331 # 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
|
332 |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
333 def verify( |
93d872a06132
typing: add type annotations to the dirstate classes
Matt Harbison <matt_harbison@yahoo.com>
parents:
51924
diff
changeset
|
334 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
|
335 ) -> Iterator[bytes]: |
49882
8c7895db8955
dirstate: add missing methods and kwargs to idirstate interface
Anton Shestakov <av6@dwimlabs.net>
parents:
49881
diff
changeset
|
336 """ |
8c7895db8955
dirstate: add missing methods and kwargs to idirstate interface
Anton Shestakov <av6@dwimlabs.net>
parents:
49881
diff
changeset
|
337 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
|
338 """ |