partis-pyproj 0.1.4__py3-none-any.whl → 0.1.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/__init__.py +9 -1
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/_legacy_setup.py +11 -11
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/_nonprintable.py +4 -3
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/backend.py +44 -37
- partis_pyproj-0.1.6.data/purelib/partis/pyproj/builder/builder.py +351 -0
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/builder/cargo.py +2 -2
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/builder/cmake.py +9 -15
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/builder/meson.py +5 -13
- partis_pyproj-0.1.6.data/purelib/partis/pyproj/builder/process.py +42 -0
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/dist_file/__init__.py +1 -1
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/dist_file/dist_base.py +75 -86
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/dist_file/dist_binary.py +6 -24
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/dist_file/dist_copy.py +7 -18
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/dist_file/dist_source.py +4 -21
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/dist_file/dist_targz.py +5 -12
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/dist_file/dist_zip.py +5 -14
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/file.py +2 -1
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/legacy.py +3 -2
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/load_module.py +7 -6
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/norms.py +35 -31
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/path/__init__.py +2 -1
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/path/match.py +42 -35
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/path/pattern.py +60 -54
- partis_pyproj-0.1.6.data/purelib/partis/pyproj/path/utils.py +94 -0
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/pep.py +36 -35
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/pkginfo.py +7 -16
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/pptoml.py +125 -120
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/pyproj.py +47 -36
- partis_pyproj-0.1.6.data/purelib/partis/pyproj/template.py +229 -0
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/validate.py +273 -268
- partis_pyproj-0.1.6.dist-info/METADATA +500 -0
- partis_pyproj-0.1.6.dist-info/RECORD +37 -0
- partis_pyproj-0.1.4.data/purelib/partis/pyproj/builder/builder.py +0 -267
- partis_pyproj-0.1.4.data/purelib/partis/pyproj/builder/process.py +0 -75
- partis_pyproj-0.1.4.data/purelib/partis/pyproj/path/utils.py +0 -40
- partis_pyproj-0.1.4.dist-info/METADATA +0 -51
- partis_pyproj-0.1.4.dist-info/RECORD +0 -36
- {partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/builder/__init__.py +0 -0
- {partis_pyproj-0.1.4.dist-info → partis_pyproj-0.1.6.dist-info}/LICENSE.txt +0 -0
- {partis_pyproj-0.1.4.dist-info → partis_pyproj-0.1.6.dist-info}/WHEEL +0 -0
- {partis_pyproj-0.1.4.dist-info → partis_pyproj-0.1.6.dist-info}/entry_points.txt +0 -0
- {partis_pyproj-0.1.4.dist-info → partis_pyproj-0.1.6.dist-info}/top_level.txt +0 -0
@@ -1,267 +0,0 @@
|
|
1
|
-
import os
|
2
|
-
import re
|
3
|
-
import shutil
|
4
|
-
import subprocess
|
5
|
-
from pathlib import Path
|
6
|
-
|
7
|
-
from ..file import tail
|
8
|
-
from ..validate import (
|
9
|
-
validating,
|
10
|
-
ValidationError,
|
11
|
-
ValidPathError,
|
12
|
-
FileOutsideRootError )
|
13
|
-
|
14
|
-
from ..load_module import EntryPoint
|
15
|
-
|
16
|
-
from ..path import (
|
17
|
-
subdir )
|
18
|
-
|
19
|
-
ERROR_REC = re.compile(r"error:", re.I)
|
20
|
-
|
21
|
-
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
22
|
-
class BuildCommandError(ValidationError):
|
23
|
-
pass
|
24
|
-
|
25
|
-
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
26
|
-
class Builder:
|
27
|
-
"""Run build setup, compile, install commands
|
28
|
-
|
29
|
-
Parameters
|
30
|
-
----------
|
31
|
-
root : str | pathlib.Path
|
32
|
-
Path to root project directory
|
33
|
-
targets : :class:`pyproj_build <partis.pyproj.pptoml.pyproj_targets>`
|
34
|
-
logger : logging.Logger
|
35
|
-
"""
|
36
|
-
#-----------------------------------------------------------------------------
|
37
|
-
def __init__(self,
|
38
|
-
pyproj,
|
39
|
-
root,
|
40
|
-
targets,
|
41
|
-
logger):
|
42
|
-
|
43
|
-
self.pyproj = pyproj
|
44
|
-
self.root = Path(root).resolve()
|
45
|
-
self.targets = targets
|
46
|
-
self.logger = logger
|
47
|
-
self.target_paths = [
|
48
|
-
dict(
|
49
|
-
src_dir = target.src_dir,
|
50
|
-
build_dir = target.build_dir,
|
51
|
-
prefix = target.prefix,
|
52
|
-
work_dir = target.work_dir)
|
53
|
-
for target in targets ]
|
54
|
-
|
55
|
-
#-----------------------------------------------------------------------------
|
56
|
-
def __enter__(self):
|
57
|
-
|
58
|
-
try:
|
59
|
-
for i, (target, paths) in enumerate(zip(self.targets, self.target_paths)):
|
60
|
-
if not target.enabled:
|
61
|
-
self.logger.info(f"Skipping targets[{i}], disabled for environment markers")
|
62
|
-
continue
|
63
|
-
|
64
|
-
# check paths
|
65
|
-
for k in ['src_dir', 'build_dir', 'prefix', 'work_dir']:
|
66
|
-
with validating(key = f"tool.pyproj.targets[{i}].{k}"):
|
67
|
-
|
68
|
-
rel_path = paths[k]
|
69
|
-
|
70
|
-
abs_path = (self.root / rel_path).resolve()
|
71
|
-
|
72
|
-
if not subdir(self.root, abs_path, check = False):
|
73
|
-
raise FileOutsideRootError(
|
74
|
-
f"Must be within project root directory:"
|
75
|
-
f"\n file = \"{abs_path}\"\n root = \"{self.root}\"")
|
76
|
-
|
77
|
-
|
78
|
-
paths[k] = abs_path
|
79
|
-
|
80
|
-
src_dir = paths['src_dir']
|
81
|
-
build_dir = paths['build_dir']
|
82
|
-
prefix = paths['prefix']
|
83
|
-
work_dir = paths['work_dir']
|
84
|
-
|
85
|
-
with validating(key = f"tool.pyproj.targets[{i}].src_dir"):
|
86
|
-
if not src_dir.exists():
|
87
|
-
raise ValidPathError(f"Source directory not found: {src_dir}")
|
88
|
-
|
89
|
-
with validating(key = f"tool.pyproj.targets[{i}]"):
|
90
|
-
if subdir(build_dir, prefix, check = False):
|
91
|
-
raise ValidPathError(f"'prefix' cannot be inside 'build_dir': {build_dir}")
|
92
|
-
|
93
|
-
build_dirty = build_dir.exists() and any(build_dir.iterdir())
|
94
|
-
|
95
|
-
if target.build_clean and build_dirty:
|
96
|
-
raise ValidPathError(
|
97
|
-
f"'build_dir' is not empty, please remove manually."
|
98
|
-
f" If this was intended, set 'build_clean = false': {build_dir}")
|
99
|
-
|
100
|
-
for k in ['build_dir', 'prefix']:
|
101
|
-
with validating(key = f"tool.pyproj.targets[{i}].{k}"):
|
102
|
-
dir = paths[k]
|
103
|
-
|
104
|
-
if dir == self.root:
|
105
|
-
raise ValidPathError(f"'{k}' cannot be root directory: {dir}")
|
106
|
-
|
107
|
-
dir.mkdir( parents = True, exist_ok = True )
|
108
|
-
|
109
|
-
entry_point = EntryPoint(
|
110
|
-
pyproj = self,
|
111
|
-
root = self.root,
|
112
|
-
name = f"tool.pyproj.targets[{i}]",
|
113
|
-
logger = self.logger,
|
114
|
-
entry = target.entry )
|
115
|
-
|
116
|
-
log_dir = self.root/'build'/'logs'
|
117
|
-
if not log_dir.exists():
|
118
|
-
log_dir.mkdir(parents=True)
|
119
|
-
|
120
|
-
runner = ProcessRunner(
|
121
|
-
logger = self.logger,
|
122
|
-
log_dir=log_dir,
|
123
|
-
target_name=f"target_{i:02d}")
|
124
|
-
|
125
|
-
self.logger.info(f"Build targets[{i}]")
|
126
|
-
self.logger.info(f"Working dir: {work_dir}")
|
127
|
-
self.logger.info(f"Source dir: {src_dir}")
|
128
|
-
self.logger.info(f"Build dir: {build_dir}")
|
129
|
-
self.logger.info(f"Log dir: {log_dir}")
|
130
|
-
self.logger.info(f"Prefix: {prefix}")
|
131
|
-
|
132
|
-
cwd = os.getcwd()
|
133
|
-
|
134
|
-
try:
|
135
|
-
os.chdir(work_dir)
|
136
|
-
|
137
|
-
entry_point(
|
138
|
-
options = target.options,
|
139
|
-
work_dir = work_dir,
|
140
|
-
src_dir = src_dir,
|
141
|
-
build_dir = build_dir,
|
142
|
-
prefix = prefix,
|
143
|
-
setup_args = target.setup_args,
|
144
|
-
compile_args = target.compile_args,
|
145
|
-
install_args = target.install_args,
|
146
|
-
build_clean = not build_dirty,
|
147
|
-
runner = runner)
|
148
|
-
|
149
|
-
finally:
|
150
|
-
os.chdir(cwd)
|
151
|
-
|
152
|
-
except:
|
153
|
-
self.build_clean()
|
154
|
-
raise
|
155
|
-
|
156
|
-
#-----------------------------------------------------------------------------
|
157
|
-
def __exit__(self, type, value, traceback):
|
158
|
-
self.build_clean()
|
159
|
-
|
160
|
-
# do not handle any exceptions here
|
161
|
-
return False
|
162
|
-
|
163
|
-
#-----------------------------------------------------------------------------
|
164
|
-
def build_clean(self):
|
165
|
-
for i, (target, paths) in enumerate(zip(self.targets, self.target_paths)):
|
166
|
-
build_dir = paths['build_dir']
|
167
|
-
|
168
|
-
if build_dir is not None and build_dir.exists() and target.build_clean:
|
169
|
-
self.logger.info(f"Removing build dir: {build_dir}")
|
170
|
-
shutil.rmtree(build_dir)
|
171
|
-
|
172
|
-
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
173
|
-
class ProcessRunner:
|
174
|
-
#-----------------------------------------------------------------------------
|
175
|
-
def __init__(self,
|
176
|
-
logger,
|
177
|
-
log_dir: Path,
|
178
|
-
target_name: str):
|
179
|
-
|
180
|
-
self.logger = logger
|
181
|
-
self.log_dir = log_dir
|
182
|
-
self.target_name = target_name
|
183
|
-
self.commands = {}
|
184
|
-
|
185
|
-
#-----------------------------------------------------------------------------
|
186
|
-
def run(self, args: list):
|
187
|
-
if len(args) == 0:
|
188
|
-
raise ValueError(f"Command for {self.target_name} is empty.")
|
189
|
-
|
190
|
-
cmd_exec = args[0]
|
191
|
-
cmd_exec_src = shutil.which(cmd_exec)
|
192
|
-
|
193
|
-
if cmd_exec_src is None:
|
194
|
-
raise ValueError(
|
195
|
-
f"Executable does not exist or has in-sufficient permissions: {cmd_exec}")
|
196
|
-
|
197
|
-
cmd_exec_src = Path(cmd_exec_src).resolve()
|
198
|
-
cmd_name = cmd_exec_src.name
|
199
|
-
args = [str(cmd_exec_src)]+args[1:]
|
200
|
-
|
201
|
-
cmd_hist = self.commands.setdefault(cmd_exec_src, [])
|
202
|
-
cmd_idx = len(cmd_hist)
|
203
|
-
cmd_hist.append(args)
|
204
|
-
|
205
|
-
run_name = re.sub(r'[^\w]+', "_", cmd_name)
|
206
|
-
|
207
|
-
stdout_file = self.log_dir/f"{self.target_name}.{run_name}.{cmd_idx:02d}.log"
|
208
|
-
|
209
|
-
try:
|
210
|
-
self.logger.info("Running command: "+' '.join(args))
|
211
|
-
|
212
|
-
with open(stdout_file, 'wb') as fp:
|
213
|
-
subprocess.run(
|
214
|
-
args,
|
215
|
-
shell=False,
|
216
|
-
stdout=fp,
|
217
|
-
stderr=subprocess.STDOUT,
|
218
|
-
check=True)
|
219
|
-
|
220
|
-
except subprocess.CalledProcessError as e:
|
221
|
-
|
222
|
-
|
223
|
-
num_windows = 20
|
224
|
-
window_size = 5
|
225
|
-
with open(stdout_file, 'rb') as fp:
|
226
|
-
lines = [
|
227
|
-
(lineno,line)
|
228
|
-
for lineno,line in enumerate(fp.read().decode('utf-8', errors='replace').splitlines())]
|
229
|
-
|
230
|
-
suspect_linenos = [
|
231
|
-
lineno
|
232
|
-
for lineno,line in lines
|
233
|
-
if ERROR_REC.search(line)]
|
234
|
-
|
235
|
-
# suspect_linenos = suspect_linenos[:num_windows]
|
236
|
-
|
237
|
-
extra = [
|
238
|
-
'\n'.join(
|
239
|
-
[f"{'':-<70}",f"{'':>4}⋮"]
|
240
|
-
+[f"{j:>4d}| {line}" for j,line in lines[i:i+window_size]]
|
241
|
-
+[f"{'':>4}⋮"])
|
242
|
-
for i in suspect_linenos]
|
243
|
-
|
244
|
-
m = len(lines)-num_windows
|
245
|
-
|
246
|
-
if suspect_linenos:
|
247
|
-
m = max(m, suspect_linenos[-1])
|
248
|
-
|
249
|
-
last_lines = lines[m:]
|
250
|
-
|
251
|
-
if last_lines:
|
252
|
-
extra += [
|
253
|
-
f"{'':-<70}",
|
254
|
-
f"Last {len(last_lines)} lines of command output:",
|
255
|
-
f"{'':>4}⋮"]
|
256
|
-
|
257
|
-
extra += [
|
258
|
-
f"{j:>4d}| {line}"
|
259
|
-
for j,line in last_lines]
|
260
|
-
|
261
|
-
extra += [
|
262
|
-
f"{'END':>4}| [See log file: {stdout_file}]",
|
263
|
-
f"{'':-<70}",]
|
264
|
-
|
265
|
-
raise BuildCommandError(
|
266
|
-
str(e),
|
267
|
-
extra='\n'.join(extra)) from None
|
@@ -1,75 +0,0 @@
|
|
1
|
-
import os
|
2
|
-
import os.path as osp
|
3
|
-
import tempfile
|
4
|
-
import shutil
|
5
|
-
import subprocess
|
6
|
-
from string import Template
|
7
|
-
|
8
|
-
from ..validate import (
|
9
|
-
validating,
|
10
|
-
ValidationError,
|
11
|
-
ValidPathError,
|
12
|
-
FileOutsideRootError )
|
13
|
-
|
14
|
-
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
15
|
-
def process(
|
16
|
-
pyproj,
|
17
|
-
logger,
|
18
|
-
options,
|
19
|
-
work_dir,
|
20
|
-
src_dir,
|
21
|
-
build_dir,
|
22
|
-
prefix,
|
23
|
-
setup_args,
|
24
|
-
compile_args,
|
25
|
-
install_args,
|
26
|
-
build_clean,
|
27
|
-
runner):
|
28
|
-
"""Run general three-part set of commands
|
29
|
-
|
30
|
-
Parameters
|
31
|
-
----------
|
32
|
-
pyproj : :class:`PyProjBase <partis.pyproj.pyproj.PyProjBase>`
|
33
|
-
logger : logging.Logger
|
34
|
-
options : dict
|
35
|
-
work_dir: pathlib.Path
|
36
|
-
src_dir : pathlib.Path
|
37
|
-
build_dir : pathlib.Path
|
38
|
-
prefix : pathlib.Path
|
39
|
-
setup_args : list[str]
|
40
|
-
compile_args : list[str]
|
41
|
-
install_args : list[str]
|
42
|
-
build_clean : bool
|
43
|
-
"""
|
44
|
-
|
45
|
-
namespace = {
|
46
|
-
**options,
|
47
|
-
'work_dir': os.fspath(work_dir),
|
48
|
-
'src_dir': os.fspath(src_dir),
|
49
|
-
'build_dir': os.fspath(build_dir),
|
50
|
-
'prefix': os.fspath(prefix),
|
51
|
-
**{f"env_{k}": v for k,v in os.environ.items()}}
|
52
|
-
|
53
|
-
# TODO: ensure any paths in setup_args are normalized
|
54
|
-
if not ( build_dir.exists() and any(build_dir.iterdir()) ):
|
55
|
-
# only run setup if the build directory does not already exist (or is empty)
|
56
|
-
setup_args = [ Template(arg).substitute(namespace) for arg in setup_args ]
|
57
|
-
|
58
|
-
|
59
|
-
elif not build_clean:
|
60
|
-
# skip setup if the build directory should be 'clean'
|
61
|
-
setup_args = list()
|
62
|
-
|
63
|
-
else:
|
64
|
-
raise ValidPathError(
|
65
|
-
f"'build_dir' is not empty, remove manually if this is intended or set 'build_clean = false': {build_dir}")
|
66
|
-
|
67
|
-
compile_args = [Template(arg).substitute(namespace) for arg in compile_args]
|
68
|
-
|
69
|
-
install_args = [Template(arg).substitute(namespace) for arg in install_args]
|
70
|
-
|
71
|
-
for cmd in [setup_args, compile_args, install_args]:
|
72
|
-
|
73
|
-
if cmd:
|
74
|
-
runner.run(cmd)
|
75
|
-
|
@@ -1,40 +0,0 @@
|
|
1
|
-
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
2
|
-
class PathError(ValueError):
|
3
|
-
pass
|
4
|
-
|
5
|
-
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
6
|
-
def _subdir(_start, _path):
|
7
|
-
|
8
|
-
n = len(_start)
|
9
|
-
|
10
|
-
if len(_path) < n or _path[:n] != _start:
|
11
|
-
return None
|
12
|
-
|
13
|
-
return _path[n:]
|
14
|
-
|
15
|
-
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
16
|
-
def subdir(start, path, check = True):
|
17
|
-
"""Relative path, restricted to sub-directories.
|
18
|
-
|
19
|
-
Parameters
|
20
|
-
----------
|
21
|
-
start : PurePath
|
22
|
-
Starting directory.
|
23
|
-
path : PurePath
|
24
|
-
Directory to compute relative path to, *must* be a sub-directory of `start`.
|
25
|
-
|
26
|
-
Returns
|
27
|
-
-------
|
28
|
-
rpath : PurePath
|
29
|
-
Relative path from `start` to `path`.
|
30
|
-
"""
|
31
|
-
|
32
|
-
_rpath = _subdir(start.parts, path.parts)
|
33
|
-
|
34
|
-
if _rpath is None:
|
35
|
-
if check:
|
36
|
-
raise PathError(f"Not a subdirectory of {start}: {path}")
|
37
|
-
|
38
|
-
return None
|
39
|
-
|
40
|
-
return type(path)(*_rpath)
|
@@ -1,51 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.1
|
2
|
-
Name: partis-pyproj
|
3
|
-
Version: 0.1.4
|
4
|
-
Requires-Python: >=3.6.2
|
5
|
-
Author-email: "Nanohmics Inc." <software.support@nanohmics.com>
|
6
|
-
Maintainer-email: "Nanohmics Inc." <software.support@nanohmics.com>
|
7
|
-
Summary: Minimal set of Python project utilities (PEP-517/621)
|
8
|
-
License-File: LICENSE.txt
|
9
|
-
Classifier: Intended Audience :: Developers
|
10
|
-
Classifier: Topic :: Software Development :: Build Tools
|
11
|
-
Classifier: Development Status :: 4 - Beta
|
12
|
-
Classifier: Programming Language :: Python
|
13
|
-
Classifier: Programming Language :: Python :: 3
|
14
|
-
Classifier: Operating System :: POSIX :: Linux
|
15
|
-
Classifier: Operating System :: Microsoft :: Windows
|
16
|
-
Classifier: License :: OSI Approved :: BSD License
|
17
|
-
Provides-Extra: meson
|
18
|
-
Provides-Extra: cmake
|
19
|
-
Provides-Extra: doc
|
20
|
-
Provides-Extra: test
|
21
|
-
Provides-Extra: cov
|
22
|
-
Provides-Extra: lint
|
23
|
-
Requires-Dist: importlib_metadata; python_version < "3.8"
|
24
|
-
Requires-Dist: packaging>=21.3
|
25
|
-
Requires-Dist: tomli>=1.2.3
|
26
|
-
Requires-Dist: ninja>=1.10.2.3; extra == "meson"
|
27
|
-
Requires-Dist: meson>=0.61.3; extra == "meson"
|
28
|
-
Requires-Dist: cmake>=3.24.3; extra == "cmake"
|
29
|
-
Requires-Dist: ninja>=1.10.2.3; extra == "cmake"
|
30
|
-
Requires-Dist: partis-utils[sphinx]>=0.1.4; extra == "doc"
|
31
|
-
Requires-Dist: pip>=18.1; extra == "test"
|
32
|
-
Requires-Dist: pytest-cov>=3.0.0; extra == "test"
|
33
|
-
Requires-Dist: meson>=0.61.3; extra == "test"
|
34
|
-
Requires-Dist: pytest>=6.2.5; extra == "test"
|
35
|
-
Requires-Dist: cmake>=3.24.3; extra == "test"
|
36
|
-
Requires-Dist: ninja>=1.10.2.3; extra == "test"
|
37
|
-
Requires-Dist: nox>=2021.10.1; extra == "test"
|
38
|
-
Requires-Dist: numpy; extra == "test"
|
39
|
-
Requires-Dist: coverage[toml]>=6.2; extra == "test"
|
40
|
-
Requires-Dist: tomli>=1.2.3; extra == "test"
|
41
|
-
Requires-Dist: Cython>=0.29.18; extra == "test"
|
42
|
-
Requires-Dist: pytest_mock>=3.6.1; extra == "test"
|
43
|
-
Requires-Dist: build>=0.7.0; extra == "test"
|
44
|
-
Requires-Dist: coverage[toml]>=6.2; extra == "cov"
|
45
|
-
Requires-Dist: pyflakes==2.4.0; extra == "lint"
|
46
|
-
Description-Content-Type: text/x-rst
|
47
|
-
|
48
|
-
The ``partis.pyproj`` package aims to be very simple and
|
49
|
-
transparent implementation of a PEP-517 build back-end.
|
50
|
-
|
51
|
-
https://nanohmics.bitbucket.io/doc/partis/pyproj
|
@@ -1,36 +0,0 @@
|
|
1
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/file.py,sha256=saWJ6m3cBC8MKJhAcPy8M_MZL24rScb-0-miWWNoyv0,1546
|
2
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/__init__.py,sha256=HBnvC3dycTnUD8bkbEBj9fRXwvJCp87wpAk1Q_Ijbq0,1432
|
3
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/validate.py,sha256=eZyI5TCq4_8rhdYgls9BfrWmhZE073exWDCKBgPke7g,32420
|
4
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/_legacy_setup.py,sha256=UwiHAzj5Ka960u_j1I7lYChjMxtKM2fHsOWhWNwGfy8,5306
|
5
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/norms.py,sha256=VwnwnysTgTevdkGcQhCvn41rnjt67t6f8v7_anGuR5Q,10862
|
6
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/builder/cargo.py,sha256=VPYTh975HnkLEi-Au92MLHkn-U2D47LvGPMBwDDld84,1145
|
7
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/builder/__init__.py,sha256=1GSva5IvHTDozdjR9G7g30zKIBshciBYHIfVodjTeLI,133
|
8
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/builder/meson.py,sha256=dk1I_PLpSB9hNLqZ2F4Sj_T3fXp91Mp4ob0bHwWkIV0,2064
|
9
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/builder/process.py,sha256=kGCzMkD2IJe7bUS9VSvtIz_7yXnFBozM8gqXffkQUzw,1857
|
10
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/builder/cmake.py,sha256=hlvZmwp7G0x5TzR_541yASMnpKjVC2YvSV3i0CpTeY8,2001
|
11
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/builder/builder.py,sha256=4ogF7u2llZqfKl5GpFmxhASD5M2ISVFEp6eIPSUGIpM,7752
|
12
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/pyproj.py,sha256=1XCN2bHPqtDUHjQShcI5BOELgYwoF0hvmicXjRO6i0M,12264
|
13
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/pptoml.py,sha256=0NJ69Vu7-dOisE61OjRHWenJAc7HDrP7xoWJBIjL3qw,13446
|
14
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/legacy.py,sha256=tgOSmt7sfxTT0Ue9md6pRzDLv3kIPfJHuB8XgKHoQsA,1704
|
15
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/pkginfo.py,sha256=7O-EAeKyH7t222-NBnMNfDX8cmWqAGMfq-plMvz7bJA,15250
|
16
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/_nonprintable.py,sha256=plAzStakZ3BgjntpzGqRYSdT99WIMXTwv6Q5L6DMHR8,1829
|
17
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/pep.py,sha256=CrvlQslSQqPvQ3_5hOzzkrRhXMgZh21kviIm0yXpssM,32658
|
18
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/load_module.py,sha256=WYDcGKBrIWw_bO_aMW34fW3gt7x-T4O_TpYeu6_5V1k,4305
|
19
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/backend.py,sha256=yta_iZKj_-gHR_d34ycjGWzeVT1a4E--efD0esFx0rU,6717
|
20
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/path/__init__.py,sha256=pypqIo4tZ8YVV3W33sC2hagHek_Us4FpXwwOnQJu3vA,226
|
21
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/path/utils.py,sha256=OlUjU7DUGf2UaamrjHCKxCTm2Zor9NuzjGOJtRVypjU,950
|
22
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/path/match.py,sha256=bFX8oEDPCoTRWkCOAtMw1PBQmI3LpRbA97uBQ4vcf0M,11677
|
23
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/path/pattern.py,sha256=DpJl-vdnn30QZdikTyg4f4nbdHk6VAxcGhHpYjuCdyg,15634
|
24
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/dist_file/__init__.py,sha256=_NEMWNR9Z0aa1knCmKmhSuQOK5aP8Lr1Bc1868eUt58,379
|
25
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/dist_file/dist_targz.py,sha256=neDHh4PVXcpycwYtgHRTgk8dO9WUbS1cguZuaO84cW0,3922
|
26
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/dist_file/dist_base.py,sha256=vJEbMWZf_X9b65ZCSun1kIUZbSsNURZa10wzzRZIz-E,12086
|
27
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/dist_file/dist_copy.py,sha256=urzbyCVf4BelApO7T7kQ2sOqOOJxTNBEZfsQ73qz5XM,3627
|
28
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/dist_file/dist_binary.py,sha256=e2Tuzl1vvzaG3bVB4lleHH3PPITPFGJUvIYqxKe5g9s,7881
|
29
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/dist_file/dist_source.py,sha256=x7nUgArbCIz1tr-ZQUknyhcG36hrv_AX71_RV870fnM,4503
|
30
|
-
partis_pyproj-0.1.4.data/purelib/partis/pyproj/dist_file/dist_zip.py,sha256=wWoLE7JJ2jicq5OFFG0EckHhi4KEshkEyTfDgdAhl7c,3887
|
31
|
-
partis_pyproj-0.1.4.dist-info/METADATA,sha256=d8eb8WyJEtGuLeMNC1ta24DD_MIITciqwaZf4Crb5M4,2086
|
32
|
-
partis_pyproj-0.1.4.dist-info/LICENSE.txt,sha256=6LYtpan0H8F0reCrEa1ZUf_Nr9Vu93A3bqunX2J5Et0,3320
|
33
|
-
partis_pyproj-0.1.4.dist-info/top_level.txt,sha256=T72LF-bUK7nMDf1GQgbzvgZ2YrJElwwRd9h7HwVQBIQ,6
|
34
|
-
partis_pyproj-0.1.4.dist-info/entry_points.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
35
|
-
partis_pyproj-0.1.4.dist-info/WHEEL,sha256=4YeLUbbRU8D0xzIlG3rm8IFLwHKcY8YaY_wiNxswKJg,126
|
36
|
-
partis_pyproj-0.1.4.dist-info/RECORD,,
|
{partis_pyproj-0.1.4.data → partis_pyproj-0.1.6.data}/purelib/partis/pyproj/builder/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|