|
1 | 1 | """Base class for VCS Project plugins.""" |
2 | 2 | import logging |
3 | 3 | import pathlib |
4 | | -from typing import NamedTuple, Optional, Tuple |
| 4 | +from typing import NamedTuple, Optional, Protocol, Tuple |
5 | 5 | from urllib import parse as urlparse |
6 | 6 |
|
7 | 7 | from libvcs._internal.run import CmdLoggingAdapter, run |
@@ -32,18 +32,21 @@ def convert_pip_url(pip_url: str) -> VCSLocation: |
32 | 32 | return VCSLocation(url=url, rev=rev) |
33 | 33 |
|
34 | 34 |
|
35 | | -class BaseProject: |
| 35 | +class BaseProject(Protocol): |
36 | 36 | """Base class for repositories.""" |
37 | 37 |
|
38 | | - log_in_real_time = None |
| 38 | + log_in_real_time: bool |
39 | 39 | """Log command output to buffer""" |
40 | 40 |
|
41 | | - bin_name = "" |
| 41 | + bin_name: str |
42 | 42 | """VCS app name, e.g. 'git'""" |
43 | 43 |
|
44 | 44 | schemes: Tuple[str, ...] = () |
45 | 45 | """List of supported schemes to register in ``urlparse.uses_netloc``""" |
46 | 46 |
|
| 47 | + dir: StrPath |
| 48 | + """CWD of project""" |
| 49 | + |
47 | 50 | def __init__(self, *, url: str, dir: StrPath, progress_callback=None, **kwargs): |
48 | 51 | r""" |
49 | 52 | Parameters |
@@ -85,7 +88,6 @@ def __init__(self, *, url: str, dir: StrPath, progress_callback=None, **kwargs): |
85 | 88 | self.progress_callback = progress_callback |
86 | 89 |
|
87 | 90 | #: Directory to check out |
88 | | - self.dir: pathlib.Path |
89 | 91 | if isinstance(dir, pathlib.Path): |
90 | 92 | self.dir = dir |
91 | 93 | else: |
|
0 commit comments