rhylthyme-cli-runner 0.1.0a0__tar.gz

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.
Files changed (23) hide show
  1. rhylthyme_cli_runner-0.1.0a0/PKG-INFO +268 -0
  2. rhylthyme_cli_runner-0.1.0a0/README.md +209 -0
  3. rhylthyme_cli_runner-0.1.0a0/setup.cfg +4 -0
  4. rhylthyme_cli_runner-0.1.0a0/setup.py +89 -0
  5. rhylthyme_cli_runner-0.1.0a0/src/rhylthyme_cli_runner/__init__.py +15 -0
  6. rhylthyme_cli_runner-0.1.0a0/src/rhylthyme_cli_runner/cli.py +273 -0
  7. rhylthyme_cli_runner-0.1.0a0/src/rhylthyme_cli_runner/environment_icons.py +258 -0
  8. rhylthyme_cli_runner-0.1.0a0/src/rhylthyme_cli_runner/environment_loader.py +293 -0
  9. rhylthyme_cli_runner-0.1.0a0/src/rhylthyme_cli_runner/environment_schemas.py +443 -0
  10. rhylthyme_cli_runner-0.1.0a0/src/rhylthyme_cli_runner/program_planner.py +871 -0
  11. rhylthyme_cli_runner-0.1.0a0/src/rhylthyme_cli_runner/program_runner.py +2257 -0
  12. rhylthyme_cli_runner-0.1.0a0/src/rhylthyme_cli_runner/validate_program.py +457 -0
  13. rhylthyme_cli_runner-0.1.0a0/src/rhylthyme_cli_runner.egg-info/PKG-INFO +268 -0
  14. rhylthyme_cli_runner-0.1.0a0/src/rhylthyme_cli_runner.egg-info/SOURCES.txt +21 -0
  15. rhylthyme_cli_runner-0.1.0a0/src/rhylthyme_cli_runner.egg-info/dependency_links.txt +1 -0
  16. rhylthyme_cli_runner-0.1.0a0/src/rhylthyme_cli_runner.egg-info/entry_points.txt +2 -0
  17. rhylthyme_cli_runner-0.1.0a0/src/rhylthyme_cli_runner.egg-info/requires.txt +25 -0
  18. rhylthyme_cli_runner-0.1.0a0/src/rhylthyme_cli_runner.egg-info/top_level.txt +1 -0
  19. rhylthyme_cli_runner-0.1.0a0/tests/test_cli.py +235 -0
  20. rhylthyme_cli_runner-0.1.0a0/tests/test_example_validation.py +235 -0
  21. rhylthyme_cli_runner-0.1.0a0/tests/test_examples_integration.py +677 -0
  22. rhylthyme_cli_runner-0.1.0a0/tests/test_program_runner.py +327 -0
  23. rhylthyme_cli_runner-0.1.0a0/tests/test_validate_examples_ci.py +121 -0
@@ -0,0 +1,268 @@
1
+ Metadata-Version: 2.4
2
+ Name: rhylthyme-cli-runner
3
+ Version: 0.1.0a0
4
+ Summary: CLI runner for Rhylthyme real-time program schedules
5
+ Home-page: https://github.com/rhylthyme/rhylthyme-cli-runner
6
+ Author: Rhylthyme Team
7
+ Author-email: team@rhylthyme.org
8
+ Project-URL: Bug Reports, https://github.com/rhylthyme/rhylthyme-cli-runner/issues
9
+ Project-URL: Source, https://github.com/rhylthyme/rhylthyme-cli-runner
10
+ Project-URL: Documentation, https://github.com/rhylthyme/rhylthyme-cli-runner#readme
11
+ Keywords: real-time,scheduling,logistics,cli,validation
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: Apache Software License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Topic :: System :: Distributed Computing
23
+ Requires-Python: >=3.8
24
+ Description-Content-Type: text/markdown
25
+ Requires-Dist: click>=8.0.0
26
+ Requires-Dist: jsonschema>=4.0.0
27
+ Requires-Dist: pyyaml>=6.0
28
+ Requires-Dist: colorama>=0.4.0
29
+ Requires-Dist: rhylthyme-spec>=0.1.0-alpha
30
+ Provides-Extra: dev
31
+ Requires-Dist: pytest>=6.0.0; extra == "dev"
32
+ Requires-Dist: pytest-cov>=2.10.0; extra == "dev"
33
+ Requires-Dist: pytest-mock>=3.0.0; extra == "dev"
34
+ Requires-Dist: pytest-xdist>=2.0.0; extra == "dev"
35
+ Requires-Dist: black>=21.0.0; extra == "dev"
36
+ Requires-Dist: flake8>=3.8.0; extra == "dev"
37
+ Requires-Dist: isort>=5.0.0; extra == "dev"
38
+ Requires-Dist: mypy>=0.800; extra == "dev"
39
+ Requires-Dist: responses>=0.12.0; extra == "dev"
40
+ Requires-Dist: freezegun>=1.0.0; extra == "dev"
41
+ Provides-Extra: docs
42
+ Requires-Dist: sphinx>=4.0.0; extra == "docs"
43
+ Requires-Dist: sphinx-rtd-theme>=1.0.0; extra == "docs"
44
+ Provides-Extra: build
45
+ Requires-Dist: build>=0.7.0; extra == "build"
46
+ Requires-Dist: twine>=3.4.0; extra == "build"
47
+ Dynamic: author
48
+ Dynamic: author-email
49
+ Dynamic: classifier
50
+ Dynamic: description
51
+ Dynamic: description-content-type
52
+ Dynamic: home-page
53
+ Dynamic: keywords
54
+ Dynamic: project-url
55
+ Dynamic: provides-extra
56
+ Dynamic: requires-dist
57
+ Dynamic: requires-python
58
+ Dynamic: summary
59
+
60
+ # Rhylthyme CLI Runner
61
+
62
+ Command-line interface for validating and running Rhylthyme real-time program schedules.
63
+
64
+ ## Installation
65
+
66
+ ### From Source
67
+
68
+ ```bash
69
+ # Clone the repository
70
+ git clone https://github.com/rhylthyme/rhylthyme-cli-runner.git
71
+ cd rhylthyme-cli-runner
72
+
73
+ # Install the package
74
+ pip install -e .
75
+
76
+ # Or install with development dependencies
77
+ pip install -e ".[dev]"
78
+ ```
79
+
80
+ ### From PyPI (when published)
81
+
82
+ ```bash
83
+ pip install rhylthyme-cli-runner
84
+ ```
85
+
86
+ ## Quick Start
87
+
88
+ The Rhylthyme CLI provides commands for working with real-time program schedules defined using the Rhylthyme JSON or YAML schema.
89
+
90
+ ### Validate a Program
91
+
92
+ Validate a program file against the schema to ensure it's properly formatted:
93
+
94
+ ```bash
95
+ # Validate a JSON or YAML program file
96
+ rhylthyme validate my_program.json
97
+
98
+ # Validate with verbose output
99
+ rhylthyme validate my_program.json --verbose
100
+
101
+ # Validate with JSON output for CI/scripting
102
+ rhylthyme validate my_program.json --json
103
+
104
+ # Validate in strict mode (requires all tasks in resourceConstraints)
105
+ rhylthyme validate my_program.json --strict
106
+ ```
107
+
108
+ ### Run a Program
109
+
110
+ Run a program with an interactive terminal UI for monitoring and controlling execution:
111
+
112
+ ```bash
113
+ # Run a program file
114
+ rhylthyme run examples/breakfast_schedule.json
115
+
116
+ # Run with automatic start (no manual trigger needed)
117
+ rhylthyme run examples/breakfast_schedule.json --auto-start
118
+
119
+ # Run with a different time scale (2x faster)
120
+ rhylthyme run examples/breakfast_schedule.json --time-scale 2.0
121
+
122
+ # Run with a specific environment
123
+ rhylthyme run examples/breakfast_schedule.json --environment kitchen
124
+
125
+ # Run without validation (if you're sure the file is valid)
126
+ rhylthyme run examples/breakfast_schedule.json --no-validate
127
+ ```
128
+
129
+ ### Optimize a Program
130
+
131
+ Create an optimized version of a program to reduce resource contention:
132
+
133
+ ```bash
134
+ # Optimize a program and save to new file
135
+ rhylthyme plan examples/breakfast_schedule.json optimized_breakfast.json
136
+
137
+ # Optimize with verbose output
138
+ rhylthyme plan examples/breakfast_schedule.json optimized_breakfast.json --verbose
139
+ ```
140
+
141
+ ### Work with Environments
142
+
143
+ List and validate environment catalogs:
144
+
145
+ ```bash
146
+ # List all available environments
147
+ rhylthyme environments
148
+
149
+ # List environments in JSON format
150
+ rhylthyme environments --format json
151
+
152
+ # Validate all environment files
153
+ rhylthyme validate-environments
154
+
155
+ # Show information about a specific environment type
156
+ rhylthyme environment-info kitchen
157
+ ```
158
+
159
+ ## Program File Examples
160
+
161
+ ### Simple Breakfast Schedule
162
+
163
+ ```json
164
+ {
165
+ "programId": "breakfast-schedule",
166
+ "name": "Breakfast Schedule",
167
+ "description": "Coordinated breakfast preparation",
168
+ "environmentType": "kitchen",
169
+ "startTrigger": {
170
+ "type": "manual"
171
+ },
172
+ "tracks": [
173
+ {
174
+ "trackId": "eggs",
175
+ "name": "Scrambled Eggs",
176
+ "steps": [
177
+ {
178
+ "stepId": "crack-eggs",
179
+ "name": "Crack and Whisk Eggs",
180
+ "startTrigger": {
181
+ "type": "programStart"
182
+ },
183
+ "duration": {
184
+ "type": "fixed",
185
+ "seconds": 60
186
+ }
187
+ }
188
+ ]
189
+ }
190
+ ],
191
+ "resourceConstraints": [
192
+ {
193
+ "task": "stove-burner",
194
+ "maxConcurrent": 2,
195
+ "description": "Maximum stove burners"
196
+ }
197
+ ],
198
+ "version": "1.0.0"
199
+ }
200
+ ```
201
+
202
+ ## Interactive UI Controls
203
+
204
+ When running a program, the interactive UI provides these controls:
205
+
206
+ - **Space**: Start/stop the program
207
+ - **Enter**: Trigger manual steps
208
+ - **Arrow keys**: Navigate between steps
209
+ - **q**: Quit the program
210
+ - **r**: Refresh the display
211
+ - **s**: Sort by different criteria
212
+
213
+ ## Command Reference
214
+
215
+ ### `rhylthyme validate`
216
+
217
+ Validates program files against the schema.
218
+
219
+ **Options:**
220
+ - `--schema PATH`: Path to schema file (default: built-in schema)
221
+ - `--verbose, -v`: Show detailed validation information
222
+
223
+ ### `rhylthyme run`
224
+
225
+ Runs programs with interactive terminal UI.
226
+
227
+ **Options:**
228
+ - `--schema PATH`: Path to schema file (default: built-in schema)
229
+ - `-e, --environment TEXT`: Environment ID to use
230
+ - `--time-scale FLOAT`: Time scale factor (default: 1.0)
231
+ - `--validate / --no-validate`: Validate before running (default: True)
232
+ - `--auto-start`: Automatically start without manual trigger
233
+
234
+ ### `rhylthyme plan`
235
+
236
+ Optimizes program schedules to reduce resource contention.
237
+
238
+ **Options:**
239
+ - `--verbose, -v`: Show detailed planning information
240
+
241
+ ### `rhylthyme environments`
242
+
243
+ Lists available environment catalogs.
244
+
245
+ **Options:**
246
+ - `--format, -f`: Output format (table, json, yaml)
247
+
248
+ ### `rhylthyme validate-environments`
249
+
250
+ Validates environment catalog files.
251
+
252
+ **Options:**
253
+ - `--environments-dir PATH`: Directory containing environment files
254
+ - `--verbose, -v`: Show detailed validation information
255
+
256
+ ### `rhylthyme environment-info`
257
+
258
+ Shows information about a specific environment type.
259
+
260
+ ## Development
261
+
262
+ 1. Clone the repository
263
+ 2. Install development dependencies: `pip install -e ".[dev]"`
264
+ 3. Run tests: `pytest`
265
+
266
+ ## License
267
+
268
+ Apache License 2.0
@@ -0,0 +1,209 @@
1
+ # Rhylthyme CLI Runner
2
+
3
+ Command-line interface for validating and running Rhylthyme real-time program schedules.
4
+
5
+ ## Installation
6
+
7
+ ### From Source
8
+
9
+ ```bash
10
+ # Clone the repository
11
+ git clone https://github.com/rhylthyme/rhylthyme-cli-runner.git
12
+ cd rhylthyme-cli-runner
13
+
14
+ # Install the package
15
+ pip install -e .
16
+
17
+ # Or install with development dependencies
18
+ pip install -e ".[dev]"
19
+ ```
20
+
21
+ ### From PyPI (when published)
22
+
23
+ ```bash
24
+ pip install rhylthyme-cli-runner
25
+ ```
26
+
27
+ ## Quick Start
28
+
29
+ The Rhylthyme CLI provides commands for working with real-time program schedules defined using the Rhylthyme JSON or YAML schema.
30
+
31
+ ### Validate a Program
32
+
33
+ Validate a program file against the schema to ensure it's properly formatted:
34
+
35
+ ```bash
36
+ # Validate a JSON or YAML program file
37
+ rhylthyme validate my_program.json
38
+
39
+ # Validate with verbose output
40
+ rhylthyme validate my_program.json --verbose
41
+
42
+ # Validate with JSON output for CI/scripting
43
+ rhylthyme validate my_program.json --json
44
+
45
+ # Validate in strict mode (requires all tasks in resourceConstraints)
46
+ rhylthyme validate my_program.json --strict
47
+ ```
48
+
49
+ ### Run a Program
50
+
51
+ Run a program with an interactive terminal UI for monitoring and controlling execution:
52
+
53
+ ```bash
54
+ # Run a program file
55
+ rhylthyme run examples/breakfast_schedule.json
56
+
57
+ # Run with automatic start (no manual trigger needed)
58
+ rhylthyme run examples/breakfast_schedule.json --auto-start
59
+
60
+ # Run with a different time scale (2x faster)
61
+ rhylthyme run examples/breakfast_schedule.json --time-scale 2.0
62
+
63
+ # Run with a specific environment
64
+ rhylthyme run examples/breakfast_schedule.json --environment kitchen
65
+
66
+ # Run without validation (if you're sure the file is valid)
67
+ rhylthyme run examples/breakfast_schedule.json --no-validate
68
+ ```
69
+
70
+ ### Optimize a Program
71
+
72
+ Create an optimized version of a program to reduce resource contention:
73
+
74
+ ```bash
75
+ # Optimize a program and save to new file
76
+ rhylthyme plan examples/breakfast_schedule.json optimized_breakfast.json
77
+
78
+ # Optimize with verbose output
79
+ rhylthyme plan examples/breakfast_schedule.json optimized_breakfast.json --verbose
80
+ ```
81
+
82
+ ### Work with Environments
83
+
84
+ List and validate environment catalogs:
85
+
86
+ ```bash
87
+ # List all available environments
88
+ rhylthyme environments
89
+
90
+ # List environments in JSON format
91
+ rhylthyme environments --format json
92
+
93
+ # Validate all environment files
94
+ rhylthyme validate-environments
95
+
96
+ # Show information about a specific environment type
97
+ rhylthyme environment-info kitchen
98
+ ```
99
+
100
+ ## Program File Examples
101
+
102
+ ### Simple Breakfast Schedule
103
+
104
+ ```json
105
+ {
106
+ "programId": "breakfast-schedule",
107
+ "name": "Breakfast Schedule",
108
+ "description": "Coordinated breakfast preparation",
109
+ "environmentType": "kitchen",
110
+ "startTrigger": {
111
+ "type": "manual"
112
+ },
113
+ "tracks": [
114
+ {
115
+ "trackId": "eggs",
116
+ "name": "Scrambled Eggs",
117
+ "steps": [
118
+ {
119
+ "stepId": "crack-eggs",
120
+ "name": "Crack and Whisk Eggs",
121
+ "startTrigger": {
122
+ "type": "programStart"
123
+ },
124
+ "duration": {
125
+ "type": "fixed",
126
+ "seconds": 60
127
+ }
128
+ }
129
+ ]
130
+ }
131
+ ],
132
+ "resourceConstraints": [
133
+ {
134
+ "task": "stove-burner",
135
+ "maxConcurrent": 2,
136
+ "description": "Maximum stove burners"
137
+ }
138
+ ],
139
+ "version": "1.0.0"
140
+ }
141
+ ```
142
+
143
+ ## Interactive UI Controls
144
+
145
+ When running a program, the interactive UI provides these controls:
146
+
147
+ - **Space**: Start/stop the program
148
+ - **Enter**: Trigger manual steps
149
+ - **Arrow keys**: Navigate between steps
150
+ - **q**: Quit the program
151
+ - **r**: Refresh the display
152
+ - **s**: Sort by different criteria
153
+
154
+ ## Command Reference
155
+
156
+ ### `rhylthyme validate`
157
+
158
+ Validates program files against the schema.
159
+
160
+ **Options:**
161
+ - `--schema PATH`: Path to schema file (default: built-in schema)
162
+ - `--verbose, -v`: Show detailed validation information
163
+
164
+ ### `rhylthyme run`
165
+
166
+ Runs programs with interactive terminal UI.
167
+
168
+ **Options:**
169
+ - `--schema PATH`: Path to schema file (default: built-in schema)
170
+ - `-e, --environment TEXT`: Environment ID to use
171
+ - `--time-scale FLOAT`: Time scale factor (default: 1.0)
172
+ - `--validate / --no-validate`: Validate before running (default: True)
173
+ - `--auto-start`: Automatically start without manual trigger
174
+
175
+ ### `rhylthyme plan`
176
+
177
+ Optimizes program schedules to reduce resource contention.
178
+
179
+ **Options:**
180
+ - `--verbose, -v`: Show detailed planning information
181
+
182
+ ### `rhylthyme environments`
183
+
184
+ Lists available environment catalogs.
185
+
186
+ **Options:**
187
+ - `--format, -f`: Output format (table, json, yaml)
188
+
189
+ ### `rhylthyme validate-environments`
190
+
191
+ Validates environment catalog files.
192
+
193
+ **Options:**
194
+ - `--environments-dir PATH`: Directory containing environment files
195
+ - `--verbose, -v`: Show detailed validation information
196
+
197
+ ### `rhylthyme environment-info`
198
+
199
+ Shows information about a specific environment type.
200
+
201
+ ## Development
202
+
203
+ 1. Clone the repository
204
+ 2. Install development dependencies: `pip install -e ".[dev]"`
205
+ 3. Run tests: `pytest`
206
+
207
+ ## License
208
+
209
+ Apache License 2.0
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Setup script for Rhylthyme CLI Runner
4
+ """
5
+
6
+ from setuptools import setup, find_packages
7
+ import os
8
+
9
+ # Read the README file
10
+ def read_readme():
11
+ readme_path = os.path.join(os.path.dirname(__file__), 'README.md')
12
+ if os.path.exists(readme_path):
13
+ with open(readme_path, 'r', encoding='utf-8') as f:
14
+ return f.read()
15
+ return "Rhylthyme CLI Runner - Command-line interface for running and validating Rhylthyme programs"
16
+
17
+ setup(
18
+ name="rhylthyme-cli-runner",
19
+ version="0.1.0-alpha",
20
+ description="CLI runner for Rhylthyme real-time program schedules",
21
+ long_description=read_readme(),
22
+ long_description_content_type="text/markdown",
23
+ author="Rhylthyme Team",
24
+ author_email="team@rhylthyme.org",
25
+ url="https://github.com/rhylthyme/rhylthyme-cli-runner",
26
+ packages=find_packages(where="src"),
27
+ package_dir={"": "src"},
28
+ install_requires=[
29
+ "click>=8.0.0",
30
+ "jsonschema>=4.0.0",
31
+ "pyyaml>=6.0",
32
+ "colorama>=0.4.0",
33
+ "rhylthyme-spec>=0.1.0-alpha",
34
+ ],
35
+ extras_require={
36
+ "dev": [
37
+ # Testing framework
38
+ "pytest>=6.0.0",
39
+ "pytest-cov>=2.10.0",
40
+ "pytest-mock>=3.0.0",
41
+ "pytest-xdist>=2.0.0", # Parallel test execution
42
+
43
+ # Code quality
44
+ "black>=21.0.0",
45
+ "flake8>=3.8.0",
46
+ "isort>=5.0.0",
47
+
48
+ # Type checking
49
+ "mypy>=0.800",
50
+
51
+ # Testing utilities
52
+ "responses>=0.12.0", # Mock HTTP responses
53
+ "freezegun>=1.0.0", # Mock datetime
54
+ ],
55
+ "docs": [
56
+ "sphinx>=4.0.0",
57
+ "sphinx-rtd-theme>=1.0.0",
58
+ ],
59
+ "build": [
60
+ "build>=0.7.0",
61
+ "twine>=3.4.0",
62
+ ],
63
+ },
64
+ entry_points={
65
+ "console_scripts": [
66
+ "rhylthyme=rhylthyme_cli_runner.cli:main",
67
+ ],
68
+ },
69
+ python_requires=">=3.8",
70
+ classifiers=[
71
+ "Development Status :: 3 - Alpha",
72
+ "Intended Audience :: Developers",
73
+ "License :: OSI Approved :: Apache Software License",
74
+ "Operating System :: OS Independent",
75
+ "Programming Language :: Python :: 3",
76
+ "Programming Language :: Python :: 3.8",
77
+ "Programming Language :: Python :: 3.9",
78
+ "Programming Language :: Python :: 3.10",
79
+ "Programming Language :: Python :: 3.11",
80
+ "Topic :: Software Development :: Libraries :: Python Modules",
81
+ "Topic :: System :: Distributed Computing",
82
+ ],
83
+ keywords="real-time, scheduling, logistics, cli, validation",
84
+ project_urls={
85
+ "Bug Reports": "https://github.com/rhylthyme/rhylthyme-cli-runner/issues",
86
+ "Source": "https://github.com/rhylthyme/rhylthyme-cli-runner",
87
+ "Documentation": "https://github.com/rhylthyme/rhylthyme-cli-runner#readme",
88
+ },
89
+ )
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Rhylthyme CLI Runner Package
4
+
5
+ This package provides the command-line interface for running and validating
6
+ Rhylthyme real-time program schedules.
7
+ """
8
+
9
+ __version__ = "0.1.0-alpha"
10
+ __author__ = "Rhylthyme Team"
11
+ __description__ = "CLI runner for Rhylthyme real-time program schedules"
12
+
13
+ from .cli import cli, main
14
+
15
+ __all__ = ['cli', 'main']