Mercurial > public > mercurial-scm > hg
annotate mercurial/interfaces/misc.py @ 52894:bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
That is one external import for the repository interface module. One more to go.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sat, 08 Feb 2025 18:15:18 +0100 |
parents | 483b0bb23085 |
children | ba343f763595 |
rev | line source |
---|---|
52893
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
1 # misc.py - Various Interface that did not deserve a dedicated module (yet) |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
2 # |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
3 # Copyright 2025 Octobus, contact@octobus.net |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
4 from __future__ import annotations |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
5 |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
6 import abc |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
7 |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
8 from typing import ( |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
9 Callable, |
52894
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
10 Iterator, |
52893
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
11 List, |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
12 Protocol, |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
13 ) |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
14 |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
15 |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
16 class IHooks(Protocol): |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
17 """A collection of hook functions that can be used to extend a |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
18 function's behavior. Hooks are called in lexicographic order, |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
19 based on the names of their sources.""" |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
20 |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
21 @abc.abstractmethod |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
22 def add(self, source: bytes, hook: Callable): |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
23 ... |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
24 |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
25 @abc.abstractmethod |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
26 def __call__(self, *args) -> List: |
483b0bb23085
typing: use a protocol to annotate `hooks` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
27 ... |
52894
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
28 |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
29 |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
30 class IDirs(Protocol): |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
31 '''a multiset of directory names from a set of file paths''' |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
32 |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
33 @abc.abstractmethod |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
34 def addpath(self, path: bytes) -> None: |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
35 ... |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
36 |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
37 @abc.abstractmethod |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
38 def delpath(self, path: bytes) -> None: |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
39 ... |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
40 |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
41 @abc.abstractmethod |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
42 def __iter__(self) -> Iterator[bytes]: |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
43 ... |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
44 |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
45 @abc.abstractmethod |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
46 def __contains__(self, d: bytes) -> bool: |
bde94bd8e8a2
typing: use a protocol to annotate `pathutil.dirs` in repository.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52893
diff
changeset
|
47 ... |