Skip to content

Commit 63701c0

Browse files
committed
more verbose
1 parent c5e5109 commit 63701c0

4 files changed

Lines changed: 101 additions & 64 deletions

File tree

devpack/batch_tools.py

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@
1010
__all__ = ["auto_add_readme", "recursive_add_readmes", "TouchModeEnum"]
1111

1212
from enum import Enum
13+
from functools import wraps
1314
from pathlib import Path
14-
from typing import Callable, Iterable, Optional
15+
from typing import Callable, Iterable, Optional, MutableMapping, Sequence
1516

1617
from sorcery import assigned_names
1718

@@ -62,6 +63,9 @@ def auto_add_readme(
6263
readme_file.write_text(prefix + str(readme_file.parent.name))
6364
else:
6465
raise ValueError(f"Unknown touch mode {touch_mode}")
66+
else:
67+
if verbose:
68+
print(f"{readme_name} already exists at {path}")
6569

6670

6771
def is_python_module(path: Path) -> bool:
@@ -80,9 +84,23 @@ def is_python_package(path: Path) -> bool:
8084

8185
def negate(f: Callable) -> Callable:
8286
"""
83-
Negate a function
87+
Negate a function return
8488
"""
85-
return lambda *args, **kwargs: not f(*args, **kwargs)
89+
90+
@wraps(f)
91+
def wrapper(*args: Sequence, **kwargs: MutableMapping):
92+
"""
93+
94+
:param args:
95+
:type args:
96+
:param kwargs:
97+
:type kwargs:
98+
:return:
99+
:rtype:
100+
"""
101+
return not f(*args, **kwargs)
102+
103+
return wrapper
86104

87105

88106
def recursive_add_readmes(
@@ -111,8 +129,10 @@ def recursive_add_readmes(
111129
)
112130

113131
for child in path.iterdir():
114-
if exclusion_filter is None or not any(flt(child) for flt in exclusion_filter):
115-
if child.is_dir():
132+
if child.is_dir():
133+
if exclusion_filter is None or not any(
134+
flt(child) for flt in exclusion_filter
135+
):
116136
recursive_add_readmes(
117137
child,
118138
exclusion_filter,
@@ -121,8 +141,13 @@ def recursive_add_readmes(
121141
root_path=root_path,
122142
verbose=verbose,
123143
)
124-
elif child.is_file():
125-
pass
144+
else:
145+
if verbose:
146+
print(
147+
f"{child} was excluded, filters:\n{[(flt.__name__, flt(child)) for flt in exclusion_filter]}"
148+
)
149+
elif child.is_file():
150+
pass
126151

127152

128153
if __name__ == "__main__":

devpack/entry_points/batch.py

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

1212
import argparse
1313
from pathlib import Path
14-
from tabnanny import verbose
1514

1615
from devpack.batch_tools import TouchModeEnum, recursive_add_readmes
1716

devpack/entry_points/cli.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,8 @@
77

88
import argparse
99

10-
from devpack.devpack.development import pip_uninstall_package
11-
12-
13-
from .development import pip_install_development_package
10+
from devpack.development import pip_uninstall_package
11+
from devpack.development import pip_install_development_package
1412

1513

1614
def install_develop():

setup.py

Lines changed: 67 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env python3
22
# -*- coding: utf-8 -*-
3-
from typing import List, Union
3+
from typing import List, Union, TextIO, Sequence
44

55

66
def python_version_check(major=3, minor=6):
@@ -15,10 +15,56 @@ def python_version_check(major=3, minor=6):
1515

1616

1717
python_version_check()
18-
1918
import pathlib
2019
import re
2120

21+
22+
def read_reqs(file: str, path: pathlib.Path) -> List[str]:
23+
"""description"""
24+
25+
def readlines_ignore_comments(f: TextIO):
26+
"""description"""
27+
return [a_ for a_ in f.readlines() if "#" not in a_ and a_]
28+
29+
def recursive_flatten_ignore_str(seq: Sequence) -> Sequence:
30+
"""description"""
31+
if not seq: # is empty Sequence
32+
return seq
33+
if isinstance(seq[0], str):
34+
return seq
35+
if isinstance(seq[0], Sequence):
36+
return (
37+
*recursive_flatten_ignore_str(seq[0]),
38+
*recursive_flatten_ignore_str(seq[1:]),
39+
)
40+
return (*seq[:1], *recursive_flatten_ignore_str(seq[1:]))
41+
42+
def unroll_nested_reqs(req_str: str, base_path: pathlib.Path):
43+
"""description"""
44+
if req_str.startswith("-r"):
45+
with open(base_path / req_str.strip("-r").strip()) as f:
46+
return [
47+
unroll_nested_reqs(req.strip(), base_path)
48+
for req in readlines_ignore_comments(f)
49+
]
50+
else:
51+
return (req_str,)
52+
53+
requirements_group = []
54+
with open(str(path / file)) as f:
55+
requirements = readlines_ignore_comments(f)
56+
for requirement in requirements:
57+
requirements_group.extend(
58+
recursive_flatten_ignore_str(
59+
unroll_nested_reqs(requirement.strip(), path)
60+
)
61+
)
62+
63+
req_set = set(requirements_group)
64+
req_set.discard("")
65+
return list(req_set)
66+
67+
2268
from setuptools import find_packages, setup
2369

2470
with open(
@@ -44,33 +90,16 @@ class DevPackPackage:
4490

4591
@property
4692
def test_dependencies(self) -> list:
47-
"""
48-
The test dependencies
49-
"""
50-
path = pathlib.Path(__file__).parent
51-
requirements_tests = []
52-
with open(path / "requirements_tests.txt") as f:
53-
requirements = f.readlines()
54-
55-
for requirement in requirements:
56-
requirements_tests.append(requirement.strip())
57-
58-
return requirements_tests
93+
return read_reqs(
94+
"requirements_tests.txt", pathlib.Path(__file__).parent / "requirements"
95+
)
5996

6097
@property
6198
def setup_dependencies(self) -> list:
62-
"""
63-
Get the setup dependencies
64-
"""
65-
path = pathlib.Path(__file__).parent
66-
requirements_setup = []
67-
with open(path / "requirements_setup.txt") as f:
68-
requirements = f.readlines()
69-
70-
for requirement in requirements:
71-
requirements_setup.append(requirement.strip())
72-
73-
return requirements_setup
99+
"""description"""
100+
return read_reqs(
101+
"requirements_setup.txt", pathlib.Path(__file__).parent / "requirements"
102+
)
74103

75104
@property
76105
def package_name(self) -> str:
@@ -164,43 +193,29 @@ def entry_points(self) -> dict:
164193

165194
@property
166195
def extras(self) -> dict:
167-
"""
168-
Extra requirements
169-
"""
170-
path = pathlib.Path(__file__).parent
171-
requirements_xx = []
172-
with open(path / "requirements_dev.txt") as f:
173-
requirements = f.readlines()
174-
175-
for requirement in requirements:
176-
requirements_xx.append(requirement.strip())
177-
196+
"""description"""
178197
these_extras = {
179-
# 'ExtraGroupName':['package-name; platform_system == "System(Linux,Windows)"'
180-
# "xx": requirements_xx
198+
# 'ExtraName':['package-name; platform_system == "System(Linux,Windows)"'
181199
}
182200

183-
all_dependencies = []
201+
path: pathlib.Path = pathlib.Path(__file__).parent / "requirements"
184202

203+
for file in path.iterdir():
204+
if file.name.startswith("requirements_"):
205+
group_name_ = "_".join(file.name.strip(".txt").split("_")[1:])
206+
these_extras[group_name_] = read_reqs(file.name, path)
207+
208+
all_dependencies = []
185209
for group_name in these_extras:
186210
all_dependencies += these_extras[group_name]
187-
these_extras["all"] = all_dependencies
211+
these_extras["all"] = list(set(all_dependencies))
188212

189213
return these_extras
190214

191215
@property
192216
def requirements(self) -> list:
193-
"""
194-
Requirements for the package
195-
"""
196-
requirements_out = []
197-
with open("requirements.txt") as f:
198-
requirements = f.readlines()
199-
200-
for requirement in requirements:
201-
requirements_out.append(requirement.strip())
202-
203-
return requirements_out
217+
"""description"""
218+
return read_reqs("requirements.txt", pathlib.Path(__file__).parent)
204219

205220
@property
206221
def description(self) -> str:

0 commit comments

Comments
 (0)