runem 0.5.0__py3-none-any.whl → 0.7.0__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.
- runem/VERSION +1 -1
- runem/blocking_print.py +10 -2
- runem/cli/initialise_options.py +0 -1
- runem/command_line.py +4 -7
- runem/config.py +8 -4
- runem/config_parse.py +2 -1
- runem/config_validate.py +47 -0
- runem/informative_dict.py +7 -2
- runem/job.py +1 -3
- runem/job_execute.py +12 -9
- runem/job_filter.py +5 -5
- runem/job_wrapper_python.py +3 -4
- runem/log.py +27 -5
- runem/report.py +8 -4
- runem/run_command.py +62 -28
- runem/runem.py +46 -64
- runem/schema.yml +137 -0
- runem/types/__init__.py +2 -1
- runem/types/errors.py +10 -0
- runem/types/hooks.py +1 -1
- runem/types/types_jobs.py +21 -24
- runem/utils.py +12 -0
- runem/yaml_utils.py +19 -0
- runem/yaml_validation.py +28 -0
- runem-0.7.0.dist-info/METADATA +162 -0
- runem-0.7.0.dist-info/RECORD +56 -0
- {runem-0.5.0.dist-info → runem-0.7.0.dist-info}/WHEEL +1 -1
- scripts/test_hooks/py.py +63 -1
- runem-0.5.0.dist-info/METADATA +0 -164
- runem-0.5.0.dist-info/RECORD +0 -52
- {runem-0.5.0.dist-info → runem-0.7.0.dist-info}/entry_points.txt +0 -0
- {runem-0.5.0.dist-info → runem-0.7.0.dist-info/licenses}/LICENSE +0 -0
- {runem-0.5.0.dist-info → runem-0.7.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,162 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: runem
|
3
|
+
Version: 0.7.0
|
4
|
+
Summary: Awesome runem created by lursight
|
5
|
+
Author: lursight
|
6
|
+
License: Specify your license here
|
7
|
+
Project-URL: Homepage, https://github.com/lursight/runem/
|
8
|
+
Keywords: example,runem
|
9
|
+
Classifier: Programming Language :: Python :: 3.7
|
10
|
+
Classifier: Programming Language :: Python :: 3.8
|
11
|
+
Classifier: Programming Language :: Python :: 3.9
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
14
|
+
Requires-Python: >=3.7
|
15
|
+
Description-Content-Type: text/markdown
|
16
|
+
License-File: LICENSE
|
17
|
+
Requires-Dist: packaging>=22.0
|
18
|
+
Requires-Dist: PyYAML>=5.0.0
|
19
|
+
Requires-Dist: jsonschema>=4.22
|
20
|
+
Requires-Dist: rich>10.0.0
|
21
|
+
Requires-Dist: typing_extensions>3.0.0
|
22
|
+
Provides-Extra: tests
|
23
|
+
Requires-Dist: coverage==7.5; extra == "tests"
|
24
|
+
Requires-Dist: flake8-bugbear==24.2.6; extra == "tests"
|
25
|
+
Requires-Dist: flake8==7.0.0; extra == "tests"
|
26
|
+
Requires-Dist: gitchangelog==3.0.4; extra == "tests"
|
27
|
+
Requires-Dist: mkdocs==1.5.3; extra == "tests"
|
28
|
+
Requires-Dist: mypy==1.9.0; extra == "tests"
|
29
|
+
Requires-Dist: pydocstyle==6.3.0; extra == "tests"
|
30
|
+
Requires-Dist: pylint==3.3.6; extra == "tests"
|
31
|
+
Requires-Dist: pylama==8.4.1; extra == "tests"
|
32
|
+
Requires-Dist: pytest-cov==6.1.1; extra == "tests"
|
33
|
+
Requires-Dist: pytest-profiling==1.7.0; extra == "tests"
|
34
|
+
Requires-Dist: pytest-xdist==3.6.1; extra == "tests"
|
35
|
+
Requires-Dist: pytest==8.3.5; extra == "tests"
|
36
|
+
Requires-Dist: ruff==0.11.6; extra == "tests"
|
37
|
+
Requires-Dist: setuptools; extra == "tests"
|
38
|
+
Requires-Dist: termplotlib==0.3.9; extra == "tests"
|
39
|
+
Requires-Dist: tox; extra == "tests"
|
40
|
+
Requires-Dist: types-PyYAML==6.0.12.20240311; extra == "tests"
|
41
|
+
Requires-Dist: requests-mock==1.11.0; extra == "tests"
|
42
|
+
Requires-Dist: types-jsonschema; extra == "tests"
|
43
|
+
Requires-Dist: types-setuptools; extra == "tests"
|
44
|
+
Dynamic: license-file
|
45
|
+
|
46
|
+
<!-- [](https://codecov.io/gh/lursight/runem) -->
|
47
|
+
[](https://github.com/lursight/runem/actions/workflows/main.yml)
|
48
|
+
[](https://lursight.github.io/runem/)
|
49
|
+
|
50
|
+
# Run’em
|
51
|
+
|
52
|
+
**Your Blueprint of Commands. Your Engine of Parallel Execution.**
|
53
|
+
Run’em is your definitive blueprint of tasks and commands—instantly discoverable, effortlessly parallel, and elegantly extensible.
|
54
|
+
|
55
|
+
## Core Strengths
|
56
|
+
|
57
|
+
**Blueprint** - discover tasks and onboard smoothly\
|
58
|
+
**Parallel** - get results quicker\
|
59
|
+
**Simple** - define task easily\
|
60
|
+
**Extensible** - add tasks quickly\
|
61
|
+
**Filters** - powerful task selection\
|
62
|
+
**Reports** - see metrics on tasks
|
63
|
+
|
64
|
+
## Why Run’em?
|
65
|
+
- **Command Blueprint:** Instantly see and run all your tasks. No guesswork, no rummaging.
|
66
|
+
- **Effortless Parallelism:** Execute tasks side-by-side to obliterate downtime.
|
67
|
+
- **Simple YAML Declarations:** Define everything in one `.runem.yml`.
|
68
|
+
- **Extensible & Smart:** Adapt to monorepos, complex workflows, and evolving needs.
|
69
|
+
- **Discoverable by Design:** `runem --help` guides your team, new hires, or contributors to every defined command.
|
70
|
+
|
71
|
+
## Contents
|
72
|
+
- [Run’em](#runem)
|
73
|
+
- [Core Strengths](#core-strengths)
|
74
|
+
- [Why Run’em?](#why-runem)
|
75
|
+
- [Contents](#contents)
|
76
|
+
- [Highlights](#highlights)
|
77
|
+
- [Quick Start](#quick-start)
|
78
|
+
- [Basic Use](#basic-use)
|
79
|
+
- [Advanced Use](#advanced-use)
|
80
|
+
- [Help & Discovery](#help--discovery)
|
81
|
+
- [Troubleshooting](#troubleshooting)
|
82
|
+
- [Contribute & Support](#contribute--support)
|
83
|
+
- [About Run’em](#about-runem)
|
84
|
+
|
85
|
+
# Highlights
|
86
|
+
## Blueprint of Commands:
|
87
|
+
The blueprint (available via `--help`) gives you a manifest of all jobs and tasks in a
|
88
|
+
project. A single source of truth for all tasks.
|
89
|
+
## Parallel Execution:
|
90
|
+
Maximise speed with automatic concurrency. Runem tries to run all tasks as quickly as
|
91
|
+
possible, looking at resources, with dependencies. It is not yet a full
|
92
|
+
dependency-execution graph, but by version 1.0.0 it will be.
|
93
|
+
## Filtering:
|
94
|
+
Use powerful and flexible filtering. Select or excluded tasks by `tags`, `name` and
|
95
|
+
`phase`. Chose the task to be run based on your needs, right now.
|
96
|
+
|
97
|
+
You can also customise filtering by adding your own command `options`.
|
98
|
+
|
99
|
+
See `--tags`, `--not-tags`, `--jobs`, `--not-jobs`, `--phases` and `--not-phases`.
|
100
|
+
## Powerful Insights:** Understand what ran, how fast, and what failed.
|
101
|
+
**Quiet by Default:** Focus on what matters, and reveal detail only when needed.
|
102
|
+
|
103
|
+
# Quick Start
|
104
|
+
**Install:**
|
105
|
+
```bash
|
106
|
+
pip install runem
|
107
|
+
```
|
108
|
+
**Define a task:**
|
109
|
+
|
110
|
+
```yaml
|
111
|
+
`# .runem.yml
|
112
|
+
- job:
|
113
|
+
command: echo "hello world!"
|
114
|
+
```
|
115
|
+
|
116
|
+
**Run:**
|
117
|
+
|
118
|
+
```bash
|
119
|
+
runem
|
120
|
+
```
|
121
|
+
|
122
|
+
Run multiple commands in parallel, see timing, and keep output minimal. Need detail?
|
123
|
+
|
124
|
+
```bash
|
125
|
+
runem --verbose
|
126
|
+
```
|
127
|
+
|
128
|
+
[Quick Start Docs](https://lursight.github.io/runem/docs/quick_start.html)
|
129
|
+
|
130
|
+
# Basic Use
|
131
|
+
|
132
|
+
Get comfortable with typical workflows:
|
133
|
+
[Basic Use Docs](https://lursight.github.io/runem/docs/basic_use.html)
|
134
|
+
|
135
|
+
# Advanced Use
|
136
|
+
|
137
|
+
Scale up with multi-phase configs, filtered execution, and custom reporting:
|
138
|
+
[Advanced Configuration](https://lursight.github.io/runem/docs/configuration.html)
|
139
|
+
[Custom Reporting](https://lursight.github.io/runem/docs/reports.html)
|
140
|
+
|
141
|
+
# Help & Discovery
|
142
|
+
|
143
|
+
`runem --help` is your radar—instantly mapping out every available task:
|
144
|
+
[Help & Job Discovery](https://lursight.github.io/runem/docs/help_and_job_discovery.html)
|
145
|
+
|
146
|
+
# Troubleshooting
|
147
|
+
|
148
|
+
Swift solutions to common issues:
|
149
|
+
[Troubleshooting & Known Issues](https://lursight.github.io/runem/docs/troubleshooting_known_issues.html)
|
150
|
+
|
151
|
+
---
|
152
|
+
|
153
|
+
# Contribute & Support
|
154
|
+
|
155
|
+
Brought to you by [Lursight Ltd.](https://lursight.com) and an open community.
|
156
|
+
[CONTRIBUTING.md](CONTRIBUTING.md)
|
157
|
+
[❤️ Sponsor](https://github.com/sponsors/lursight/)
|
158
|
+
|
159
|
+
# About Run’em
|
160
|
+
|
161
|
+
Run’em exists to accelerate your team’s delivery and reduce complexity. Learn about our [Mission](https://lursight.github.io/runem/docs/mission.html).
|
162
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
runem/VERSION,sha256=ln2a-xATRmZxZvLnboGRC8GQSI19QdUMoAcunZLwDjI,6
|
2
|
+
runem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
+
runem/__main__.py,sha256=dsOiVZegpfK9JOs5n7UmbX5iwwbj7iFkEbLoVeEgAn4,136
|
4
|
+
runem/base.py,sha256=EZfR7FIlwEdU9Vfe47Wk2DOO8GQqpKxxLNKp6YHueZ4,316
|
5
|
+
runem/blocking_print.py,sha256=2nCvc10zXl1DRJldkruKthKjfmZKErcmxQzt3pjmN-c,2289
|
6
|
+
runem/cli.py,sha256=wEt_Jnumhl8SiOdKdSJzLkJpWv6n3_Odhi_HeIixr1k,134
|
7
|
+
runem/command_line.py,sha256=Q5xH7kGzc3YpIbGpU43B_pwKvp-LchSW7IgfGnf2Ke0,14437
|
8
|
+
runem/config.py,sha256=PWj4wj90WrRiGuXOUy6mpevJXQM57epDWG5NYDrGK2w,6049
|
9
|
+
runem/config_metadata.py,sha256=krDomUcADsAeUQrxwNmOS58eeaNIlqmhWIKWv8mUH4A,3300
|
10
|
+
runem/config_parse.py,sha256=d23dtmh4bd14R4odrZtIVTQFfnzxrRGdTHhfVAf-dbA,13843
|
11
|
+
runem/config_validate.py,sha256=gtatObD1qBkEK-0CJ2rJPT5A7EBTWE_9V_AiGZZ1FQI,1424
|
12
|
+
runem/files.py,sha256=59boeFvUANYOS-PllIjeKIht6lNINZ43WxahDg90oAc,4392
|
13
|
+
runem/hook_manager.py,sha256=H0TL3HCqU2mgKm_-dgCD7TsK5T1bLT4g7x6kpytMPhU,4350
|
14
|
+
runem/informative_dict.py,sha256=4UUE_RU6zEX1JFFlVUK5EMdmPdJ5ZOo5scU93fYi0iU,1831
|
15
|
+
runem/job.py,sha256=SX_uHaFxocFm2QT2hRTfAv7mADnMj2th85L_JzYwS-4,3440
|
16
|
+
runem/job_execute.py,sha256=Sn5v7KoyCOw2FH-bJaur_zYChwmvCXhmdZ692B3SZA8,4792
|
17
|
+
runem/job_filter.py,sha256=4KMjsI5-tiK0b90RTlivxm5Xdt0gWdRz30voqqL_ijI,5374
|
18
|
+
runem/job_runner_simple_command.py,sha256=iP5an6yixW8o4C0ZBtu6csb-oVK3Q62ZZgtHBmxlXaU,2428
|
19
|
+
runem/job_wrapper.py,sha256=q5GtopZ5vhSJ581rwU4-lF9KnbL3ZYgOC8fqaCnXD_g,983
|
20
|
+
runem/job_wrapper_python.py,sha256=os6BruA3bOqeXB0Jiwm20P5TyxlMb-wSILFtkccDN2s,4302
|
21
|
+
runem/log.py,sha256=MEGWEBeFs0YVkr_U9UXnl4Isqc5MvGbEn_I3fo-V35Q,1422
|
22
|
+
runem/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
23
|
+
runem/report.py,sha256=qiGu0PPcbeFh9KJHtFKjH_LQHDfYuDgLVbUA81fNsLI,9124
|
24
|
+
runem/run_command.py,sha256=jz-vP9yw3WDM_0mc5KrBpqFcASSQUFB9zz9u_le-m8A,7692
|
25
|
+
runem/runem.py,sha256=Lm0mg8oTe7pCvQVZob6KR6zq7G5xoMTjrCfhBlCQwZQ,13436
|
26
|
+
runem/runem_version.py,sha256=MbETwZO2Tb1Y3hX_OYZjKepEMKA1cjNvr-7Cqhz6e3s,271
|
27
|
+
runem/schema.yml,sha256=LmQVtVbziaH_Z3aaE5-njR7qPYTP8qqruNQt8rVfv5M,3720
|
28
|
+
runem/utils.py,sha256=MEYfox09rLvb6xmay_3rV1cWmdqMbhaAjOomYGNk15k,602
|
29
|
+
runem/yaml_utils.py,sha256=RyAvEp679JvavE0Kbs263Ofh8_tTXXHUdtblSeHovfU,554
|
30
|
+
runem/yaml_validation.py,sha256=j8vnufeV8FRwg15wbitL_QLP4nh25Rx1L_14Oc2puwU,877
|
31
|
+
runem/cli/initialise_options.py,sha256=91QjAHdfhUNI9nWVDnHAqNshxCXytXQfbsEaQo3FMLc,917
|
32
|
+
runem/types/__init__.py,sha256=0bWG7hE7VeqJ2oIu-xhrqQud8hcNp6WNbF3uMfT_n9g,314
|
33
|
+
runem/types/common.py,sha256=gPMSoJ3yRUYjHnoviRrpSg0gRwsGLFGWGpbTWkq4jX0,279
|
34
|
+
runem/types/errors.py,sha256=9A4V5qT3ofolqRxrqBI9i9jX3r60x8nQnQnt9w1Y3co,403
|
35
|
+
runem/types/filters.py,sha256=8R5fyMssN0ISGBilJhEtbdHFl6OP7uI51WKkB5SH6EA,255
|
36
|
+
runem/types/hooks.py,sha256=9Q5THuBEH0Asdx5cj0caNmO54RckwR0tT3AgRXFROhs,292
|
37
|
+
runem/types/options.py,sha256=y8_hyWYvhalC9-kZbvoDtxm0trZgyyGcswQqfuQy_pM,265
|
38
|
+
runem/types/runem_config.py,sha256=qG_bghm5Nr-ZTbaZbf1v8Fx447V-hgEvvRy5NZ3t-Io,5141
|
39
|
+
runem/types/types_jobs.py,sha256=99b2TLwBiqjOurxRWWU7E9BlphR0KketUUSqUD_Kh5c,4432
|
40
|
+
runem-0.7.0.dist-info/licenses/LICENSE,sha256=awOCsWJ58m_2kBQwBUGWejVqZm6wuRtCL2hi9rfa0X4,1211
|
41
|
+
scripts/test_hooks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
42
|
+
scripts/test_hooks/json_validators.py,sha256=N2FyWcpjWzfFGycXLo-ecNLJkxTFPPbqPfVBcJLBlb4,967
|
43
|
+
scripts/test_hooks/py.py,sha256=Nku44p6ZqJb5d9uo2bPfpeqf8g1LDHRDqL4ou0Y0G_k,10520
|
44
|
+
scripts/test_hooks/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
45
|
+
scripts/test_hooks/runem_hooks.py,sha256=FJMuDBEOz3dr9gBW3WW6yKbUJs_LFXb3klpqSzCAZRk,628
|
46
|
+
scripts/test_hooks/yarn.py,sha256=1QsG1rKAclpZoqp86ntkuvzYaYN4UkEvO0JhO2Kf5C8,1082
|
47
|
+
tests/cli/test_initialise_options.py,sha256=Ogwfqz39r2o1waXMqCC22OJsgZoLF2stwGVO5AZUc4s,3148
|
48
|
+
tests/data/help_output.3.10.txt,sha256=5TUpNITVL6pD5BpFAl-Orh3vkOpStveijZzvgJuI_sA,4280
|
49
|
+
tests/data/help_output.3.11.txt,sha256=ycrF-xKgdQ8qrWzkkR-vbHe7NulUTsCsS0_Gda8xYDs,4162
|
50
|
+
tests/test_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
51
|
+
tests/test_types/test_public_api.py,sha256=QHiwt7CetQur65JSbFRnOzQxhCJkX5MVLymHHVd_6yc,160
|
52
|
+
runem-0.7.0.dist-info/METADATA,sha256=MqlLB5gsFKqQbmmvieTPHUy3JNiSrEAnRq94gKdM6f8,5894
|
53
|
+
runem-0.7.0.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
|
54
|
+
runem-0.7.0.dist-info/entry_points.txt,sha256=nu0g_vBeuPihYtimbtlNusxWovylMppvJ8UxdJlJfvM,46
|
55
|
+
runem-0.7.0.dist-info/top_level.txt,sha256=NkdxkwLKNNhxItveR2KqNqTshTZ268m5D7SjJEmG4-Y,20
|
56
|
+
runem-0.7.0.dist-info/RECORD,,
|
scripts/test_hooks/py.py
CHANGED
@@ -9,7 +9,69 @@ from runem.run_command import RunCommandUnhandledError, run_command
|
|
9
9
|
from runem.types import FilePathList, JobKwargs, JobName, JobReturnData, Options
|
10
10
|
|
11
11
|
|
12
|
-
def
|
12
|
+
def _job_py_code_ruff_reformat(
|
13
|
+
**kwargs: typing.Any,
|
14
|
+
) -> None:
|
15
|
+
"""Runs python formatting code in serial order as one influences the other."""
|
16
|
+
label: JobName = kwargs["label"]
|
17
|
+
options: Options = kwargs["options"]
|
18
|
+
python_files: FilePathList = kwargs["file_list"]
|
19
|
+
|
20
|
+
# put into 'check' mode if requested on the command line
|
21
|
+
extra_args = []
|
22
|
+
if options["check-only"]:
|
23
|
+
extra_args.append("--check")
|
24
|
+
|
25
|
+
if not options["ruff"]:
|
26
|
+
# Do not run `ruff` if opted-out
|
27
|
+
return
|
28
|
+
|
29
|
+
# If ruff is enabled we do NOT run black etc. because ruff does that
|
30
|
+
# for us, faster and better.
|
31
|
+
ruff_format_cmd = [
|
32
|
+
"python3",
|
33
|
+
"-m",
|
34
|
+
"ruff",
|
35
|
+
"format",
|
36
|
+
*extra_args,
|
37
|
+
*python_files,
|
38
|
+
]
|
39
|
+
kwargs["label"] = f"{label} ruff"
|
40
|
+
run_command(cmd=ruff_format_cmd, **kwargs)
|
41
|
+
|
42
|
+
|
43
|
+
def _job_py_ruff_lint(
|
44
|
+
**kwargs: typing.Any,
|
45
|
+
) -> None:
|
46
|
+
"""Runs python formatting code in serial order as one influences the other."""
|
47
|
+
label: JobName = kwargs["label"]
|
48
|
+
options: Options = kwargs["options"]
|
49
|
+
python_files: FilePathList = kwargs["file_list"]
|
50
|
+
|
51
|
+
# try to auto-fix issues (one benefit of ruff over flake8 etc.)
|
52
|
+
extra_args = []
|
53
|
+
if options["fix"]:
|
54
|
+
extra_args.append("--fix")
|
55
|
+
|
56
|
+
if not options["ruff"]:
|
57
|
+
# Do not run `ruff` if opted-out
|
58
|
+
return
|
59
|
+
|
60
|
+
# If ruff is enabled we do NOT run black etc. because ruff does that
|
61
|
+
# for us, faster and better.
|
62
|
+
ruff_lint_cmd = [
|
63
|
+
"python3",
|
64
|
+
"-m",
|
65
|
+
"ruff",
|
66
|
+
"check",
|
67
|
+
*extra_args,
|
68
|
+
*python_files,
|
69
|
+
]
|
70
|
+
kwargs["label"] = f"{label} ruff"
|
71
|
+
run_command(cmd=ruff_lint_cmd, **kwargs)
|
72
|
+
|
73
|
+
|
74
|
+
def _job_py_code_reformat_deprecated(
|
13
75
|
**kwargs: Unpack[JobKwargs],
|
14
76
|
) -> None:
|
15
77
|
"""Runs python formatting code in serial order as one influences the other."""
|
runem-0.5.0.dist-info/METADATA
DELETED
@@ -1,164 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.1
|
2
|
-
Name: runem
|
3
|
-
Version: 0.5.0
|
4
|
-
Summary: Awesome runem created by lursight
|
5
|
-
Author: lursight
|
6
|
-
License: Specify your license here
|
7
|
-
Project-URL: Homepage, https://github.com/lursight/runem/
|
8
|
-
Keywords: example,runem
|
9
|
-
Classifier: Programming Language :: Python :: 3.7
|
10
|
-
Classifier: Programming Language :: Python :: 3.8
|
11
|
-
Classifier: Programming Language :: Python :: 3.9
|
12
|
-
Classifier: Programming Language :: Python :: 3.10
|
13
|
-
Classifier: Programming Language :: Python :: 3.11
|
14
|
-
Requires-Python: >=3.7
|
15
|
-
Description-Content-Type: text/markdown
|
16
|
-
License-File: LICENSE
|
17
|
-
Requires-Dist: packaging>=22.0
|
18
|
-
Requires-Dist: PyYAML>=5.0.0
|
19
|
-
Requires-Dist: rich>10.0.0
|
20
|
-
Requires-Dist: typing_extensions>3.0.0
|
21
|
-
Provides-Extra: tests
|
22
|
-
Requires-Dist: black==24.10.0; extra == "tests"
|
23
|
-
Requires-Dist: coverage==7.5; extra == "tests"
|
24
|
-
Requires-Dist: docformatter==1.7.5; extra == "tests"
|
25
|
-
Requires-Dist: flake8-bugbear==24.2.6; extra == "tests"
|
26
|
-
Requires-Dist: flake8==7.0.0; extra == "tests"
|
27
|
-
Requires-Dist: gitchangelog==3.0.4; extra == "tests"
|
28
|
-
Requires-Dist: isort==5.13.2; extra == "tests"
|
29
|
-
Requires-Dist: mkdocs==1.5.3; extra == "tests"
|
30
|
-
Requires-Dist: mypy==1.9.0; extra == "tests"
|
31
|
-
Requires-Dist: pydocstyle==6.3.0; extra == "tests"
|
32
|
-
Requires-Dist: pylint==3.1.0; extra == "tests"
|
33
|
-
Requires-Dist: pylama==8.4.1; extra == "tests"
|
34
|
-
Requires-Dist: pytest-cov==6.0.0; extra == "tests"
|
35
|
-
Requires-Dist: pytest-profiling==1.7.0; extra == "tests"
|
36
|
-
Requires-Dist: pytest-xdist==3.6.1; extra == "tests"
|
37
|
-
Requires-Dist: pytest==8.3.3; extra == "tests"
|
38
|
-
Requires-Dist: setuptools; extra == "tests"
|
39
|
-
Requires-Dist: termplotlib==0.3.9; extra == "tests"
|
40
|
-
Requires-Dist: tox; extra == "tests"
|
41
|
-
Requires-Dist: types-PyYAML==6.0.12.20240311; extra == "tests"
|
42
|
-
Requires-Dist: requests-mock==1.11.0; extra == "tests"
|
43
|
-
Requires-Dist: types-setuptools; extra == "tests"
|
44
|
-
|
45
|
-
<!-- [](https://codecov.io/gh/lursight/runem) -->
|
46
|
-
[](https://github.com/lursight/runem/actions/workflows/main.yml)
|
47
|
-
[](https://lursight.github.io/runem/)
|
48
|
-
|
49
|
-
# Run'em: Accelerate Your Development Workflow
|
50
|
-
**Boost Efficiency and Save Time**
|
51
|
-
Runem is a flexible, multi-process tool designed to speed up your everyday tasks by running them in parallel. Whether you're testing, linting, or deploying, runem helps you work smarter and faster.
|
52
|
-
|
53
|
-
## Why Choose Run'em?
|
54
|
-
- **Streamlined Task Management**: Configure tasks with ease using declarative .runem.yml files.
|
55
|
-
- **Multiprocess Execution**: Run multiple tasks simultaneously, minimizing wall-clock time.
|
56
|
-
- **Optimized for Monorepos**: Supports multiple projects and task types, with easy filtering and configuration.
|
57
|
-
- **Detailed Reporting**: Get insights into task execution time and efficiency gains.
|
58
|
-
|
59
|
-
## Contents
|
60
|
-
- [Run'em: Accelerate Your Development Workflow](#runem-accelerate-your-development-workflow)
|
61
|
-
- [Why Choose Run'em?](#why-choose-runem)
|
62
|
-
- [Contents](#contents)
|
63
|
-
- [Features At A Glance:](#features-at-a-glance)
|
64
|
-
- [Using Run'em](#using-runem)
|
65
|
-
- [Installation](#installation)
|
66
|
-
- [Quick-start](#quick-start)
|
67
|
-
- [Basic quick-start](#basic-quick-start)
|
68
|
-
- [A more complete quick-start](#a-more-complete-quick-start)
|
69
|
-
- [Basic Use](#basic-use)
|
70
|
-
- [Advanced Use](#advanced-use)
|
71
|
-
- [Advanced configuration options](#advanced-configuration-options)
|
72
|
-
- [Custom reports](#custom-reports)
|
73
|
-
- [Help and job discovery](#help-and-job-discovery)
|
74
|
-
- [Troubleshooting](#troubleshooting)
|
75
|
-
- [Contributing to and supporting runem](#contributing-to-and-supporting-runem)
|
76
|
-
- [Development](#development)
|
77
|
-
- [Sponsor](#sponsor)
|
78
|
-
- [About runem](#about-runem)
|
79
|
-
|
80
|
-
|
81
|
-
# Features At A Glance:
|
82
|
-
- **Tagging**: Easily run specific job groups (e.g., lint, test, python).
|
83
|
-
- **Phases**: Organize tasks by phase (e.g., edit, test, deploy).
|
84
|
-
- **Configurable Options**: Customize how jobs are executed using simple options.
|
85
|
-
- **Declarative**: Jobs are define using simple YAML in [.runem.yml](https://lursight.github.io/runem/docs/configuration.html) .
|
86
|
-
|
87
|
-
# Using Run'em
|
88
|
-
|
89
|
-
## Installation
|
90
|
-
|
91
|
-
```bash
|
92
|
-
pip install runem
|
93
|
-
```
|
94
|
-
|
95
|
-
## Quick-start
|
96
|
-
|
97
|
-
## Basic quick-start
|
98
|
-
Create the following `.runem.yml` file at the root of your project:
|
99
|
-
|
100
|
-
```yml
|
101
|
-
- job:
|
102
|
-
command: echo "hello world!"
|
103
|
-
```
|
104
|
-
|
105
|
-
Then anywhere in your project run `runem` to see how and when that task is run, and how long it took:
|
106
|
-
```bash
|
107
|
-
runem
|
108
|
-
```
|
109
|
-
|
110
|
-
To see the actual log output you will need to use `--verbose` as `runem` hides anything that isn't important. Only failures and reports are considered important.
|
111
|
-
```bash
|
112
|
-
# Or, to see "hello world!", use --verbose
|
113
|
-
runem --verbose # add --verbose to see the actual output
|
114
|
-
```
|
115
|
-
|
116
|
-
To see how you can control your job use `--help`:
|
117
|
-
```bash
|
118
|
-
runem --help
|
119
|
-
```
|
120
|
-
|
121
|
-
### A more complete quick-start
|
122
|
-
|
123
|
-
See [quick-start docs](https://lursight.github.io/runem/docs/quick_start.html) for more quick-start tips.
|
124
|
-
|
125
|
-
## Basic Use
|
126
|
-
|
127
|
-
See [docs on basic use and use-cases](https://lursight.github.io/runem/docs/basic_use.html) for a comprehensive introduction.
|
128
|
-
|
129
|
-
## Advanced Use
|
130
|
-
|
131
|
-
### Advanced configuration options
|
132
|
-
See [configuration docs](https://lursight.github.io/runem/docs/configuration.html) for advanced configuration and use.
|
133
|
-
|
134
|
-
### Custom reports
|
135
|
-
See [reporting docs](https://lursight.github.io/runem/docs/reports.html) for more information on how reporting works.
|
136
|
-
|
137
|
-
|
138
|
-
# Help and job discovery
|
139
|
-
|
140
|
-
`--help` is designed to help your team discover what jobs and tasks they can automated. Read more at
|
141
|
-
[help and discovery docs](https://lursight.github.io/runem/docs/help_and_job_discovery.html).
|
142
|
-
|
143
|
-
# Troubleshooting
|
144
|
-
|
145
|
-
See [troubleshooting and known issues docs](https://lursight.github.io/runem/docs/troubleshooting_known_issues.html).
|
146
|
-
|
147
|
-
---
|
148
|
-
# Contributing to and supporting runem
|
149
|
-
|
150
|
-
Awesome runem created by lursight
|
151
|
-
|
152
|
-
## Development
|
153
|
-
|
154
|
-
Read the [CONTRIBUTING.md](CONTRIBUTING.md) file.
|
155
|
-
|
156
|
-
## Sponsor
|
157
|
-
|
158
|
-
[❤️ Sponsor this project](https://github.com/sponsors/lursight/)
|
159
|
-
|
160
|
-
# About runem
|
161
|
-
The runem mission is to improve developer velocity at
|
162
|
-
[Lursight Ltd.](https://lursight.com), read more about the runem
|
163
|
-
[mission](https://lursight.github.io/runem/docs/mission.html).
|
164
|
-
|
runem-0.5.0.dist-info/RECORD
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
runem/VERSION,sha256=oK1QZAE5pST4ZZEVcUW_HUZ06pwGW_6iFVjw97BEMMg,6
|
2
|
-
runem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
-
runem/__main__.py,sha256=dsOiVZegpfK9JOs5n7UmbX5iwwbj7iFkEbLoVeEgAn4,136
|
4
|
-
runem/base.py,sha256=EZfR7FIlwEdU9Vfe47Wk2DOO8GQqpKxxLNKp6YHueZ4,316
|
5
|
-
runem/blocking_print.py,sha256=R3c3HSnRMPCf7ykDXdKG2hKH4CzbBaxmOfP3xEU_wEI,1919
|
6
|
-
runem/cli.py,sha256=wEt_Jnumhl8SiOdKdSJzLkJpWv6n3_Odhi_HeIixr1k,134
|
7
|
-
runem/command_line.py,sha256=qkZFCCq9hUl6RO398SJzoigv8di5jGw2sdNwgTVBdd8,14474
|
8
|
-
runem/config.py,sha256=UiEU0Jyg5qjrNStvasWYjMOABQHhpZjbPiX3-sH_CMg,5969
|
9
|
-
runem/config_metadata.py,sha256=krDomUcADsAeUQrxwNmOS58eeaNIlqmhWIKWv8mUH4A,3300
|
10
|
-
runem/config_parse.py,sha256=zXQ4rpj-igQufB5JtTsI1mOE_gBTdBcI2hI6HWU28gg,13830
|
11
|
-
runem/files.py,sha256=59boeFvUANYOS-PllIjeKIht6lNINZ43WxahDg90oAc,4392
|
12
|
-
runem/hook_manager.py,sha256=H0TL3HCqU2mgKm_-dgCD7TsK5T1bLT4g7x6kpytMPhU,4350
|
13
|
-
runem/informative_dict.py,sha256=U7p9z78UwOT4TAfng1iDXCEyeYz6C-XZlx9Z1pWNVrI,1548
|
14
|
-
runem/job.py,sha256=NOdRQnGePPyYdmIR_6JKVFzp9nbgNGetpE13bHEHaf4,3442
|
15
|
-
runem/job_execute.py,sha256=-76IJI0PDU_XdQiDxTKUfOHEno9pixxQb_zi58rFumo,4702
|
16
|
-
runem/job_filter.py,sha256=7vgG4YWJ9gyGBFjV7QbSojG5ofYoszAmxXx9HnMLkHo,5384
|
17
|
-
runem/job_runner_simple_command.py,sha256=iP5an6yixW8o4C0ZBtu6csb-oVK3Q62ZZgtHBmxlXaU,2428
|
18
|
-
runem/job_wrapper.py,sha256=q5GtopZ5vhSJ581rwU4-lF9KnbL3ZYgOC8fqaCnXD_g,983
|
19
|
-
runem/job_wrapper_python.py,sha256=rx7J_N-JXs8GgMq7Sla7B9s_ZAfofKUhEnzgMcq_bts,4303
|
20
|
-
runem/log.py,sha256=dIrocigvIJs1ZGkAzTogXkAK-0ZW3q5FkjpDgLdeW-E,630
|
21
|
-
runem/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
-
runem/report.py,sha256=IedwW9mmJfGC6vKQdKDHQH5eoiYzTWHaaD4a3J4e_Pc,9020
|
23
|
-
runem/run_command.py,sha256=Egl_j4bJ9mwi2JEFCsl0W6WH2IRgIdpMN7qdj8voClQ,6386
|
24
|
-
runem/runem.py,sha256=9QZgmXNPXOscRRLWDgOcPZ0lYRcG7jOog1M_o3MXZbs,13667
|
25
|
-
runem/runem_version.py,sha256=MbETwZO2Tb1Y3hX_OYZjKepEMKA1cjNvr-7Cqhz6e3s,271
|
26
|
-
runem/utils.py,sha256=3N_kel9LsriiMq7kOjT14XhfxUOgz4hdDg97wlLKm3U,221
|
27
|
-
runem/cli/initialise_options.py,sha256=zx_EduWQk7yGBr3XUNrffHCSInPv05edFItHLnlo9dk,918
|
28
|
-
runem/types/__init__.py,sha256=6TzF4KV9tDGuDTr2qAXmWWkfDU52WuVlQ8Hcz48aYDk,286
|
29
|
-
runem/types/common.py,sha256=gPMSoJ3yRUYjHnoviRrpSg0gRwsGLFGWGpbTWkq4jX0,279
|
30
|
-
runem/types/errors.py,sha256=rbM5BA6UhY1X7Q0OZLUNsG7JXAjgNFTG5KQuqPNuZm8,103
|
31
|
-
runem/types/filters.py,sha256=8R5fyMssN0ISGBilJhEtbdHFl6OP7uI51WKkB5SH6EA,255
|
32
|
-
runem/types/hooks.py,sha256=lgrv5QAuHCEzr5dXDj4-azNcs63addY9zdrGWj5zv_s,292
|
33
|
-
runem/types/options.py,sha256=y8_hyWYvhalC9-kZbvoDtxm0trZgyyGcswQqfuQy_pM,265
|
34
|
-
runem/types/runem_config.py,sha256=qG_bghm5Nr-ZTbaZbf1v8Fx447V-hgEvvRy5NZ3t-Io,5141
|
35
|
-
runem/types/types_jobs.py,sha256=wqiiBmRIJDbGlKcfOqewHGKx350w0p4_7pysMm7xGmo,4906
|
36
|
-
scripts/test_hooks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
|
-
scripts/test_hooks/json_validators.py,sha256=N2FyWcpjWzfFGycXLo-ecNLJkxTFPPbqPfVBcJLBlb4,967
|
38
|
-
scripts/test_hooks/py.py,sha256=YUbwNny7NPmv2bY7k7YcbJ-jRcnNfjQajE9Hn1MLaBc,8821
|
39
|
-
scripts/test_hooks/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
40
|
-
scripts/test_hooks/runem_hooks.py,sha256=FJMuDBEOz3dr9gBW3WW6yKbUJs_LFXb3klpqSzCAZRk,628
|
41
|
-
scripts/test_hooks/yarn.py,sha256=1QsG1rKAclpZoqp86ntkuvzYaYN4UkEvO0JhO2Kf5C8,1082
|
42
|
-
tests/cli/test_initialise_options.py,sha256=Ogwfqz39r2o1waXMqCC22OJsgZoLF2stwGVO5AZUc4s,3148
|
43
|
-
tests/data/help_output.3.10.txt,sha256=5TUpNITVL6pD5BpFAl-Orh3vkOpStveijZzvgJuI_sA,4280
|
44
|
-
tests/data/help_output.3.11.txt,sha256=ycrF-xKgdQ8qrWzkkR-vbHe7NulUTsCsS0_Gda8xYDs,4162
|
45
|
-
tests/test_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
46
|
-
tests/test_types/test_public_api.py,sha256=QHiwt7CetQur65JSbFRnOzQxhCJkX5MVLymHHVd_6yc,160
|
47
|
-
runem-0.5.0.dist-info/LICENSE,sha256=awOCsWJ58m_2kBQwBUGWejVqZm6wuRtCL2hi9rfa0X4,1211
|
48
|
-
runem-0.5.0.dist-info/METADATA,sha256=9isKJbNwlMOME8i2ipmSBySxD-Om_tVIp0ji_3WJeRM,6215
|
49
|
-
runem-0.5.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
50
|
-
runem-0.5.0.dist-info/entry_points.txt,sha256=nu0g_vBeuPihYtimbtlNusxWovylMppvJ8UxdJlJfvM,46
|
51
|
-
runem-0.5.0.dist-info/top_level.txt,sha256=NkdxkwLKNNhxItveR2KqNqTshTZ268m5D7SjJEmG4-Y,20
|
52
|
-
runem-0.5.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|