cmd-queue 0.2.0__py3-none-any.whl → 0.2.1__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.
Potentially problematic release.
This version of cmd-queue might be problematic. Click here for more details.
- cmd_queue/__init__.py +1 -1
- cmd_queue/serial_queue.py +56 -24
- cmd_queue/slurm_queue.py +77 -14
- cmd_queue/slurmify.py +116 -0
- cmd_queue/tmux_queue.py +14 -0
- {cmd_queue-0.2.0.dist-info → cmd_queue-0.2.1.dist-info}/METADATA +194 -167
- {cmd_queue-0.2.0.dist-info → cmd_queue-0.2.1.dist-info}/RECORD +11 -10
- {cmd_queue-0.2.0.dist-info → cmd_queue-0.2.1.dist-info}/WHEEL +1 -1
- {cmd_queue-0.2.0.dist-info → cmd_queue-0.2.1.dist-info}/LICENSE +0 -0
- {cmd_queue-0.2.0.dist-info → cmd_queue-0.2.1.dist-info}/entry_points.txt +0 -0
- {cmd_queue-0.2.0.dist-info → cmd_queue-0.2.1.dist-info}/top_level.txt +0 -0
cmd_queue/__init__.py
CHANGED
cmd_queue/serial_queue.py
CHANGED
|
@@ -9,30 +9,6 @@ from cmd_queue import base_queue
|
|
|
9
9
|
from cmd_queue.util import util_tags
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
def indent(text, prefix=' '):
|
|
13
|
-
r"""
|
|
14
|
-
Indents a block of text
|
|
15
|
-
|
|
16
|
-
Args:
|
|
17
|
-
text (str): text to indent
|
|
18
|
-
prefix (str, default = ' '): prefix to add to each line
|
|
19
|
-
|
|
20
|
-
Returns:
|
|
21
|
-
str: indented text
|
|
22
|
-
|
|
23
|
-
>>> from cmd_queue.serial_queue import * # NOQA
|
|
24
|
-
>>> text = ['aaaa', 'bb', 'cc\n dddd\n ef\n']
|
|
25
|
-
>>> text = indent(text)
|
|
26
|
-
>>> print(text)
|
|
27
|
-
>>> text = indent(text)
|
|
28
|
-
>>> print(text)
|
|
29
|
-
"""
|
|
30
|
-
if isinstance(text, (list, tuple)):
|
|
31
|
-
return indent('\n'.join(text), prefix)
|
|
32
|
-
else:
|
|
33
|
-
return prefix + text.replace('\n', '\n' + prefix)
|
|
34
|
-
|
|
35
|
-
|
|
36
12
|
class BashJob(base_queue.Job):
|
|
37
13
|
r"""
|
|
38
14
|
A job meant to run inside of a larger bash file. Analog of SlurmJob
|
|
@@ -115,6 +91,21 @@ class BashJob(base_queue.Job):
|
|
|
115
91
|
self.tags = util_tags.Tags.coerce(tags)
|
|
116
92
|
self.allow_indent = allow_indent
|
|
117
93
|
|
|
94
|
+
def _test_bash_syntax_errors(self):
|
|
95
|
+
"""
|
|
96
|
+
Check for bash syntax errors
|
|
97
|
+
|
|
98
|
+
Example:
|
|
99
|
+
>>> from cmd_queue.serial_queue import * # NOQA
|
|
100
|
+
>>> # Demo full boilerplate for a job with dependencies
|
|
101
|
+
>>> self = BashJob('basd syhi(', name='job1')
|
|
102
|
+
>>> import pytest
|
|
103
|
+
>>> with pytest.raises(SyntaxError):
|
|
104
|
+
>>> self._test_bash_syntax_errors()
|
|
105
|
+
"""
|
|
106
|
+
bash_text = self.finalize_text()
|
|
107
|
+
_check_bash_text_for_syntax_errors(bash_text)
|
|
108
|
+
|
|
118
109
|
def finalize_text(self, with_status=True, with_gaurds=True,
|
|
119
110
|
conditionals=None, **kwargs):
|
|
120
111
|
script = []
|
|
@@ -575,6 +566,10 @@ class SerialQueue(base_queue.Queue):
|
|
|
575
566
|
r"""
|
|
576
567
|
Print info about the commands, optionally with rich
|
|
577
568
|
|
|
569
|
+
Args:
|
|
570
|
+
*args: see :func:`cmd_queue.base_queue.Queue.print_commands`.
|
|
571
|
+
**kwargs: see :func:`cmd_queue.base_queue.Queue.print_commands`.
|
|
572
|
+
|
|
578
573
|
CommandLine:
|
|
579
574
|
xdoctest -m cmd_queue.serial_queue SerialQueue.print_commands
|
|
580
575
|
|
|
@@ -713,3 +708,40 @@ def _bash_json_dump(json_fmt_parts, fpath):
|
|
|
713
708
|
printf_part = 'printf ' + printf_body + ' \\\n ' + printf_args
|
|
714
709
|
dump_code = printf_part + ' \\\n ' + redirect_part
|
|
715
710
|
return dump_code
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
def indent(text, prefix=' '):
|
|
714
|
+
r"""
|
|
715
|
+
Indents a block of text
|
|
716
|
+
|
|
717
|
+
Args:
|
|
718
|
+
text (str): text to indent
|
|
719
|
+
prefix (str, default = ' '): prefix to add to each line
|
|
720
|
+
|
|
721
|
+
Returns:
|
|
722
|
+
str: indented text
|
|
723
|
+
|
|
724
|
+
>>> from cmd_queue.serial_queue import * # NOQA
|
|
725
|
+
>>> text = ['aaaa', 'bb', 'cc\n dddd\n ef\n']
|
|
726
|
+
>>> text = indent(text)
|
|
727
|
+
>>> print(text)
|
|
728
|
+
>>> text = indent(text)
|
|
729
|
+
>>> print(text)
|
|
730
|
+
"""
|
|
731
|
+
if isinstance(text, (list, tuple)):
|
|
732
|
+
return indent('\n'.join(text), prefix)
|
|
733
|
+
else:
|
|
734
|
+
return prefix + text.replace('\n', '\n' + prefix)
|
|
735
|
+
|
|
736
|
+
|
|
737
|
+
def _check_bash_text_for_syntax_errors(bash_text):
|
|
738
|
+
import tempfile
|
|
739
|
+
tmpdir = tempfile.TemporaryDirectory()
|
|
740
|
+
with tmpdir:
|
|
741
|
+
dpath = ub.Path(tmpdir.name)
|
|
742
|
+
fpath = dpath / 'job_text.sh'
|
|
743
|
+
fpath.write_text(bash_text)
|
|
744
|
+
info = ub.cmd(['bash', '-nv', fpath])
|
|
745
|
+
if info.returncode != 0:
|
|
746
|
+
print(info.stderr)
|
|
747
|
+
raise SyntaxError('bash syntax error')
|
cmd_queue/slurm_queue.py
CHANGED
|
@@ -264,10 +264,6 @@ class SlurmJob(base_queue.Job):
|
|
|
264
264
|
return ' \\\n '.join(args)
|
|
265
265
|
|
|
266
266
|
def _build_sbatch_args(self, jobname_to_varname=None):
|
|
267
|
-
# job_name = 'todo'
|
|
268
|
-
# output_fpath = '$HOME/.cache/slurm/logs/job-%j-%x.out'
|
|
269
|
-
# command = "python -c 'import sys; sys.exit(1)'"
|
|
270
|
-
# -c 2 -p priority --gres=gpu:1
|
|
271
267
|
sbatch_args = ['sbatch']
|
|
272
268
|
if self.name:
|
|
273
269
|
sbatch_args.append(f'--job-name="{self.name}"')
|
|
@@ -306,7 +302,8 @@ class SlurmJob(base_queue.Job):
|
|
|
306
302
|
|
|
307
303
|
for key, value in self._sbatch_kvargs.items():
|
|
308
304
|
key = key.replace('_', '-')
|
|
309
|
-
|
|
305
|
+
if value is not None:
|
|
306
|
+
sbatch_args.append(f'--{key}="{value}"')
|
|
310
307
|
|
|
311
308
|
for key, flag in self._sbatch_flags.items():
|
|
312
309
|
if flag:
|
|
@@ -371,6 +368,19 @@ class SlurmQueue(base_queue.Queue):
|
|
|
371
368
|
CommandLine:
|
|
372
369
|
xdoctest -m cmd_queue.slurm_queue SlurmQueue
|
|
373
370
|
|
|
371
|
+
Example:
|
|
372
|
+
>>> from cmd_queue.slurm_queue import * # NOQA
|
|
373
|
+
>>> self = SlurmQueue()
|
|
374
|
+
>>> job0 = self.submit('echo "hi from $SLURM_JOBID"')
|
|
375
|
+
>>> job1 = self.submit('echo "hi from $SLURM_JOBID"', depends=[job0])
|
|
376
|
+
>>> job2 = self.submit('echo "hi from $SLURM_JOBID"', depends=[job1])
|
|
377
|
+
>>> job3 = self.submit('echo "hi from $SLURM_JOBID"', depends=[job1, job2])
|
|
378
|
+
>>> self.write()
|
|
379
|
+
>>> self.print_commands()
|
|
380
|
+
>>> # xdoctest: +REQUIRES(--run)
|
|
381
|
+
>>> if not self.is_available():
|
|
382
|
+
>>> self.run()
|
|
383
|
+
|
|
374
384
|
Example:
|
|
375
385
|
>>> from cmd_queue.slurm_queue import * # NOQA
|
|
376
386
|
>>> self = SlurmQueue()
|
|
@@ -413,6 +423,11 @@ class SlurmQueue(base_queue.Queue):
|
|
|
413
423
|
self.unused_kwargs = kwargs
|
|
414
424
|
self.queue_id = name + '-' + stamp + '-' + ub.hash_data(uuid.uuid4())[0:8]
|
|
415
425
|
self.dpath = ub.Path.appdir('cmd_queue/slurm') / self.queue_id
|
|
426
|
+
if 0:
|
|
427
|
+
# hack for submission on different systems, probably dont want to
|
|
428
|
+
# do this.
|
|
429
|
+
self.dpath = self.dpath.shrinkuser(home='$HOME')
|
|
430
|
+
|
|
416
431
|
self.log_dpath = self.dpath / 'logs'
|
|
417
432
|
self.fpath = self.dpath / (self.queue_id + '.sh')
|
|
418
433
|
self.shell = shell
|
|
@@ -424,6 +439,37 @@ class SlurmQueue(base_queue.Queue):
|
|
|
424
439
|
def __nice__(self):
|
|
425
440
|
return self.queue_id
|
|
426
441
|
|
|
442
|
+
@classmethod
|
|
443
|
+
def _slurm_checks(cls):
|
|
444
|
+
status = {}
|
|
445
|
+
info = {}
|
|
446
|
+
info['squeue_fpath'] = ub.find_exe('squeue')
|
|
447
|
+
status['has_squeue'] = bool(info['squeue_fpath'])
|
|
448
|
+
status['slurmd_running'] = False
|
|
449
|
+
import psutil
|
|
450
|
+
for p in psutil.process_iter():
|
|
451
|
+
if p.name() == 'slurmd':
|
|
452
|
+
status['slurmd_running'] = True
|
|
453
|
+
info['slurmd_info'] = {
|
|
454
|
+
'pid': p.pid,
|
|
455
|
+
'name': p.name(),
|
|
456
|
+
'status': p.status(),
|
|
457
|
+
'create_time': p.create_time(),
|
|
458
|
+
}
|
|
459
|
+
break
|
|
460
|
+
status['squeue_working'] = (ub.cmd('squeue')['ret'] == 0)
|
|
461
|
+
|
|
462
|
+
sinfo = ub.cmd('sinfo --json')
|
|
463
|
+
status['sinfo_working'] = False
|
|
464
|
+
if sinfo['ret'] == 0:
|
|
465
|
+
status['sinfo_working'] = True
|
|
466
|
+
import json
|
|
467
|
+
sinfo_out = json.loads(sinfo['out'])
|
|
468
|
+
has_working_nodes = not all(
|
|
469
|
+
node['state'] == 'down'
|
|
470
|
+
for node in sinfo_out['nodes'])
|
|
471
|
+
status['has_working_nodes'] = has_working_nodes
|
|
472
|
+
|
|
427
473
|
@classmethod
|
|
428
474
|
def is_available(cls):
|
|
429
475
|
"""
|
|
@@ -436,15 +482,23 @@ class SlurmQueue(base_queue.Queue):
|
|
|
436
482
|
squeue_working = (ub.cmd('squeue')['ret'] == 0)
|
|
437
483
|
if squeue_working:
|
|
438
484
|
# Check if nodes are available or down
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
485
|
+
# note: the --json command is not available in
|
|
486
|
+
# slurm-wlm 19.05.5, but it is in slurm-wlm 21.08.5
|
|
487
|
+
sinfo_version_str = ub.cmd('sinfo --version').stdout.strip().split(' ')[1]
|
|
488
|
+
sinfo_major_version = int(sinfo_version_str.split('.')[0])
|
|
489
|
+
if sinfo_major_version < 21:
|
|
490
|
+
# Dont check in this case
|
|
491
|
+
return True
|
|
492
|
+
else:
|
|
493
|
+
sinfo = ub.cmd('sinfo --json')
|
|
494
|
+
if sinfo['ret'] == 0:
|
|
495
|
+
import json
|
|
496
|
+
sinfo_out = json.loads(sinfo['out'])
|
|
497
|
+
has_working_nodes = not all(
|
|
498
|
+
node['state'] == 'down'
|
|
499
|
+
for node in sinfo_out['nodes'])
|
|
500
|
+
if has_working_nodes:
|
|
501
|
+
return True
|
|
448
502
|
return False
|
|
449
503
|
|
|
450
504
|
def submit(self, command, **kwargs):
|
|
@@ -549,6 +603,10 @@ class SlurmQueue(base_queue.Queue):
|
|
|
549
603
|
info = ub.cmd('squeue --format="%i %P %j %u %t %M %D %R"')
|
|
550
604
|
stream = io.StringIO(info['out'])
|
|
551
605
|
df = pd.read_csv(stream, sep=' ')
|
|
606
|
+
|
|
607
|
+
# Only include job names that this queue created
|
|
608
|
+
job_names = [job.name for job in self.jobs]
|
|
609
|
+
df = df[df['NAME'].isin(job_names)]
|
|
552
610
|
jobid_history.update(df['JOBID'])
|
|
553
611
|
|
|
554
612
|
num_running = (df['ST'] == 'R').sum()
|
|
@@ -729,4 +787,9 @@ sbatch \
|
|
|
729
787
|
squeue
|
|
730
788
|
|
|
731
789
|
|
|
790
|
+
|
|
791
|
+
References:
|
|
792
|
+
https://stackoverflow.com/questions/74164136/slurm-accessing-stdout-stderr-location-of-a-completed-job
|
|
793
|
+
|
|
794
|
+
|
|
732
795
|
"""
|
cmd_queue/slurmify.py
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
r"""
|
|
2
|
+
Helper script to wrap a command with sbatch, but using a more srun like syntax.
|
|
3
|
+
|
|
4
|
+
.. code:: bash
|
|
5
|
+
|
|
6
|
+
python -m cmd_queue.slurmify \
|
|
7
|
+
--jobname="my_job" \
|
|
8
|
+
--depends=None \
|
|
9
|
+
--gpus=1 \
|
|
10
|
+
--mem=16GB \
|
|
11
|
+
--cpus_per_task=5 \
|
|
12
|
+
--ntasks=1 \
|
|
13
|
+
--ntasks-per-node=1 \
|
|
14
|
+
--partition=community \
|
|
15
|
+
-- \
|
|
16
|
+
python -c 'import sys; print("hello world"); sys.exit(0)'
|
|
17
|
+
"""
|
|
18
|
+
#!/usr/bin/env python3
|
|
19
|
+
import scriptconfig as scfg
|
|
20
|
+
import ubelt as ub
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class SlurmifyCLI(scfg.DataConfig):
|
|
24
|
+
__command__ = 'slurmify'
|
|
25
|
+
|
|
26
|
+
jobname = scfg.Value(None, help='for submit, this is the name of the new job')
|
|
27
|
+
depends = scfg.Value(None, help='comma separated jobnames to depend on')
|
|
28
|
+
|
|
29
|
+
command = scfg.Value(None, type=str, position=1, nargs='*', help=ub.paragraph(
|
|
30
|
+
'''
|
|
31
|
+
Specifies the bash command to queue.
|
|
32
|
+
Care must be taken when specifying this argument. If specifying as a
|
|
33
|
+
key/value pair argument, it is important to quote and escape the bash
|
|
34
|
+
command properly. A more convinient way to specify this command is as
|
|
35
|
+
a positional argument. End all of the options to this CLI with `--` and
|
|
36
|
+
then specify your full command.
|
|
37
|
+
'''))
|
|
38
|
+
|
|
39
|
+
gpus = scfg.Value(None, help='a comma separated list of the gpu numbers to spread across. tmux backend only.')
|
|
40
|
+
workers = scfg.Value(1, help='number of concurrent queues for the tmux backend.')
|
|
41
|
+
|
|
42
|
+
mem = scfg.Value(None, help='')
|
|
43
|
+
partition = scfg.Value(1, help='slurm partition')
|
|
44
|
+
|
|
45
|
+
ntasks = scfg.Value(None, help='')
|
|
46
|
+
ntasks_per_node = scfg.Value(None, help='')
|
|
47
|
+
cpus_per_task = scfg.Value(None, help='')
|
|
48
|
+
|
|
49
|
+
@classmethod
|
|
50
|
+
def main(cls, cmdline=1, **kwargs):
|
|
51
|
+
"""
|
|
52
|
+
Example:
|
|
53
|
+
>>> # xdoctest: +SKIP
|
|
54
|
+
>>> from cmd_queue.slurmify import * # NOQA
|
|
55
|
+
>>> cmdline = 0
|
|
56
|
+
>>> kwargs = dict()
|
|
57
|
+
>>> cls = SlurmifyCLI
|
|
58
|
+
>>> cls.main(cmdline=cmdline, **kwargs)
|
|
59
|
+
"""
|
|
60
|
+
import rich
|
|
61
|
+
from rich.markup import escape
|
|
62
|
+
config = cls.cli(cmdline=cmdline, data=kwargs, strict=True)
|
|
63
|
+
rich.print('config = ' + escape(ub.urepr(config, nl=1)))
|
|
64
|
+
|
|
65
|
+
# import json
|
|
66
|
+
# Run a new CLI queue
|
|
67
|
+
row = {'type': 'command', 'command': config['command']}
|
|
68
|
+
if config.jobname:
|
|
69
|
+
row['name'] = config.jobname
|
|
70
|
+
if config.depends:
|
|
71
|
+
row['depends'] = config.depends
|
|
72
|
+
|
|
73
|
+
import cmd_queue
|
|
74
|
+
queue = cmd_queue.Queue.create(
|
|
75
|
+
size=max(1, config['workers']),
|
|
76
|
+
backend='slurm',
|
|
77
|
+
name='slurmified',
|
|
78
|
+
gpus=config['gpus'],
|
|
79
|
+
mem=config['mem'],
|
|
80
|
+
partition=config['partition'],
|
|
81
|
+
ntasks=config['ntasks'],
|
|
82
|
+
ntasks_per_node=config['ntasks_per_node'],
|
|
83
|
+
)
|
|
84
|
+
try:
|
|
85
|
+
bash_command = row['command']
|
|
86
|
+
if isinstance(bash_command, list):
|
|
87
|
+
if len(bash_command) == 1:
|
|
88
|
+
# hack
|
|
89
|
+
import shlex
|
|
90
|
+
if shlex.quote(bash_command[0]) == bash_command[0]:
|
|
91
|
+
bash_command = bash_command[0]
|
|
92
|
+
else:
|
|
93
|
+
bash_command = shlex.quote(bash_command[0])
|
|
94
|
+
else:
|
|
95
|
+
import shlex
|
|
96
|
+
bash_command = ' '.join([shlex.quote(str(p)) for p in bash_command])
|
|
97
|
+
submitkw = ub.udict(row) & {'name', 'depends'}
|
|
98
|
+
queue.submit(bash_command, log=False, **submitkw)
|
|
99
|
+
except Exception:
|
|
100
|
+
print('row = {}'.format(ub.urepr(row, nl=1)))
|
|
101
|
+
raise
|
|
102
|
+
queue.print_commands()
|
|
103
|
+
|
|
104
|
+
# config.cli_queue_fpath.write_text(json.dumps(row))
|
|
105
|
+
# 'sbatch --job-name="test_job1" --output="$HOME/.cache/slurm/logs/job-%j-%x.out" --wrap=""
|
|
106
|
+
|
|
107
|
+
__cli__ = SlurmifyCLI
|
|
108
|
+
|
|
109
|
+
if __name__ == '__main__':
|
|
110
|
+
"""
|
|
111
|
+
|
|
112
|
+
CommandLine:
|
|
113
|
+
python ~/code/cmd_queue/cmd_queue/slurmify.py
|
|
114
|
+
python -m cmd_queue.slurmify
|
|
115
|
+
"""
|
|
116
|
+
__cli__.main()
|
cmd_queue/tmux_queue.py
CHANGED
|
@@ -1074,5 +1074,19 @@ if 0:
|
|
|
1074
1074
|
tmux send -t my_session_id1 "tmux select-pane -t 3" Enter
|
|
1075
1075
|
tmux send -t my_session_id1 "echo pane3" Enter
|
|
1076
1076
|
|
|
1077
|
+
# https://stackoverflow.com/questions/54954177/how-to-write-a-tmux-script-so-that-it-automatically-split-windows-and-opens-a-se
|
|
1078
|
+
# https://tmuxcheatsheet.com/
|
|
1079
|
+
# https://gist.github.com/Starefossen/5955406
|
|
1080
|
+
|
|
1081
|
+
# List the bindings
|
|
1082
|
+
tmux list-keys
|
|
1083
|
+
|
|
1084
|
+
# Can arange the splits in a session via a preset layout
|
|
1085
|
+
# Preset layouts are:
|
|
1086
|
+
# even-horizontal, even-vertical, main-horizontal, main-vertical, or tiled.
|
|
1087
|
+
tmux select-layout -t "${SESSION_NAME}" even-vertical
|
|
1088
|
+
|
|
1089
|
+
# switch to an existing session
|
|
1090
|
+
tmux switch -t "${SESSION_NAME}"
|
|
1077
1091
|
|
|
1078
1092
|
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cmd_queue
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: The cmd_queue module for a DAG of bash commands
|
|
5
5
|
Home-page: https://gitlab.kitware.com/computer-vision/cmd_queue
|
|
6
6
|
Author: Kitware Inc., Jon Crall
|
|
@@ -16,187 +16,214 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
20
|
Requires-Python: >=3.8
|
|
20
21
|
Description-Content-Type: text/x-rst
|
|
21
22
|
License-File: LICENSE
|
|
22
|
-
Requires-Dist: ubelt
|
|
23
|
-
Requires-Dist: rich
|
|
24
|
-
Requires-Dist: scriptconfig
|
|
25
|
-
Requires-Dist: psutil
|
|
26
|
-
Requires-Dist: ruamel.yaml
|
|
27
|
-
Requires-Dist: numpy
|
|
28
|
-
Requires-Dist: pandas
|
|
29
|
-
Requires-Dist: numpy
|
|
30
|
-
Requires-Dist: pandas
|
|
31
|
-
Requires-Dist: networkx
|
|
32
|
-
Requires-Dist: numpy
|
|
33
|
-
Requires-Dist: pandas
|
|
34
|
-
Requires-Dist:
|
|
35
|
-
Requires-Dist:
|
|
36
|
-
Requires-Dist:
|
|
37
|
-
Requires-Dist:
|
|
38
|
-
Requires-Dist:
|
|
39
|
-
Requires-Dist:
|
|
40
|
-
Requires-Dist:
|
|
41
|
-
Requires-Dist:
|
|
23
|
+
Requires-Dist: ubelt>=1.3.0
|
|
24
|
+
Requires-Dist: rich>=12.5.1
|
|
25
|
+
Requires-Dist: scriptconfig>=0.7.9
|
|
26
|
+
Requires-Dist: psutil>=5.9.1
|
|
27
|
+
Requires-Dist: ruamel.yaml>=0.17.22
|
|
28
|
+
Requires-Dist: numpy>=1.19.3; python_version < "3.10" and python_version >= "3.6.0"
|
|
29
|
+
Requires-Dist: pandas>=1.4.0; python_version < "3.10" and python_version >= "3.9"
|
|
30
|
+
Requires-Dist: numpy>=1.21.6; python_version < "3.11" and python_version >= "3.10"
|
|
31
|
+
Requires-Dist: pandas>=1.4.0; python_version < "3.11" and python_version >= "3.10"
|
|
32
|
+
Requires-Dist: networkx>=2.7; python_version < "3.11" and python_version >= "3.8"
|
|
33
|
+
Requires-Dist: numpy>=1.23.2; python_version < "3.12" and python_version >= "3.11"
|
|
34
|
+
Requires-Dist: pandas>=1.5.0; python_version < "3.12" and python_version >= "3.11"
|
|
35
|
+
Requires-Dist: numpy>=1.26.0; python_version < "3.13" and python_version >= "3.12"
|
|
36
|
+
Requires-Dist: pandas>=2.1.1; python_version < "3.13" and python_version >= "3.12"
|
|
37
|
+
Requires-Dist: pandas>=1.1.5; python_version < "3.7" and python_version >= "3.6"
|
|
38
|
+
Requires-Dist: networkx<=2.5.1,>=2.5.1; python_version < "3.7.0" and python_version >= "3.6.0"
|
|
39
|
+
Requires-Dist: networkx>=2.6.2; python_version < "3.8" and python_version >= "3.7"
|
|
40
|
+
Requires-Dist: pandas>=1.3.5; python_version < "3.8" and python_version >= "3.7"
|
|
41
|
+
Requires-Dist: pandas>=1.4.0; python_version < "3.9" and python_version >= "3.8"
|
|
42
|
+
Requires-Dist: networkx>=2.8; python_version < "4.0" and python_version >= "3.11"
|
|
43
|
+
Requires-Dist: numpy>=2.1.0; python_version < "4.0" and python_version >= "3.13"
|
|
44
|
+
Requires-Dist: pandas>=2.2.3; python_version < "4.0" and python_version >= "3.13"
|
|
42
45
|
Provides-Extra: all
|
|
43
|
-
Requires-Dist: ubelt
|
|
44
|
-
Requires-Dist: rich
|
|
45
|
-
Requires-Dist: scriptconfig
|
|
46
|
-
Requires-Dist: psutil
|
|
47
|
-
Requires-Dist: ruamel.yaml
|
|
48
|
-
Requires-Dist: xdoctest
|
|
46
|
+
Requires-Dist: ubelt>=1.3.0; extra == "all"
|
|
47
|
+
Requires-Dist: rich>=12.5.1; extra == "all"
|
|
48
|
+
Requires-Dist: scriptconfig>=0.7.9; extra == "all"
|
|
49
|
+
Requires-Dist: psutil>=5.9.1; extra == "all"
|
|
50
|
+
Requires-Dist: ruamel.yaml>=0.17.22; extra == "all"
|
|
51
|
+
Requires-Dist: xdoctest>=1.0.1; extra == "all"
|
|
49
52
|
Provides-Extra: all-strict
|
|
50
|
-
Requires-Dist: ubelt
|
|
51
|
-
Requires-Dist: rich
|
|
52
|
-
Requires-Dist: scriptconfig
|
|
53
|
-
Requires-Dist: psutil
|
|
54
|
-
Requires-Dist: ruamel.yaml
|
|
55
|
-
Requires-Dist: xdoctest
|
|
56
|
-
Requires-Dist: numpy
|
|
57
|
-
Requires-Dist: pandas
|
|
58
|
-
Requires-Dist: coverage
|
|
59
|
-
Requires-Dist:
|
|
60
|
-
Requires-Dist:
|
|
61
|
-
Requires-Dist:
|
|
62
|
-
Requires-Dist:
|
|
63
|
-
Requires-Dist:
|
|
64
|
-
Requires-Dist:
|
|
65
|
-
Requires-Dist:
|
|
66
|
-
Requires-Dist:
|
|
67
|
-
Requires-Dist:
|
|
68
|
-
Requires-Dist:
|
|
69
|
-
Requires-Dist:
|
|
70
|
-
Requires-Dist: pandas
|
|
71
|
-
Requires-Dist:
|
|
72
|
-
Requires-Dist:
|
|
73
|
-
Requires-Dist:
|
|
74
|
-
Requires-Dist: networkx
|
|
75
|
-
Requires-Dist:
|
|
76
|
-
Requires-Dist:
|
|
77
|
-
Requires-Dist:
|
|
78
|
-
Requires-Dist:
|
|
79
|
-
Requires-Dist:
|
|
80
|
-
Requires-Dist:
|
|
81
|
-
Requires-Dist:
|
|
82
|
-
Requires-Dist:
|
|
83
|
-
Requires-Dist:
|
|
84
|
-
Requires-Dist: coverage
|
|
85
|
-
Requires-Dist:
|
|
86
|
-
Requires-Dist:
|
|
87
|
-
Requires-Dist:
|
|
88
|
-
Requires-Dist: numpy
|
|
89
|
-
Requires-Dist: pandas
|
|
90
|
-
Requires-Dist:
|
|
91
|
-
Requires-Dist:
|
|
92
|
-
Requires-Dist:
|
|
93
|
-
Requires-Dist:
|
|
94
|
-
Requires-Dist:
|
|
95
|
-
Requires-Dist: networkx
|
|
96
|
-
Requires-Dist:
|
|
97
|
-
Requires-Dist:
|
|
98
|
-
Requires-Dist:
|
|
99
|
-
Requires-Dist:
|
|
100
|
-
Requires-Dist:
|
|
101
|
-
Requires-Dist:
|
|
102
|
-
Requires-Dist: pandas
|
|
103
|
-
Requires-Dist:
|
|
104
|
-
Requires-Dist:
|
|
105
|
-
Requires-Dist:
|
|
106
|
-
Requires-Dist:
|
|
107
|
-
Requires-Dist:
|
|
53
|
+
Requires-Dist: ubelt==1.3.0; extra == "all-strict"
|
|
54
|
+
Requires-Dist: rich==12.5.1; extra == "all-strict"
|
|
55
|
+
Requires-Dist: scriptconfig==0.7.9; extra == "all-strict"
|
|
56
|
+
Requires-Dist: psutil==5.9.1; extra == "all-strict"
|
|
57
|
+
Requires-Dist: ruamel.yaml==0.17.22; extra == "all-strict"
|
|
58
|
+
Requires-Dist: xdoctest==1.0.1; extra == "all-strict"
|
|
59
|
+
Requires-Dist: numpy==1.19.3; (python_version < "3.10" and python_version >= "3.6.0") and extra == "all-strict"
|
|
60
|
+
Requires-Dist: pandas==1.4.0; (python_version < "3.10" and python_version >= "3.9") and extra == "all-strict"
|
|
61
|
+
Requires-Dist: coverage==5.3.1; (python_version < "3.10" and python_version >= "3.9") and extra == "all-strict"
|
|
62
|
+
Requires-Dist: pint==0.18; (python_version < "3.10" and python_version >= "3.9") and extra == "all-strict"
|
|
63
|
+
Requires-Dist: numpy==1.21.6; (python_version < "3.11" and python_version >= "3.10") and extra == "all-strict"
|
|
64
|
+
Requires-Dist: pandas==1.4.0; (python_version < "3.11" and python_version >= "3.10") and extra == "all-strict"
|
|
65
|
+
Requires-Dist: pint==0.18; (python_version < "3.11" and python_version >= "3.10") and extra == "all-strict"
|
|
66
|
+
Requires-Dist: networkx==2.7; (python_version < "3.11" and python_version >= "3.8") and extra == "all-strict"
|
|
67
|
+
Requires-Dist: numpy==1.23.2; (python_version < "3.12" and python_version >= "3.11") and extra == "all-strict"
|
|
68
|
+
Requires-Dist: pandas==1.5.0; (python_version < "3.12" and python_version >= "3.11") and extra == "all-strict"
|
|
69
|
+
Requires-Dist: pint==0.18; (python_version < "3.12" and python_version >= "3.11") and extra == "all-strict"
|
|
70
|
+
Requires-Dist: numpy==1.26.0; (python_version < "3.13" and python_version >= "3.12") and extra == "all-strict"
|
|
71
|
+
Requires-Dist: pandas==2.1.1; (python_version < "3.13" and python_version >= "3.12") and extra == "all-strict"
|
|
72
|
+
Requires-Dist: pint==0.23; (python_version < "3.13" and python_version >= "3.12") and extra == "all-strict"
|
|
73
|
+
Requires-Dist: pandas==1.1.5; (python_version < "3.7" and python_version >= "3.6") and extra == "all-strict"
|
|
74
|
+
Requires-Dist: pytest==6.2.0; (python_version < "3.7" and python_version >= "3.6") and extra == "all-strict"
|
|
75
|
+
Requires-Dist: coverage==6.1.1; (python_version < "3.7" and python_version >= "3.6") and extra == "all-strict"
|
|
76
|
+
Requires-Dist: networkx<=2.5.1,==2.5.1; (python_version < "3.7.0" and python_version >= "3.6.0") and extra == "all-strict"
|
|
77
|
+
Requires-Dist: networkx==2.6.2; (python_version < "3.8" and python_version >= "3.7") and extra == "all-strict"
|
|
78
|
+
Requires-Dist: pandas==1.3.5; (python_version < "3.8" and python_version >= "3.7") and extra == "all-strict"
|
|
79
|
+
Requires-Dist: coverage==6.1.1; (python_version < "3.8" and python_version >= "3.7") and extra == "all-strict"
|
|
80
|
+
Requires-Dist: pandas==1.4.0; (python_version < "3.9" and python_version >= "3.8") and extra == "all-strict"
|
|
81
|
+
Requires-Dist: coverage==6.1.1; (python_version < "3.9" and python_version >= "3.8") and extra == "all-strict"
|
|
82
|
+
Requires-Dist: pint==0.18; (python_version < "3.9" and python_version >= "3.8") and extra == "all-strict"
|
|
83
|
+
Requires-Dist: networkx==2.8; (python_version < "4.0" and python_version >= "3.11") and extra == "all-strict"
|
|
84
|
+
Requires-Dist: numpy==2.1.0; (python_version < "4.0" and python_version >= "3.13") and extra == "all-strict"
|
|
85
|
+
Requires-Dist: pandas==2.2.3; (python_version < "4.0" and python_version >= "3.13") and extra == "all-strict"
|
|
86
|
+
Requires-Dist: pint==0.24.4; (python_version < "4.0" and python_version >= "3.13") and extra == "all-strict"
|
|
87
|
+
Requires-Dist: coverage==6.1.1; python_version >= "3.10" and extra == "all-strict"
|
|
88
|
+
Requires-Dist: pytest-cov==3.0.0; python_version >= "3.6.0" and extra == "all-strict"
|
|
89
|
+
Requires-Dist: pytest==7.1.0; python_version >= "3.7" and extra == "all-strict"
|
|
90
|
+
Requires-Dist: textual==0.1.18; python_version >= "3.7" and extra == "all-strict"
|
|
91
|
+
Requires-Dist: numpy>=1.19.3; (python_version < "3.10" and python_version >= "3.6.0") and extra == "all"
|
|
92
|
+
Requires-Dist: pandas>=1.4.0; (python_version < "3.10" and python_version >= "3.9") and extra == "all"
|
|
93
|
+
Requires-Dist: coverage>=5.3.1; (python_version < "3.10" and python_version >= "3.9") and extra == "all"
|
|
94
|
+
Requires-Dist: pint>=0.18; (python_version < "3.10" and python_version >= "3.9") and extra == "all"
|
|
95
|
+
Requires-Dist: numpy>=1.21.6; (python_version < "3.11" and python_version >= "3.10") and extra == "all"
|
|
96
|
+
Requires-Dist: pandas>=1.4.0; (python_version < "3.11" and python_version >= "3.10") and extra == "all"
|
|
97
|
+
Requires-Dist: pint>=0.18; (python_version < "3.11" and python_version >= "3.10") and extra == "all"
|
|
98
|
+
Requires-Dist: networkx>=2.7; (python_version < "3.11" and python_version >= "3.8") and extra == "all"
|
|
99
|
+
Requires-Dist: numpy>=1.23.2; (python_version < "3.12" and python_version >= "3.11") and extra == "all"
|
|
100
|
+
Requires-Dist: pandas>=1.5.0; (python_version < "3.12" and python_version >= "3.11") and extra == "all"
|
|
101
|
+
Requires-Dist: pint>=0.18; (python_version < "3.12" and python_version >= "3.11") and extra == "all"
|
|
102
|
+
Requires-Dist: numpy>=1.26.0; (python_version < "3.13" and python_version >= "3.12") and extra == "all"
|
|
103
|
+
Requires-Dist: pandas>=2.1.1; (python_version < "3.13" and python_version >= "3.12") and extra == "all"
|
|
104
|
+
Requires-Dist: pint>=0.23; (python_version < "3.13" and python_version >= "3.12") and extra == "all"
|
|
105
|
+
Requires-Dist: pandas>=1.1.5; (python_version < "3.7" and python_version >= "3.6") and extra == "all"
|
|
106
|
+
Requires-Dist: pytest>=6.2.0; (python_version < "3.7" and python_version >= "3.6") and extra == "all"
|
|
107
|
+
Requires-Dist: coverage>=6.1.1; (python_version < "3.7" and python_version >= "3.6") and extra == "all"
|
|
108
|
+
Requires-Dist: networkx<=2.5.1,>=2.5.1; (python_version < "3.7.0" and python_version >= "3.6.0") and extra == "all"
|
|
109
|
+
Requires-Dist: networkx>=2.6.2; (python_version < "3.8" and python_version >= "3.7") and extra == "all"
|
|
110
|
+
Requires-Dist: pandas>=1.3.5; (python_version < "3.8" and python_version >= "3.7") and extra == "all"
|
|
111
|
+
Requires-Dist: coverage>=6.1.1; (python_version < "3.8" and python_version >= "3.7") and extra == "all"
|
|
112
|
+
Requires-Dist: pandas>=1.4.0; (python_version < "3.9" and python_version >= "3.8") and extra == "all"
|
|
113
|
+
Requires-Dist: coverage>=6.1.1; (python_version < "3.9" and python_version >= "3.8") and extra == "all"
|
|
114
|
+
Requires-Dist: pint>=0.18; (python_version < "3.9" and python_version >= "3.8") and extra == "all"
|
|
115
|
+
Requires-Dist: networkx>=2.8; (python_version < "4.0" and python_version >= "3.11") and extra == "all"
|
|
116
|
+
Requires-Dist: numpy>=2.1.0; (python_version < "4.0" and python_version >= "3.13") and extra == "all"
|
|
117
|
+
Requires-Dist: pandas>=2.2.3; (python_version < "4.0" and python_version >= "3.13") and extra == "all"
|
|
118
|
+
Requires-Dist: pint>=0.24.4; (python_version < "4.0" and python_version >= "3.13") and extra == "all"
|
|
119
|
+
Requires-Dist: coverage>=6.1.1; python_version >= "3.10" and extra == "all"
|
|
120
|
+
Requires-Dist: pytest-cov>=3.0.0; python_version >= "3.6.0" and extra == "all"
|
|
121
|
+
Requires-Dist: pytest>=7.1.0; python_version >= "3.7" and extra == "all"
|
|
122
|
+
Requires-Dist: textual>=0.1.18; python_version >= "3.7" and extra == "all"
|
|
108
123
|
Provides-Extra: docs
|
|
109
|
-
Requires-Dist: sphinx
|
|
110
|
-
Requires-Dist: sphinx-autobuild
|
|
111
|
-
Requires-Dist: sphinx-rtd-theme
|
|
112
|
-
Requires-Dist: sphinxcontrib-napoleon
|
|
113
|
-
Requires-Dist: sphinx-autoapi
|
|
114
|
-
Requires-Dist: Pygments
|
|
115
|
-
Requires-Dist: myst-parser
|
|
116
|
-
Requires-Dist: sphinx-reredirects
|
|
124
|
+
Requires-Dist: sphinx>=5.0.1; extra == "docs"
|
|
125
|
+
Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "docs"
|
|
126
|
+
Requires-Dist: sphinx-rtd-theme>=1.0.0; extra == "docs"
|
|
127
|
+
Requires-Dist: sphinxcontrib-napoleon>=0.7; extra == "docs"
|
|
128
|
+
Requires-Dist: sphinx-autoapi>=1.8.4; extra == "docs"
|
|
129
|
+
Requires-Dist: Pygments>=2.9.0; extra == "docs"
|
|
130
|
+
Requires-Dist: myst-parser>=0.18.0; extra == "docs"
|
|
131
|
+
Requires-Dist: sphinx-reredirects>=0.0.1; extra == "docs"
|
|
117
132
|
Provides-Extra: docs-strict
|
|
118
|
-
Requires-Dist: sphinx
|
|
119
|
-
Requires-Dist: sphinx-autobuild
|
|
120
|
-
Requires-Dist: sphinx-rtd-theme
|
|
121
|
-
Requires-Dist: sphinxcontrib-napoleon
|
|
122
|
-
Requires-Dist: sphinx-autoapi
|
|
123
|
-
Requires-Dist: Pygments
|
|
124
|
-
Requires-Dist: myst-parser
|
|
125
|
-
Requires-Dist: sphinx-reredirects
|
|
133
|
+
Requires-Dist: sphinx==5.0.1; extra == "docs-strict"
|
|
134
|
+
Requires-Dist: sphinx-autobuild==2021.3.14; extra == "docs-strict"
|
|
135
|
+
Requires-Dist: sphinx-rtd-theme==1.0.0; extra == "docs-strict"
|
|
136
|
+
Requires-Dist: sphinxcontrib-napoleon==0.7; extra == "docs-strict"
|
|
137
|
+
Requires-Dist: sphinx-autoapi==1.8.4; extra == "docs-strict"
|
|
138
|
+
Requires-Dist: Pygments==2.9.0; extra == "docs-strict"
|
|
139
|
+
Requires-Dist: myst-parser==0.18.0; extra == "docs-strict"
|
|
140
|
+
Requires-Dist: sphinx-reredirects==0.0.1; extra == "docs-strict"
|
|
126
141
|
Provides-Extra: linting
|
|
127
|
-
Requires-Dist: flake8
|
|
142
|
+
Requires-Dist: flake8>=5.0.0; extra == "linting"
|
|
128
143
|
Provides-Extra: linting-strict
|
|
129
|
-
Requires-Dist: flake8
|
|
144
|
+
Requires-Dist: flake8==5.0.0; extra == "linting-strict"
|
|
130
145
|
Provides-Extra: optional
|
|
131
146
|
Provides-Extra: optional-strict
|
|
132
|
-
Requires-Dist: pint
|
|
133
|
-
Requires-Dist:
|
|
134
|
-
Requires-Dist: pint
|
|
135
|
-
Requires-Dist: pint
|
|
136
|
-
Requires-Dist:
|
|
137
|
-
Requires-Dist: pint
|
|
147
|
+
Requires-Dist: pint==0.18; (python_version < "3.10" and python_version >= "3.9") and extra == "optional-strict"
|
|
148
|
+
Requires-Dist: pint==0.18; (python_version < "3.11" and python_version >= "3.10") and extra == "optional-strict"
|
|
149
|
+
Requires-Dist: pint==0.18; (python_version < "3.12" and python_version >= "3.11") and extra == "optional-strict"
|
|
150
|
+
Requires-Dist: pint==0.23; (python_version < "3.13" and python_version >= "3.12") and extra == "optional-strict"
|
|
151
|
+
Requires-Dist: pint==0.18; (python_version < "3.9" and python_version >= "3.8") and extra == "optional-strict"
|
|
152
|
+
Requires-Dist: pint==0.24.4; (python_version < "4.0" and python_version >= "3.13") and extra == "optional-strict"
|
|
153
|
+
Requires-Dist: textual==0.1.18; python_version >= "3.7" and extra == "optional-strict"
|
|
154
|
+
Requires-Dist: pint>=0.18; (python_version < "3.10" and python_version >= "3.9") and extra == "optional"
|
|
155
|
+
Requires-Dist: pint>=0.18; (python_version < "3.11" and python_version >= "3.10") and extra == "optional"
|
|
156
|
+
Requires-Dist: pint>=0.18; (python_version < "3.12" and python_version >= "3.11") and extra == "optional"
|
|
157
|
+
Requires-Dist: pint>=0.23; (python_version < "3.13" and python_version >= "3.12") and extra == "optional"
|
|
158
|
+
Requires-Dist: pint>=0.18; (python_version < "3.9" and python_version >= "3.8") and extra == "optional"
|
|
159
|
+
Requires-Dist: pint>=0.24.4; (python_version < "4.0" and python_version >= "3.13") and extra == "optional"
|
|
160
|
+
Requires-Dist: textual>=0.1.18; python_version >= "3.7" and extra == "optional"
|
|
138
161
|
Provides-Extra: runtime
|
|
139
|
-
Requires-Dist: ubelt
|
|
140
|
-
Requires-Dist: rich
|
|
141
|
-
Requires-Dist: scriptconfig
|
|
142
|
-
Requires-Dist: psutil
|
|
143
|
-
Requires-Dist: ruamel.yaml
|
|
162
|
+
Requires-Dist: ubelt>=1.3.0; extra == "runtime"
|
|
163
|
+
Requires-Dist: rich>=12.5.1; extra == "runtime"
|
|
164
|
+
Requires-Dist: scriptconfig>=0.7.9; extra == "runtime"
|
|
165
|
+
Requires-Dist: psutil>=5.9.1; extra == "runtime"
|
|
166
|
+
Requires-Dist: ruamel.yaml>=0.17.22; extra == "runtime"
|
|
144
167
|
Provides-Extra: runtime-strict
|
|
145
|
-
Requires-Dist: ubelt
|
|
146
|
-
Requires-Dist: rich
|
|
147
|
-
Requires-Dist: scriptconfig
|
|
148
|
-
Requires-Dist: psutil
|
|
149
|
-
Requires-Dist: ruamel.yaml
|
|
150
|
-
Requires-Dist: numpy
|
|
151
|
-
Requires-Dist: pandas
|
|
152
|
-
Requires-Dist: numpy
|
|
153
|
-
Requires-Dist: pandas
|
|
154
|
-
Requires-Dist: networkx
|
|
155
|
-
Requires-Dist: numpy
|
|
156
|
-
Requires-Dist: pandas
|
|
157
|
-
Requires-Dist:
|
|
158
|
-
Requires-Dist:
|
|
159
|
-
Requires-Dist:
|
|
160
|
-
Requires-Dist:
|
|
161
|
-
Requires-Dist:
|
|
162
|
-
Requires-Dist:
|
|
163
|
-
Requires-Dist:
|
|
164
|
-
Requires-Dist:
|
|
165
|
-
Requires-Dist: numpy
|
|
166
|
-
Requires-Dist: pandas
|
|
167
|
-
Requires-Dist: numpy
|
|
168
|
-
Requires-Dist: pandas
|
|
169
|
-
Requires-Dist:
|
|
170
|
-
Requires-Dist:
|
|
171
|
-
Requires-Dist:
|
|
172
|
-
Requires-Dist:
|
|
173
|
-
Requires-Dist:
|
|
174
|
-
Requires-Dist:
|
|
175
|
-
Requires-Dist: pandas
|
|
176
|
-
Requires-Dist: pandas
|
|
177
|
-
Requires-Dist: networkx
|
|
178
|
-
Requires-Dist:
|
|
179
|
-
Requires-Dist: pandas
|
|
168
|
+
Requires-Dist: ubelt==1.3.0; extra == "runtime-strict"
|
|
169
|
+
Requires-Dist: rich==12.5.1; extra == "runtime-strict"
|
|
170
|
+
Requires-Dist: scriptconfig==0.7.9; extra == "runtime-strict"
|
|
171
|
+
Requires-Dist: psutil==5.9.1; extra == "runtime-strict"
|
|
172
|
+
Requires-Dist: ruamel.yaml==0.17.22; extra == "runtime-strict"
|
|
173
|
+
Requires-Dist: numpy==1.19.3; (python_version < "3.10" and python_version >= "3.6.0") and extra == "runtime-strict"
|
|
174
|
+
Requires-Dist: pandas==1.4.0; (python_version < "3.10" and python_version >= "3.9") and extra == "runtime-strict"
|
|
175
|
+
Requires-Dist: numpy==1.21.6; (python_version < "3.11" and python_version >= "3.10") and extra == "runtime-strict"
|
|
176
|
+
Requires-Dist: pandas==1.4.0; (python_version < "3.11" and python_version >= "3.10") and extra == "runtime-strict"
|
|
177
|
+
Requires-Dist: networkx==2.7; (python_version < "3.11" and python_version >= "3.8") and extra == "runtime-strict"
|
|
178
|
+
Requires-Dist: numpy==1.23.2; (python_version < "3.12" and python_version >= "3.11") and extra == "runtime-strict"
|
|
179
|
+
Requires-Dist: pandas==1.5.0; (python_version < "3.12" and python_version >= "3.11") and extra == "runtime-strict"
|
|
180
|
+
Requires-Dist: numpy==1.26.0; (python_version < "3.13" and python_version >= "3.12") and extra == "runtime-strict"
|
|
181
|
+
Requires-Dist: pandas==2.1.1; (python_version < "3.13" and python_version >= "3.12") and extra == "runtime-strict"
|
|
182
|
+
Requires-Dist: pandas==1.1.5; (python_version < "3.7" and python_version >= "3.6") and extra == "runtime-strict"
|
|
183
|
+
Requires-Dist: networkx<=2.5.1,==2.5.1; (python_version < "3.7.0" and python_version >= "3.6.0") and extra == "runtime-strict"
|
|
184
|
+
Requires-Dist: networkx==2.6.2; (python_version < "3.8" and python_version >= "3.7") and extra == "runtime-strict"
|
|
185
|
+
Requires-Dist: pandas==1.3.5; (python_version < "3.8" and python_version >= "3.7") and extra == "runtime-strict"
|
|
186
|
+
Requires-Dist: pandas==1.4.0; (python_version < "3.9" and python_version >= "3.8") and extra == "runtime-strict"
|
|
187
|
+
Requires-Dist: networkx==2.8; (python_version < "4.0" and python_version >= "3.11") and extra == "runtime-strict"
|
|
188
|
+
Requires-Dist: numpy==2.1.0; (python_version < "4.0" and python_version >= "3.13") and extra == "runtime-strict"
|
|
189
|
+
Requires-Dist: pandas==2.2.3; (python_version < "4.0" and python_version >= "3.13") and extra == "runtime-strict"
|
|
190
|
+
Requires-Dist: numpy>=1.19.3; (python_version < "3.10" and python_version >= "3.6.0") and extra == "runtime"
|
|
191
|
+
Requires-Dist: pandas>=1.4.0; (python_version < "3.10" and python_version >= "3.9") and extra == "runtime"
|
|
192
|
+
Requires-Dist: numpy>=1.21.6; (python_version < "3.11" and python_version >= "3.10") and extra == "runtime"
|
|
193
|
+
Requires-Dist: pandas>=1.4.0; (python_version < "3.11" and python_version >= "3.10") and extra == "runtime"
|
|
194
|
+
Requires-Dist: networkx>=2.7; (python_version < "3.11" and python_version >= "3.8") and extra == "runtime"
|
|
195
|
+
Requires-Dist: numpy>=1.23.2; (python_version < "3.12" and python_version >= "3.11") and extra == "runtime"
|
|
196
|
+
Requires-Dist: pandas>=1.5.0; (python_version < "3.12" and python_version >= "3.11") and extra == "runtime"
|
|
197
|
+
Requires-Dist: numpy>=1.26.0; (python_version < "3.13" and python_version >= "3.12") and extra == "runtime"
|
|
198
|
+
Requires-Dist: pandas>=2.1.1; (python_version < "3.13" and python_version >= "3.12") and extra == "runtime"
|
|
199
|
+
Requires-Dist: pandas>=1.1.5; (python_version < "3.7" and python_version >= "3.6") and extra == "runtime"
|
|
200
|
+
Requires-Dist: networkx<=2.5.1,>=2.5.1; (python_version < "3.7.0" and python_version >= "3.6.0") and extra == "runtime"
|
|
201
|
+
Requires-Dist: networkx>=2.6.2; (python_version < "3.8" and python_version >= "3.7") and extra == "runtime"
|
|
202
|
+
Requires-Dist: pandas>=1.3.5; (python_version < "3.8" and python_version >= "3.7") and extra == "runtime"
|
|
203
|
+
Requires-Dist: pandas>=1.4.0; (python_version < "3.9" and python_version >= "3.8") and extra == "runtime"
|
|
204
|
+
Requires-Dist: networkx>=2.8; (python_version < "4.0" and python_version >= "3.11") and extra == "runtime"
|
|
205
|
+
Requires-Dist: numpy>=2.1.0; (python_version < "4.0" and python_version >= "3.13") and extra == "runtime"
|
|
206
|
+
Requires-Dist: pandas>=2.2.3; (python_version < "4.0" and python_version >= "3.13") and extra == "runtime"
|
|
180
207
|
Provides-Extra: tests
|
|
181
|
-
Requires-Dist: xdoctest
|
|
208
|
+
Requires-Dist: xdoctest>=1.0.1; extra == "tests"
|
|
182
209
|
Provides-Extra: tests-strict
|
|
183
|
-
Requires-Dist: xdoctest
|
|
184
|
-
Requires-Dist: coverage
|
|
185
|
-
Requires-Dist: pytest
|
|
186
|
-
Requires-Dist: coverage
|
|
187
|
-
Requires-Dist: coverage
|
|
188
|
-
Requires-Dist: coverage
|
|
189
|
-
Requires-Dist: coverage
|
|
190
|
-
Requires-Dist: pytest-cov
|
|
191
|
-
Requires-Dist: pytest
|
|
192
|
-
Requires-Dist: coverage
|
|
193
|
-
Requires-Dist: pytest
|
|
194
|
-
Requires-Dist: coverage
|
|
195
|
-
Requires-Dist: coverage
|
|
196
|
-
Requires-Dist: coverage
|
|
197
|
-
Requires-Dist: coverage
|
|
198
|
-
Requires-Dist: pytest-cov
|
|
199
|
-
Requires-Dist: pytest
|
|
210
|
+
Requires-Dist: xdoctest==1.0.1; extra == "tests-strict"
|
|
211
|
+
Requires-Dist: coverage==5.3.1; (python_version < "3.10" and python_version >= "3.9") and extra == "tests-strict"
|
|
212
|
+
Requires-Dist: pytest==6.2.0; (python_version < "3.7" and python_version >= "3.6") and extra == "tests-strict"
|
|
213
|
+
Requires-Dist: coverage==6.1.1; (python_version < "3.7" and python_version >= "3.6") and extra == "tests-strict"
|
|
214
|
+
Requires-Dist: coverage==6.1.1; (python_version < "3.8" and python_version >= "3.7") and extra == "tests-strict"
|
|
215
|
+
Requires-Dist: coverage==6.1.1; (python_version < "3.9" and python_version >= "3.8") and extra == "tests-strict"
|
|
216
|
+
Requires-Dist: coverage==6.1.1; python_version >= "3.10" and extra == "tests-strict"
|
|
217
|
+
Requires-Dist: pytest-cov==3.0.0; python_version >= "3.6.0" and extra == "tests-strict"
|
|
218
|
+
Requires-Dist: pytest==7.1.0; python_version >= "3.7" and extra == "tests-strict"
|
|
219
|
+
Requires-Dist: coverage>=5.3.1; (python_version < "3.10" and python_version >= "3.9") and extra == "tests"
|
|
220
|
+
Requires-Dist: pytest>=6.2.0; (python_version < "3.7" and python_version >= "3.6") and extra == "tests"
|
|
221
|
+
Requires-Dist: coverage>=6.1.1; (python_version < "3.7" and python_version >= "3.6") and extra == "tests"
|
|
222
|
+
Requires-Dist: coverage>=6.1.1; (python_version < "3.8" and python_version >= "3.7") and extra == "tests"
|
|
223
|
+
Requires-Dist: coverage>=6.1.1; (python_version < "3.9" and python_version >= "3.8") and extra == "tests"
|
|
224
|
+
Requires-Dist: coverage>=6.1.1; python_version >= "3.10" and extra == "tests"
|
|
225
|
+
Requires-Dist: pytest-cov>=3.0.0; python_version >= "3.6.0" and extra == "tests"
|
|
226
|
+
Requires-Dist: pytest>=7.1.0; python_version >= "3.7" and extra == "tests"
|
|
200
227
|
|
|
201
228
|
Command Queue - cmd_queue
|
|
202
229
|
=========================
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
cmd_queue/__init__.py,sha256=
|
|
1
|
+
cmd_queue/__init__.py,sha256=kugjSR3h1jAp11XeTLDdCKPRZv_mBUkVLIFOgWFja0Q,14898
|
|
2
2
|
cmd_queue/__main__.py,sha256=11Af1e3gd3CeDOj6x-OuHMttQWRvMxiB9xWdgKJeJa0,179
|
|
3
3
|
cmd_queue/__main__.pyi,sha256=UJCsqOQ7pnRJOHYNksDffyazWYrXgu6nCFZkLq_PgxA,51
|
|
4
4
|
cmd_queue/airflow_queue.py,sha256=aQE6t8im2nzJ1w_U5swBDbDEoJWrC8tUr8oEoJcqFLE,10503
|
|
@@ -12,11 +12,12 @@ cmd_queue/main.pyi,sha256=QK2dH-nvCsPSSEDNKlO4Uld6rBHsAIswXrkMd6JK2JU,1199
|
|
|
12
12
|
cmd_queue/monitor_app.py,sha256=m0cROUkBvTfpArjdZBfDvBMYnVJKBU_gDiW4HqENm0o,4641
|
|
13
13
|
cmd_queue/monitor_app.pyi,sha256=iMjOCX4djY-3F5GMlMcYBavm4aKYHz6RZJbsUrh43Po,860
|
|
14
14
|
cmd_queue/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
-
cmd_queue/serial_queue.py,sha256=
|
|
15
|
+
cmd_queue/serial_queue.py,sha256=Iuxx3qqa71WfkcEx0kr3TLr47FMVCho81gCL6OEvpos,28205
|
|
16
16
|
cmd_queue/serial_queue.pyi,sha256=puYmRndz0-z8TzGKYrDS3fHs6OMuZT7wbHDv3NKKngU,3163
|
|
17
|
-
cmd_queue/slurm_queue.py,sha256=
|
|
17
|
+
cmd_queue/slurm_queue.py,sha256=Agy0gw2V_XNTIR4XYoY2VJzDZj7HRNpKEQlxuQQXDq8,27149
|
|
18
18
|
cmd_queue/slurm_queue.pyi,sha256=z67qF4_IncO3YyuPIutk8-xzhQ2zOY_-IvYix0OWqJs,2174
|
|
19
|
-
cmd_queue/
|
|
19
|
+
cmd_queue/slurmify.py,sha256=iBaZxxd1hiZQgPzh_9OFCrieZiwQtaZce3YHwboAXD4,4008
|
|
20
|
+
cmd_queue/tmux_queue.py,sha256=BdnGD78qG2IZXOzKywNlRHHYcODaIM-YtHS_1AdPGCA,43606
|
|
20
21
|
cmd_queue/tmux_queue.pyi,sha256=bBxxQKKVIDGXLmb2O9eHX37lXrJuo4BSePbTDmaEiNc,1992
|
|
21
22
|
cmd_queue/util/__init__.py,sha256=QzlId47F1lzuLyeIIJoPGZR3b9ljJl50sFEcJzYWrB8,1450
|
|
22
23
|
cmd_queue/util/richer.py,sha256=OPXpoXYgdhv_49sskF9FMwj6KCSiNcBo1kNhbuj6hoU,3373
|
|
@@ -37,9 +38,9 @@ cmd_queue/util/util_tmux.py,sha256=vC4xeYZCV8uVAp363zD24ROyKqUAdCynIULNJ8UgLQE,1
|
|
|
37
38
|
cmd_queue/util/util_tmux.pyi,sha256=a4XMkzhPntU4MTpeHteZIvOpP0FQt7Qym-tueHojSnQ,246
|
|
38
39
|
cmd_queue/util/util_yaml.py,sha256=5BAuP_fyucB0LrWmXLJLNyXGW7kqbyjJHLlH0zhRiKk,14460
|
|
39
40
|
cmd_queue/util/util_yaml.pyi,sha256=FmbRydo62JgVWtq6oH7ICqVeij8GEpqjEetPiCeO0sE,775
|
|
40
|
-
cmd_queue-0.2.
|
|
41
|
-
cmd_queue-0.2.
|
|
42
|
-
cmd_queue-0.2.
|
|
43
|
-
cmd_queue-0.2.
|
|
44
|
-
cmd_queue-0.2.
|
|
45
|
-
cmd_queue-0.2.
|
|
41
|
+
cmd_queue-0.2.1.dist-info/LICENSE,sha256=o6jcFk_bwjiPUz6vHK0Ju7RwbFp9eXMwAS2BDnwER-4,11343
|
|
42
|
+
cmd_queue-0.2.1.dist-info/METADATA,sha256=1c8Njuzgm0eICJ-c0qqDE0OQWB8mzuDAWdpm5Z-Mp6Q,38591
|
|
43
|
+
cmd_queue-0.2.1.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
|
|
44
|
+
cmd_queue-0.2.1.dist-info/entry_points.txt,sha256=HDxa1dTf0Dne-a-QeDu7cWZVYRyEtCvqaau0GCCMEyw,54
|
|
45
|
+
cmd_queue-0.2.1.dist-info/top_level.txt,sha256=C2JVEsOZsjnMx3jIAWhIQGWAXjGs-hyBzzjkOIm7qW8,10
|
|
46
|
+
cmd_queue-0.2.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|