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 CHANGED
@@ -306,7 +306,7 @@ Example:
306
306
  __mkinit__ = """
307
307
  mkinit -m cmd_queue
308
308
  """
309
- __version__ = '0.2.0'
309
+ __version__ = '0.2.1'
310
310
 
311
311
 
312
312
  __submodules__ = {
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
- sbatch_args.append(f'--{key}="{value}"')
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
- sinfo = ub.cmd('sinfo --json')
440
- if sinfo['ret'] == 0:
441
- import json
442
- sinfo_out = json.loads(sinfo['out'])
443
- has_working_nodes = not all(
444
- node['state'] == 'down'
445
- for node in sinfo_out['nodes'])
446
- if has_working_nodes:
447
- return True
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.0
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 >=1.3.0
23
- Requires-Dist: rich >=12.5.1
24
- Requires-Dist: scriptconfig >=0.7.9
25
- Requires-Dist: psutil >=5.9.1
26
- Requires-Dist: ruamel.yaml >=0.17.22
27
- Requires-Dist: numpy >=1.19.3 ; python_version < "3.10" and python_version >= "3.6.0"
28
- Requires-Dist: pandas >=1.4.0 ; python_version < "3.10" and python_version >= "3.9"
29
- Requires-Dist: numpy >=1.21.6 ; python_version < "3.11" and python_version >= "3.10"
30
- Requires-Dist: pandas >=1.4.0 ; python_version < "3.11" and python_version >= "3.10"
31
- Requires-Dist: networkx >=2.7 ; python_version < "3.11" and python_version >= "3.8"
32
- Requires-Dist: numpy >=1.23.2 ; python_version < "3.12" and python_version >= "3.11"
33
- Requires-Dist: pandas >=1.5.0 ; python_version < "3.12" and python_version >= "3.11"
34
- Requires-Dist: pandas >=1.1.5 ; python_version < "3.7" and python_version >= "3.6"
35
- Requires-Dist: networkx <=2.5.1,>=2.5.1 ; python_version < "3.7.0" and python_version >= "3.6.0"
36
- Requires-Dist: networkx >=2.6.2 ; python_version < "3.8" and python_version >= "3.7"
37
- Requires-Dist: pandas >=1.3.5 ; python_version < "3.8" and python_version >= "3.7"
38
- Requires-Dist: pandas >=1.4.0 ; python_version < "3.9" and python_version >= "3.8"
39
- Requires-Dist: networkx >=2.8 ; python_version < "4.0" and python_version >= "3.11"
40
- Requires-Dist: numpy >=1.26.0 ; python_version < "4.0" and python_version >= "3.12"
41
- Requires-Dist: pandas >=2.1.1 ; python_version < "4.0" and python_version >= "3.12"
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 >=1.3.0 ; extra == 'all'
44
- Requires-Dist: rich >=12.5.1 ; extra == 'all'
45
- Requires-Dist: scriptconfig >=0.7.9 ; extra == 'all'
46
- Requires-Dist: psutil >=5.9.1 ; extra == 'all'
47
- Requires-Dist: ruamel.yaml >=0.17.22 ; extra == 'all'
48
- Requires-Dist: xdoctest >=1.0.1 ; extra == 'all'
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 ==1.3.0 ; extra == 'all-strict'
51
- Requires-Dist: rich ==12.5.1 ; extra == 'all-strict'
52
- Requires-Dist: scriptconfig ==0.7.9 ; extra == 'all-strict'
53
- Requires-Dist: psutil ==5.9.1 ; extra == 'all-strict'
54
- Requires-Dist: ruamel.yaml ==0.17.22 ; extra == 'all-strict'
55
- Requires-Dist: xdoctest ==1.0.1 ; extra == 'all-strict'
56
- Requires-Dist: numpy ==1.19.3 ; (python_version < "3.10" and python_version >= "3.6.0") and extra == 'all-strict'
57
- Requires-Dist: pandas ==1.4.0 ; (python_version < "3.10" and python_version >= "3.9") and extra == 'all-strict'
58
- Requires-Dist: coverage ==5.3.1 ; (python_version < "3.10" and python_version >= "3.9") and extra == 'all-strict'
59
- Requires-Dist: numpy ==1.21.6 ; (python_version < "3.11" and python_version >= "3.10") and extra == 'all-strict'
60
- Requires-Dist: pandas ==1.4.0 ; (python_version < "3.11" and python_version >= "3.10") and extra == 'all-strict'
61
- Requires-Dist: networkx ==2.7 ; (python_version < "3.11" and python_version >= "3.8") and extra == 'all-strict'
62
- Requires-Dist: numpy ==1.23.2 ; (python_version < "3.12" and python_version >= "3.11") and extra == 'all-strict'
63
- Requires-Dist: pandas ==1.5.0 ; (python_version < "3.12" and python_version >= "3.11") and extra == 'all-strict'
64
- Requires-Dist: pandas ==1.1.5 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all-strict'
65
- Requires-Dist: pytest ==6.2.0 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all-strict'
66
- Requires-Dist: coverage ==6.1.1 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all-strict'
67
- Requires-Dist: pint ==0.10 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all-strict'
68
- Requires-Dist: networkx <=2.5.1,==2.5.1 ; (python_version < "3.7.0" and python_version >= "3.6.0") and extra == 'all-strict'
69
- Requires-Dist: networkx ==2.6.2 ; (python_version < "3.8" and python_version >= "3.7") and extra == 'all-strict'
70
- Requires-Dist: pandas ==1.3.5 ; (python_version < "3.8" and python_version >= "3.7") and extra == 'all-strict'
71
- Requires-Dist: coverage ==6.1.1 ; (python_version < "3.8" and python_version >= "3.7") and extra == 'all-strict'
72
- Requires-Dist: pandas ==1.4.0 ; (python_version < "3.9" and python_version >= "3.8") and extra == 'all-strict'
73
- Requires-Dist: coverage ==6.1.1 ; (python_version < "3.9" and python_version >= "3.8") and extra == 'all-strict'
74
- Requires-Dist: networkx ==2.8 ; (python_version < "4.0" and python_version >= "3.11") and extra == 'all-strict'
75
- Requires-Dist: numpy ==1.26.0 ; (python_version < "4.0" and python_version >= "3.12") and extra == 'all-strict'
76
- Requires-Dist: pandas ==2.1.1 ; (python_version < "4.0" and python_version >= "3.12") and extra == 'all-strict'
77
- Requires-Dist: coverage ==6.1.1 ; (python_version >= "3.10") and extra == 'all-strict'
78
- Requires-Dist: pytest-cov ==3.0.0 ; (python_version >= "3.6.0") and extra == 'all-strict'
79
- Requires-Dist: pytest ==7.1.0 ; (python_version >= "3.7") and extra == 'all-strict'
80
- Requires-Dist: textual ==0.1.18 ; (python_version >= "3.7") and extra == 'all-strict'
81
- Requires-Dist: pint ==0.18 ; (python_version >= "3.7") and extra == 'all-strict'
82
- Requires-Dist: numpy >=1.19.3 ; (python_version < "3.10" and python_version >= "3.6.0") and extra == 'all'
83
- Requires-Dist: pandas >=1.4.0 ; (python_version < "3.10" and python_version >= "3.9") and extra == 'all'
84
- Requires-Dist: coverage >=5.3.1 ; (python_version < "3.10" and python_version >= "3.9") and extra == 'all'
85
- Requires-Dist: numpy >=1.21.6 ; (python_version < "3.11" and python_version >= "3.10") and extra == 'all'
86
- Requires-Dist: pandas >=1.4.0 ; (python_version < "3.11" and python_version >= "3.10") and extra == 'all'
87
- Requires-Dist: networkx >=2.7 ; (python_version < "3.11" and python_version >= "3.8") and extra == 'all'
88
- Requires-Dist: numpy >=1.23.2 ; (python_version < "3.12" and python_version >= "3.11") and extra == 'all'
89
- Requires-Dist: pandas >=1.5.0 ; (python_version < "3.12" and python_version >= "3.11") and extra == 'all'
90
- Requires-Dist: pandas >=1.1.5 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all'
91
- Requires-Dist: pytest >=6.2.0 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all'
92
- Requires-Dist: coverage >=6.1.1 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all'
93
- Requires-Dist: pint >=0.10 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all'
94
- Requires-Dist: networkx <=2.5.1,>=2.5.1 ; (python_version < "3.7.0" and python_version >= "3.6.0") and extra == 'all'
95
- Requires-Dist: networkx >=2.6.2 ; (python_version < "3.8" and python_version >= "3.7") and extra == 'all'
96
- Requires-Dist: pandas >=1.3.5 ; (python_version < "3.8" and python_version >= "3.7") and extra == 'all'
97
- Requires-Dist: coverage >=6.1.1 ; (python_version < "3.8" and python_version >= "3.7") and extra == 'all'
98
- Requires-Dist: pandas >=1.4.0 ; (python_version < "3.9" and python_version >= "3.8") and extra == 'all'
99
- Requires-Dist: coverage >=6.1.1 ; (python_version < "3.9" and python_version >= "3.8") and extra == 'all'
100
- Requires-Dist: networkx >=2.8 ; (python_version < "4.0" and python_version >= "3.11") and extra == 'all'
101
- Requires-Dist: numpy >=1.26.0 ; (python_version < "4.0" and python_version >= "3.12") and extra == 'all'
102
- Requires-Dist: pandas >=2.1.1 ; (python_version < "4.0" and python_version >= "3.12") and extra == 'all'
103
- Requires-Dist: coverage >=6.1.1 ; (python_version >= "3.10") and extra == 'all'
104
- Requires-Dist: pytest-cov >=3.0.0 ; (python_version >= "3.6.0") and extra == 'all'
105
- Requires-Dist: pytest >=7.1.0 ; (python_version >= "3.7") and extra == 'all'
106
- Requires-Dist: textual >=0.1.18 ; (python_version >= "3.7") and extra == 'all'
107
- Requires-Dist: pint >=0.18 ; (python_version >= "3.7") and extra == 'all'
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 >=5.0.1 ; extra == 'docs'
110
- Requires-Dist: sphinx-autobuild >=2021.3.14 ; extra == 'docs'
111
- Requires-Dist: sphinx-rtd-theme >=1.0.0 ; extra == 'docs'
112
- Requires-Dist: sphinxcontrib-napoleon >=0.7 ; extra == 'docs'
113
- Requires-Dist: sphinx-autoapi >=1.8.4 ; extra == 'docs'
114
- Requires-Dist: Pygments >=2.9.0 ; extra == 'docs'
115
- Requires-Dist: myst-parser >=0.18.0 ; extra == 'docs'
116
- Requires-Dist: sphinx-reredirects >=0.0.1 ; extra == 'docs'
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 ==5.0.1 ; extra == 'docs-strict'
119
- Requires-Dist: sphinx-autobuild ==2021.3.14 ; extra == 'docs-strict'
120
- Requires-Dist: sphinx-rtd-theme ==1.0.0 ; extra == 'docs-strict'
121
- Requires-Dist: sphinxcontrib-napoleon ==0.7 ; extra == 'docs-strict'
122
- Requires-Dist: sphinx-autoapi ==1.8.4 ; extra == 'docs-strict'
123
- Requires-Dist: Pygments ==2.9.0 ; extra == 'docs-strict'
124
- Requires-Dist: myst-parser ==0.18.0 ; extra == 'docs-strict'
125
- Requires-Dist: sphinx-reredirects ==0.0.1 ; extra == 'docs-strict'
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 >=5.0.0 ; extra == 'linting'
142
+ Requires-Dist: flake8>=5.0.0; extra == "linting"
128
143
  Provides-Extra: linting-strict
129
- Requires-Dist: flake8 ==5.0.0 ; extra == 'linting-strict'
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 ==0.10 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'optional-strict'
133
- Requires-Dist: textual ==0.1.18 ; (python_version >= "3.7") and extra == 'optional-strict'
134
- Requires-Dist: pint ==0.18 ; (python_version >= "3.7") and extra == 'optional-strict'
135
- Requires-Dist: pint >=0.10 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'optional'
136
- Requires-Dist: textual >=0.1.18 ; (python_version >= "3.7") and extra == 'optional'
137
- Requires-Dist: pint >=0.18 ; (python_version >= "3.7") and extra == 'optional'
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 >=1.3.0 ; extra == 'runtime'
140
- Requires-Dist: rich >=12.5.1 ; extra == 'runtime'
141
- Requires-Dist: scriptconfig >=0.7.9 ; extra == 'runtime'
142
- Requires-Dist: psutil >=5.9.1 ; extra == 'runtime'
143
- Requires-Dist: ruamel.yaml >=0.17.22 ; extra == 'runtime'
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 ==1.3.0 ; extra == 'runtime-strict'
146
- Requires-Dist: rich ==12.5.1 ; extra == 'runtime-strict'
147
- Requires-Dist: scriptconfig ==0.7.9 ; extra == 'runtime-strict'
148
- Requires-Dist: psutil ==5.9.1 ; extra == 'runtime-strict'
149
- Requires-Dist: ruamel.yaml ==0.17.22 ; extra == 'runtime-strict'
150
- Requires-Dist: numpy ==1.19.3 ; (python_version < "3.10" and python_version >= "3.6.0") and extra == 'runtime-strict'
151
- Requires-Dist: pandas ==1.4.0 ; (python_version < "3.10" and python_version >= "3.9") and extra == 'runtime-strict'
152
- Requires-Dist: numpy ==1.21.6 ; (python_version < "3.11" and python_version >= "3.10") and extra == 'runtime-strict'
153
- Requires-Dist: pandas ==1.4.0 ; (python_version < "3.11" and python_version >= "3.10") and extra == 'runtime-strict'
154
- Requires-Dist: networkx ==2.7 ; (python_version < "3.11" and python_version >= "3.8") and extra == 'runtime-strict'
155
- Requires-Dist: numpy ==1.23.2 ; (python_version < "3.12" and python_version >= "3.11") and extra == 'runtime-strict'
156
- Requires-Dist: pandas ==1.5.0 ; (python_version < "3.12" and python_version >= "3.11") and extra == 'runtime-strict'
157
- Requires-Dist: pandas ==1.1.5 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'runtime-strict'
158
- Requires-Dist: networkx <=2.5.1,==2.5.1 ; (python_version < "3.7.0" and python_version >= "3.6.0") and extra == 'runtime-strict'
159
- Requires-Dist: networkx ==2.6.2 ; (python_version < "3.8" and python_version >= "3.7") and extra == 'runtime-strict'
160
- Requires-Dist: pandas ==1.3.5 ; (python_version < "3.8" and python_version >= "3.7") and extra == 'runtime-strict'
161
- Requires-Dist: pandas ==1.4.0 ; (python_version < "3.9" and python_version >= "3.8") and extra == 'runtime-strict'
162
- Requires-Dist: networkx ==2.8 ; (python_version < "4.0" and python_version >= "3.11") and extra == 'runtime-strict'
163
- Requires-Dist: numpy ==1.26.0 ; (python_version < "4.0" and python_version >= "3.12") and extra == 'runtime-strict'
164
- Requires-Dist: pandas ==2.1.1 ; (python_version < "4.0" and python_version >= "3.12") and extra == 'runtime-strict'
165
- Requires-Dist: numpy >=1.19.3 ; (python_version < "3.10" and python_version >= "3.6.0") and extra == 'runtime'
166
- Requires-Dist: pandas >=1.4.0 ; (python_version < "3.10" and python_version >= "3.9") and extra == 'runtime'
167
- Requires-Dist: numpy >=1.21.6 ; (python_version < "3.11" and python_version >= "3.10") and extra == 'runtime'
168
- Requires-Dist: pandas >=1.4.0 ; (python_version < "3.11" and python_version >= "3.10") and extra == 'runtime'
169
- Requires-Dist: networkx >=2.7 ; (python_version < "3.11" and python_version >= "3.8") and extra == 'runtime'
170
- Requires-Dist: numpy >=1.23.2 ; (python_version < "3.12" and python_version >= "3.11") and extra == 'runtime'
171
- Requires-Dist: pandas >=1.5.0 ; (python_version < "3.12" and python_version >= "3.11") and extra == 'runtime'
172
- Requires-Dist: pandas >=1.1.5 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'runtime'
173
- Requires-Dist: networkx <=2.5.1,>=2.5.1 ; (python_version < "3.7.0" and python_version >= "3.6.0") and extra == 'runtime'
174
- Requires-Dist: networkx >=2.6.2 ; (python_version < "3.8" and python_version >= "3.7") and extra == 'runtime'
175
- Requires-Dist: pandas >=1.3.5 ; (python_version < "3.8" and python_version >= "3.7") and extra == 'runtime'
176
- Requires-Dist: pandas >=1.4.0 ; (python_version < "3.9" and python_version >= "3.8") and extra == 'runtime'
177
- Requires-Dist: networkx >=2.8 ; (python_version < "4.0" and python_version >= "3.11") and extra == 'runtime'
178
- Requires-Dist: numpy >=1.26.0 ; (python_version < "4.0" and python_version >= "3.12") and extra == 'runtime'
179
- Requires-Dist: pandas >=2.1.1 ; (python_version < "4.0" and python_version >= "3.12") and extra == 'runtime'
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 >=1.0.1 ; extra == 'tests'
208
+ Requires-Dist: xdoctest>=1.0.1; extra == "tests"
182
209
  Provides-Extra: tests-strict
183
- Requires-Dist: xdoctest ==1.0.1 ; extra == 'tests-strict'
184
- Requires-Dist: coverage ==5.3.1 ; (python_version < "3.10" and python_version >= "3.9") and extra == 'tests-strict'
185
- Requires-Dist: pytest ==6.2.0 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'tests-strict'
186
- Requires-Dist: coverage ==6.1.1 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'tests-strict'
187
- Requires-Dist: coverage ==6.1.1 ; (python_version < "3.8" and python_version >= "3.7") and extra == 'tests-strict'
188
- Requires-Dist: coverage ==6.1.1 ; (python_version < "3.9" and python_version >= "3.8") and extra == 'tests-strict'
189
- Requires-Dist: coverage ==6.1.1 ; (python_version >= "3.10") and extra == 'tests-strict'
190
- Requires-Dist: pytest-cov ==3.0.0 ; (python_version >= "3.6.0") and extra == 'tests-strict'
191
- Requires-Dist: pytest ==7.1.0 ; (python_version >= "3.7") and extra == 'tests-strict'
192
- Requires-Dist: coverage >=5.3.1 ; (python_version < "3.10" and python_version >= "3.9") and extra == 'tests'
193
- Requires-Dist: pytest >=6.2.0 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'tests'
194
- Requires-Dist: coverage >=6.1.1 ; (python_version < "3.7" and python_version >= "3.6") and extra == 'tests'
195
- Requires-Dist: coverage >=6.1.1 ; (python_version < "3.8" and python_version >= "3.7") and extra == 'tests'
196
- Requires-Dist: coverage >=6.1.1 ; (python_version < "3.9" and python_version >= "3.8") and extra == 'tests'
197
- Requires-Dist: coverage >=6.1.1 ; (python_version >= "3.10") and extra == 'tests'
198
- Requires-Dist: pytest-cov >=3.0.0 ; (python_version >= "3.6.0") and extra == 'tests'
199
- Requires-Dist: pytest >=7.1.0 ; (python_version >= "3.7") and extra == 'tests'
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=_aGdqmuT1Evxgec-s9ANpdQI3_wKiBhPBSsH3Umvcqo,14898
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=IEqoUNdye9jL9QLkBTYiDrgTA_kM86vhZao3zrqUFdw,27101
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=R-i9Pf_wyPvesJi3U8yJF2coV8bWkEq-hoprp-ab94E,24634
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/tmux_queue.py,sha256=NfWTqSH9mFHtx0bmmFoWhvPyFrJ8Gw4Z-O3gNPF3lm4,43046
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.0.dist-info/LICENSE,sha256=o6jcFk_bwjiPUz6vHK0Ju7RwbFp9eXMwAS2BDnwER-4,11343
41
- cmd_queue-0.2.0.dist-info/METADATA,sha256=sq4dpnCsiiajWf82k-7RIdGtGWWWARiapmD_7eaQ4hE,36034
42
- cmd_queue-0.2.0.dist-info/WHEEL,sha256=mguMlWGMX-VHnMpKOjjQidIo1ssRlCFu4a4mBpz1s2M,91
43
- cmd_queue-0.2.0.dist-info/entry_points.txt,sha256=HDxa1dTf0Dne-a-QeDu7cWZVYRyEtCvqaau0GCCMEyw,54
44
- cmd_queue-0.2.0.dist-info/top_level.txt,sha256=C2JVEsOZsjnMx3jIAWhIQGWAXjGs-hyBzzjkOIm7qW8,10
45
- cmd_queue-0.2.0.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.1.1)
2
+ Generator: setuptools (75.5.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5