Skip to content

Commit 081f302

Browse files
committed
Temporarily restore python 3.6.0 support
1 parent 1c641b1 commit 081f302

File tree

5 files changed

+83
-59
lines changed

5 files changed

+83
-59
lines changed

.pre-commit-config.yaml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,6 @@ repos:
4343
rev: v1.6.0
4444
hooks:
4545
- id: setup-cfg-fmt
46-
- repo: https://github.com/pre-commit/mirrors-mypy
47-
rev: v0.761
48-
hooks:
49-
- id: mypy
50-
exclude: ^testing/resources/
5146
- repo: meta
5247
hooks:
5348
- id: check-hooks-apply

pre_commit/commands/autoupdate.py

Lines changed: 32 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -31,32 +31,39 @@ class RevInfo(NamedTuple):
3131
rev: str
3232
frozen: Optional[str]
3333

34-
@classmethod
35-
def from_config(cls, config: Dict[str, Any]) -> 'RevInfo':
36-
return cls(config['repo'], config['rev'], None)
3734

38-
def update(self, tags_only: bool, freeze: bool) -> 'RevInfo':
39-
if tags_only:
40-
tag_cmd = ('git', 'describe', 'FETCH_HEAD', '--tags', '--abbrev=0')
41-
else:
42-
tag_cmd = ('git', 'describe', 'FETCH_HEAD', '--tags', '--exact')
43-
44-
with tmpdir() as tmp:
45-
git.init_repo(tmp, self.repo)
46-
cmd_output_b('git', 'fetch', 'origin', 'HEAD', '--tags', cwd=tmp)
47-
48-
try:
49-
rev = cmd_output(*tag_cmd, cwd=tmp)[1].strip()
50-
except CalledProcessError:
51-
cmd = ('git', 'rev-parse', 'FETCH_HEAD')
52-
rev = cmd_output(*cmd, cwd=tmp)[1].strip()
53-
54-
frozen = None
55-
if freeze:
56-
exact = cmd_output('git', 'rev-parse', rev, cwd=tmp)[1].strip()
57-
if exact != rev:
58-
rev, frozen = exact, rev
59-
return self._replace(rev=rev, frozen=frozen)
35+
@classmethod
36+
def RevInfo_from_config(cls, config: Dict[str, Any]) -> 'RevInfo':
37+
return cls(config['repo'], config['rev'], None)
38+
39+
40+
def RevInfo_update(self, tags_only: bool, freeze: bool) -> 'RevInfo':
41+
if tags_only:
42+
tag_cmd = ('git', 'describe', 'FETCH_HEAD', '--tags', '--abbrev=0')
43+
else:
44+
tag_cmd = ('git', 'describe', 'FETCH_HEAD', '--tags', '--exact')
45+
46+
with tmpdir() as tmp:
47+
git.init_repo(tmp, self.repo)
48+
cmd_output_b('git', 'fetch', 'origin', 'HEAD', '--tags', cwd=tmp)
49+
50+
try:
51+
rev = cmd_output(*tag_cmd, cwd=tmp)[1].strip()
52+
except CalledProcessError:
53+
cmd = ('git', 'rev-parse', 'FETCH_HEAD')
54+
rev = cmd_output(*cmd, cwd=tmp)[1].strip()
55+
56+
frozen = None
57+
if freeze:
58+
exact = cmd_output('git', 'rev-parse', rev, cwd=tmp)[1].strip()
59+
if exact != rev:
60+
rev, frozen = exact, rev
61+
return self._replace(rev=rev, frozen=frozen)
62+
63+
64+
# python 3.6.0 does not support methods on `typing.NamedTuple`
65+
RevInfo.from_config = RevInfo_from_config
66+
RevInfo.update = RevInfo_update
6067

6168

6269
class RepositoryCannotBeUpdatedError(RuntimeError):

pre_commit/envcontext.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ class _Unset(enum.Enum):
1919

2020
class Var(NamedTuple):
2121
name: str
22-
default: str = ''
22+
default: str
23+
24+
25+
# python3.6.0: `typing.NamedTuple` did not support defaults
26+
Var.__new__.__defaults__ = ('',)
2327

2428

2529
SubstitutionT = Tuple[Union[str, Var], ...]

pre_commit/hook.py

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -35,29 +35,38 @@ class Hook(NamedTuple):
3535
stages: Sequence[str]
3636
verbose: bool
3737

38-
@property
39-
def cmd(self) -> Tuple[str, ...]:
40-
return (*shlex.split(self.entry), *self.args)
41-
42-
@property
43-
def install_key(self) -> Tuple[Prefix, str, str, Tuple[str, ...]]:
44-
return (
45-
self.prefix,
46-
self.language,
47-
self.language_version,
48-
tuple(self.additional_dependencies),
38+
39+
@property
40+
def Hook_cmd(self: Hook) -> Tuple[str, ...]:
41+
return (*shlex.split(self.entry), *self.args)
42+
43+
44+
@property
45+
def Hook_install_key(self) -> Tuple[Prefix, str, str, Tuple[str, ...]]:
46+
return (
47+
self.prefix,
48+
self.language,
49+
self.language_version,
50+
tuple(self.additional_dependencies),
51+
)
52+
53+
54+
@classmethod
55+
def Hook_create(cls, src: str, prefix: Prefix, dct: Dict[str, Any]) -> 'Hook':
56+
# TODO: have cfgv do this (?)
57+
extra_keys = set(dct) - _KEYS
58+
if extra_keys:
59+
logger.warning(
60+
f'Unexpected key(s) present on {src} => {dct["id"]}: '
61+
f'{", ".join(sorted(extra_keys))}',
4962
)
63+
return cls(src=src, prefix=prefix, **{k: dct[k] for k in _KEYS})
64+
5065

51-
@classmethod
52-
def create(cls, src: str, prefix: Prefix, dct: Dict[str, Any]) -> 'Hook':
53-
# TODO: have cfgv do this (?)
54-
extra_keys = set(dct) - _KEYS
55-
if extra_keys:
56-
logger.warning(
57-
f'Unexpected key(s) present on {src} => {dct["id"]}: '
58-
f'{", ".join(sorted(extra_keys))}',
59-
)
60-
return cls(src=src, prefix=prefix, **{k: dct[k] for k in _KEYS})
66+
# python 3.6.0 does not support methods on `typing.NamedTuple`
67+
Hook.cmd = Hook_cmd
68+
Hook.install_key = Hook_install_key
69+
Hook.create = Hook_create
6170

6271

6372
_KEYS = frozenset(set(Hook._fields) - {'src', 'prefix'})

pre_commit/prefix.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,21 @@
66
class Prefix(NamedTuple):
77
prefix_dir: str
88

9-
def path(self, *parts: str) -> str:
10-
return os.path.normpath(os.path.join(self.prefix_dir, *parts))
119

12-
def exists(self, *parts: str) -> bool:
13-
return os.path.exists(self.path(*parts))
10+
def Prefix_path(self, *parts: str) -> str:
11+
return os.path.normpath(os.path.join(self.prefix_dir, *parts))
1412

15-
def star(self, end: str) -> Tuple[str, ...]:
16-
paths = os.listdir(self.prefix_dir)
17-
return tuple(path for path in paths if path.endswith(end))
13+
14+
def Prefix_exists(self, *parts: str) -> bool:
15+
return os.path.exists(self.path(*parts))
16+
17+
18+
def Prefix_star(self, end: str) -> Tuple[str, ...]:
19+
paths = os.listdir(self.prefix_dir)
20+
return tuple(path for path in paths if path.endswith(end))
21+
22+
23+
# python 3.6.0 does not support methods on `typing.NamedTuple`
24+
Prefix.path = Prefix_path
25+
Prefix.exists = Prefix_exists
26+
Prefix.star = Prefix_star

0 commit comments

Comments
 (0)