Skip to content

Commit a1d93d5

Browse files
committed
chore: small linting
1 parent fa55851 commit a1d93d5

File tree

6 files changed

+58
-47
lines changed

6 files changed

+58
-47
lines changed

pyproject.toml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,18 @@
22
requires = ['docutils', 'GitPython', 'packaging', 'semver', 'setuptools', 'wheel']
33

44
[tool.pydocstyle]
5-
ignore = ['D102', 'D103', 'D105', 'D107', 'D203', 'D213', 'D406', 'D407', 'D412', 'D413']
5+
ignore = [
6+
'D102', 'D103', 'D105', 'D107',
7+
'D203', 'D213',
8+
'D406', 'D407', 'D412', 'D413'
9+
]
610

711
[tool.pylint.MASTER]
812
load-plugins = [
13+
'pylint.extensions.broad_try_clause',
914
'pylint.extensions.mccabe',
10-
'pylint.extensions.redefined_variable_type',
11-
'pylint.extensions.broad_try_clause'
15+
'pylint.extensions.no_self_use',
16+
'pylint.extensions.redefined_variable_type'
1217
]
1318

1419
[tool.pylint.'MESSAGES CONTROL']

test/test_git.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515

1616
class Tests(GitRepoTests):
17-
1817
"""Test suite for automated tests of generated git repositories.
1918
2019
Each case is executed in a fresh empty repository.

test/test_query.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222

2323
_LOG = logging.getLogger(__name__)
2424

25+
IGNORED_FOLDER_NAMES = ['opencv']
26+
2527

2628
@contextlib.contextmanager
2729
def temporarily_set_logger_level(logger_name: str, level: int):
@@ -59,13 +61,16 @@ def test_example_count_checking(self):
5961

6062
def _query_test_case(self, paths, query_function):
6163
for path in paths:
64+
if any(_ in path.parts for _ in IGNORED_FOLDER_NAMES):
65+
continue
6266
with self.subTest(path=path, query_function=query_function):
6367
_LOG.debug('testing %s() on %s', query_function.__name__, path)
6468
try:
6569
version = query_function(path)
66-
_LOG.debug('%s: %s', path, version)
6770
except ValueError:
6871
_LOG.info('failed to get version from %s', path, exc_info=True)
72+
else:
73+
_LOG.debug('%s: %s', path, version)
6974

7075
def test_query_git_repo(self):
7176
self._check_examples_count('git repo', GIT_REPO_EXAMPLES)
@@ -76,7 +81,7 @@ def test_predict_caller_bad(self):
7681
with tempfile.NamedTemporaryFile(suffix='.py', dir=project_path_str,
7782
delete=False) as project_file:
7883
project_file_path = pathlib.Path(project_file.name)
79-
with project_file_path.open('a') as project_file:
84+
with project_file_path.open('a', encoding='utf-8') as project_file:
8085
project_file.write('from version_query.query import predict_caller\n\n\n'
8186
'def caller():\n predict_caller()\n\n\ncaller()\n')
8287
sys.path.insert(0, project_path_str)
@@ -118,12 +123,12 @@ def test_query_pkg_info_bad(self):
118123
with self.assertRaises(ValueError):
119124
query_pkg_info(bad_file_path)
120125

121-
with bad_file_path.open('a') as bad_file:
126+
with bad_file_path.open('a', encoding='utf-8') as bad_file:
122127
bad_file.write('blah blah blah')
123128
with self.assertRaises(ValueError):
124129
query_pkg_info(bad_file_path)
125130

126-
with bad_file_path.open('a') as bad_file:
131+
with bad_file_path.open('a', encoding='utf-8') as bad_file:
127132
bad_file.write('Version: hello world')
128133
with self.assertRaises(ValueError):
129134
query_pkg_info(bad_file_path)

test/test_version.py

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,18 @@ def test_from_str(self):
2626

2727
py_version = \
2828
pkg_resources.parse_version(version_str) # type: packaging.version.Version
29+
# self.assertIsInstance(
30+
# py_version, packaging.version.Version, msg=(type(py_version), py_version))
2931
_LOG.debug('packaging parsed version string %s into %s: %s',
3032
repr(version_str), type(py_version), py_version)
3133

3234
try:
33-
sem_version = semver.parse(version_str) # type: dict
34-
_LOG.debug('semver parsed version string %s into %s: %s',
35-
repr(version_str), type(sem_version), sem_version)
36-
sem_version_info = \
37-
semver.parse_version_info(version_str) # type: semver.VersionInfo
38-
_LOG.debug('semver parsed version string %s into %s: %s',
39-
repr(version_str), type(sem_version_info), sem_version_info)
35+
sem_version = semver.VersionInfo.parse(version_str) # type: semver.VersionInfo
4036
except ValueError:
4137
_LOG.debug('semver could not parse version string %s', repr(version_str))
38+
else:
39+
_LOG.debug('semver parsed version string %s into %s: %s',
40+
repr(version_str), type(sem_version), sem_version)
4241

4342
self.assertEqual(Version.from_str(version_str).to_tuple(), version_tuple)
4443

@@ -77,46 +76,44 @@ def test_from_sem_version(self):
7776
version_tuple = case_to_version_tuple(args, kwargs)
7877
with self.subTest(version_str=version_str, version_tuple=version_tuple):
7978
try:
80-
sem_version = semver.parse(version_str)
79+
sem_version = semver.VersionInfo.parse(version_str) # type: semver.VersionInfo
8180
except ValueError:
82-
pass
81+
continue
8382
else:
8483
self.assertEqual(Version.from_sem_version(sem_version).to_tuple(),
8584
version_tuple, sem_version)
86-
try:
87-
sem_version_info = semver.parse_version_info(version_str)
88-
except ValueError:
89-
pass
90-
else:
91-
self.assertEqual(Version.from_sem_version(sem_version_info).to_tuple(),
92-
version_tuple, sem_version_info)
85+
sem_version_dict = sem_version.to_dict()
86+
self.assertEqual(Version.from_sem_version(sem_version_dict).to_tuple(),
87+
version_tuple, sem_version_dict)
9388

9489
def test_to_sem_version(self):
9590
for version_str, (args, kwargs) in COMPATIBLE_STR_CASES.items():
9691
version_tuple = case_to_version_tuple(args, kwargs)
9792
with self.subTest(version_str=version_str, version_tuple=version_tuple):
9893
try:
99-
sem_version = semver.parse(version_str)
94+
sem_version = semver.VersionInfo.parse(version_str)
10095
except ValueError:
10196
continue
10297
version = Version.from_str(version_str)
10398
self.assertEqual(version.to_sem_version(), sem_version)
10499

105100
def test_from_version(self):
106-
for version_str, (args, kwargs) in INIT_CASES.items():
101+
for version_str, args_kwargs_tuple in INIT_CASES.items():
102+
args, kwargs = args_kwargs_tuple
107103
with self.subTest(args=args, kwargs=kwargs, version_str=version_str):
108104
version = Version.from_str(version_str)
109-
created_version = Version(*args, **dict(kwargs))
105+
created_version = Version(*args, **kwargs)
110106
self.assertIsInstance(created_version, Version)
111107
self.assertEqual(version, created_version)
112108
version_copy = Version.from_version(created_version)
113109
self.assertEqual(version, version_copy)
114110
self.assertEqual(version_copy, created_version)
115111

116112
def test_init(self):
117-
for version_str, (args, kwargs) in INIT_CASES.items():
113+
for version_str, args_kwargs_tuple in INIT_CASES.items():
114+
args, kwargs = args_kwargs_tuple
118115
with self.subTest(args=args, kwargs=kwargs, version_str=version_str):
119-
version = Version(*args, **dict(kwargs))
116+
version = Version(*args, **kwargs)
120117
self.assertIsInstance(version, Version)
121118
self.assertEqual(Version.from_str(version_str), version)
122119
self.assertIsInstance(version.release, tuple)

version_query/git_query.py

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,21 @@ def _git_version_tags(repo: git.Repo) -> t.Mapping[git.Tag, Version]:
4141

4242

4343
def _latest_git_version_tag_on_branches(
44-
repo: git.Repo, assume_if_none: bool, commit: git.Commit, commit_distance: int,
45-
skip_commits: t.Set[git.Commit]) -> t.Union[int, t.Tuple[
46-
git.Commit, t.Optional[git.TagReference], t.Optional[Version], int]]:
44+
repo: git.Repo, assume_if_none: bool, commit: git.objects.Commit, commit_distance: int,
45+
skip_commits: t.Set[git.objects.Commit]) -> t.Union[int, t.Tuple[
46+
t.Optional[git.objects.Commit], t.Optional[git.TagReference], t.Optional[Version],
47+
int]]:
4748
_LOG.log(logging.NOTSET, 'entering %i branches...', len(commit.parents))
4849
results = []
4950
main_commit_distance = None
5051
for parent in commit.parents:
5152
try:
5253
result = _latest_git_version_tag(
5354
repo, assume_if_none, parent, commit_distance, skip_commits)
54-
if main_commit_distance is None:
55-
main_commit_distance = result[3]
5655
except ValueError:
5756
continue
57+
if main_commit_distance is None:
58+
main_commit_distance = result[3]
5859
if result[2] is not None:
5960
results.append(result)
6061
if not results:
@@ -72,17 +73,17 @@ def _latest_git_version_tag_on_branches(
7273

7374

7475
def _latest_git_version_tag(
75-
repo: git.Repo, assume_if_none: bool = False, base_commit: git.Commit = None,
76-
commit_distance: int = 0, skip_commits: t.Set[git.Commit] = None) -> t.Tuple[
77-
git.Commit, t.Optional[git.TagReference], t.Optional[Version], int]:
78-
"""Retrun (commit, tag at that commit if any, latest version, distance from the version)."""
76+
repo: git.Repo, assume_if_none: bool = False, base_commit: git.objects.Commit = None,
77+
commit_distance: int = 0, skip_commits: t.Set[git.objects.Commit] = None) -> t.Tuple[
78+
t.Optional[git.objects.Commit], t.Optional[git.TagReference], t.Optional[Version], int]:
79+
"""Return (commit, tag at that commit if any, latest version, distance from the version)."""
7980
version_tags = _git_version_tags(repo)
80-
version_tag_commits: t.Dict[git.Commit, set] = {}
81+
version_tag_commits: t.Dict[git.objects.Commit, set] = {}
8182
for tag, version in version_tags.items():
82-
commit = tag.commit
83-
if commit not in version_tag_commits:
84-
version_tag_commits[commit] = set()
85-
version_tag_commits[commit].add(tag)
83+
_commit = tag.commit
84+
if _commit not in version_tag_commits:
85+
version_tag_commits[_commit] = set()
86+
version_tag_commits[_commit].add(tag)
8687
current_version_tags = {}
8788
commit = None
8889
if skip_commits is None:
@@ -120,7 +121,8 @@ def _latest_git_version_tag(
120121

121122

122123
def _upcoming_git_version_tag(repo: git.Repo, ignore_untracked_files: bool = True) -> t.Tuple[
123-
git.Commit, t.Optional[git.TagReference], Version, int, bool]:
124+
t.Optional[git.objects.Commit], t.Optional[git.TagReference], t.Optional[Version], int,
125+
bool]:
124126
commit, tag, version, commit_distance = _latest_git_version_tag(repo, True)
125127
is_repo_dirty = repo.is_dirty(untracked_files=not ignore_untracked_files)
126128
return commit, tag, version, commit_distance, is_repo_dirty
@@ -131,13 +133,16 @@ def query_git_repo(repo_path: pathlib.Path, search_parent_directories: bool = Tr
131133
_LOG.debug('looking for git repository in "%s"', repo_path)
132134
repo = git.Repo(str(repo_path), search_parent_directories=search_parent_directories)
133135
_LOG.debug('found git repository in "%s"', repo.working_dir)
134-
return _latest_git_version_tag(repo)[2]
136+
version = _latest_git_version_tag(repo)[2]
137+
assert isinstance(version, Version), version
138+
return version
135139

136140

137141
def predict_git_repo(repo_path: pathlib.Path, search_parent_directories: bool = True) -> Version:
138142
"""Predict version from tags, commit history and index status of git repository."""
139143
repo = git.Repo(str(repo_path), search_parent_directories=search_parent_directories)
140144
version, commit_distance, is_repo_dirty = _upcoming_git_version_tag(repo)[2:]
145+
assert isinstance(version, Version), version
141146
if commit_distance > 0:
142147
version.devel_increment(commit_distance)
143148
version.local = (repo.head.commit.hexsha[:8],)

version_query/version.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -558,8 +558,8 @@ def to_dict(self) -> dict:
558558
def to_py_version(self) -> packaging.version.Version:
559559
return packaging.version.Version(self.to_str())
560560

561-
def to_sem_version(self) -> dict:
562-
return semver.parse(self.to_str())
561+
def to_sem_version(self) -> semver.VersionInfo:
562+
return semver.VersionInfo.parse(self.to_str())
563563

564564
def __repr__(self):
565565
fields = ', '.join(f'{field[1:]}: {repr(value)}' for field, value in vars(self).items())

0 commit comments

Comments
 (0)