rushti 2.0.0__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.
- rushti-2.0.0/LICENSE +21 -0
- rushti-2.0.0/PKG-INFO +168 -0
- rushti-2.0.0/README.md +126 -0
- rushti-2.0.0/pyproject.toml +125 -0
- rushti-2.0.0/setup.cfg +4 -0
- rushti-2.0.0/src/rushti/__init__.py +33 -0
- rushti-2.0.0/src/rushti/checkpoint.py +642 -0
- rushti-2.0.0/src/rushti/cli.py +1329 -0
- rushti-2.0.0/src/rushti/commands.py +2025 -0
- rushti-2.0.0/src/rushti/contention_analyzer.py +1012 -0
- rushti-2.0.0/src/rushti/dag.py +421 -0
- rushti-2.0.0/src/rushti/dashboard.py +1595 -0
- rushti-2.0.0/src/rushti/db_admin.py +774 -0
- rushti-2.0.0/src/rushti/exclusive.py +316 -0
- rushti-2.0.0/src/rushti/execution.py +713 -0
- rushti-2.0.0/src/rushti/logging.py +353 -0
- rushti-2.0.0/src/rushti/messages.py +74 -0
- rushti-2.0.0/src/rushti/optimization_report.py +1053 -0
- rushti-2.0.0/src/rushti/optimizer.py +423 -0
- rushti-2.0.0/src/rushti/parsing.py +413 -0
- rushti-2.0.0/src/rushti/settings.py +436 -0
- rushti-2.0.0/src/rushti/stats.py +846 -0
- rushti-2.0.0/src/rushti/task.py +151 -0
- rushti-2.0.0/src/rushti/taskfile.py +710 -0
- rushti-2.0.0/src/rushti/taskfile_ops.py +1222 -0
- rushti-2.0.0/src/rushti/templates/__init__.py +1 -0
- rushti-2.0.0/src/rushti/templates/visualization.html +1054 -0
- rushti-2.0.0/src/rushti/tm1_build.py +651 -0
- rushti-2.0.0/src/rushti/tm1_integration.py +520 -0
- rushti-2.0.0/src/rushti/tm1_objects.py +776 -0
- rushti-2.0.0/src/rushti/utils.py +166 -0
- rushti-2.0.0/src/rushti/visualization_template.py +1067 -0
- rushti-2.0.0/src/rushti.egg-info/PKG-INFO +168 -0
- rushti-2.0.0/src/rushti.egg-info/SOURCES.txt +36 -0
- rushti-2.0.0/src/rushti.egg-info/dependency_links.txt +1 -0
- rushti-2.0.0/src/rushti.egg-info/entry_points.txt +2 -0
- rushti-2.0.0/src/rushti.egg-info/requires.txt +14 -0
- rushti-2.0.0/src/rushti.egg-info/top_level.txt +1 -0
rushti-2.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2018 Marius Wirtz
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
rushti-2.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: rushti
|
|
3
|
+
Version: 2.0.0
|
|
4
|
+
Summary: RushTI - Parallel TM1 TurboIntegrator Process Execution
|
|
5
|
+
Author-email: nicolasbisurgi <nbisurgi@cubewise.com>, Marius Wirtz <mwirtz@cubewise.com>
|
|
6
|
+
Maintainer: Cubewise CODE
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://cubewise-code.github.io/rushti/
|
|
9
|
+
Project-URL: Documentation, https://cubewise-code.github.io/rushti/docs/
|
|
10
|
+
Project-URL: Repository, https://github.com/cubewise-code/rushti
|
|
11
|
+
Project-URL: Issues, https://github.com/cubewise-code/rushti/issues
|
|
12
|
+
Project-URL: Changelog, https://github.com/cubewise-code/rushti/releases
|
|
13
|
+
Keywords: TM1,Planning Analytics,TM1Py,TurboIntegrator,orchestration,automation,ETL
|
|
14
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Intended Audience :: System Administrators
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Topic :: Database
|
|
24
|
+
Classifier: Topic :: System :: Systems Administration
|
|
25
|
+
Requires-Python: >=3.9
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Requires-Dist: TM1py>=2.0.0
|
|
29
|
+
Requires-Dist: keyring>=25.7.0
|
|
30
|
+
Requires-Dist: chardet>=5.2.0
|
|
31
|
+
Requires-Dist: pandas>=2.0.0
|
|
32
|
+
Provides-Extra: dev
|
|
33
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
34
|
+
Requires-Dist: pytest-asyncio; extra == "dev"
|
|
35
|
+
Requires-Dist: pytest-cov; extra == "dev"
|
|
36
|
+
Requires-Dist: pyinstaller>=5.0.0; extra == "dev"
|
|
37
|
+
Requires-Dist: pre-commit; extra == "dev"
|
|
38
|
+
Requires-Dist: black>=24.10.0; extra == "dev"
|
|
39
|
+
Requires-Dist: ruff>=0.8.0; extra == "dev"
|
|
40
|
+
Requires-Dist: mypy; extra == "dev"
|
|
41
|
+
Dynamic: license-file
|
|
42
|
+
|
|
43
|
+
<p align="center">
|
|
44
|
+
<img src="https://raw.githubusercontent.com/cubewise-code/rushti/rushti2dot0/docs/assets/images/rushti/RushTi2026_blue.svg" alt="RushTI" width="400" />
|
|
45
|
+
</p>
|
|
46
|
+
|
|
47
|
+
<p align="center">
|
|
48
|
+
<strong>Parallel TI execution engine for IBM Planning Analytics</strong>
|
|
49
|
+
</p>
|
|
50
|
+
|
|
51
|
+
<p align="center">
|
|
52
|
+
<a href="https://pypi.org/project/rushti/"><img src="https://img.shields.io/pypi/v/rushti?color=blue" alt="PyPI"></a>
|
|
53
|
+
<a href="https://pypi.org/project/rushti/"><img src="https://img.shields.io/pypi/pyversions/rushti" alt="Python"></a>
|
|
54
|
+
<a href="https://github.com/cubewise-code/rushti/blob/master/LICENSE"><img src="https://img.shields.io/github/license/cubewise-code/rushti" alt="License"></a>
|
|
55
|
+
</p>
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
RushTI transforms sequential TurboIntegrator execution into intelligent, parallel workflows. Define task dependencies as a DAG, and RushTI schedules them across multiple workers — starting each task the moment its predecessors complete.
|
|
60
|
+
|
|
61
|
+
## What's New in 2.0
|
|
62
|
+
|
|
63
|
+
- **DAG Execution** — True dependency-based scheduling replaces wait-based sequencing
|
|
64
|
+
- **JSON Task Files** — Structured format with metadata, settings, and stages
|
|
65
|
+
- **Self-Optimization** — EWMA-based learning reorders tasks from historical performance
|
|
66
|
+
- **Checkpoint & Resume** — Automatic progress saving with failure recovery
|
|
67
|
+
- **Exclusive Mode** — Prevents concurrent runs on shared TM1 servers
|
|
68
|
+
- **SQLite Statistics** — Persistent execution history with dashboards and analysis
|
|
69
|
+
- **TM1 Integration** — Read tasks from and write results to a TM1 cube
|
|
70
|
+
- **100% Backwards Compatible** — Legacy TXT task files work without changes
|
|
71
|
+
|
|
72
|
+
## Installation
|
|
73
|
+
|
|
74
|
+
### pip (recommended)
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
pip install rushti
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
For the latest beta:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
pip install rushti --pre
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### uv
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
uv pip install rushti
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Executable (no Python required)
|
|
93
|
+
|
|
94
|
+
Download `rushti.exe` from [GitHub Releases](https://github.com/cubewise-code/rushti/releases) — includes all dependencies.
|
|
95
|
+
|
|
96
|
+
## Quick Start
|
|
97
|
+
|
|
98
|
+
**1. Configure TM1 connection**
|
|
99
|
+
|
|
100
|
+
```ini
|
|
101
|
+
# config/config.ini
|
|
102
|
+
[tm1-finance]
|
|
103
|
+
address = localhost
|
|
104
|
+
port = 12354
|
|
105
|
+
ssl = true
|
|
106
|
+
user = admin
|
|
107
|
+
password = apple
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**2. Create a task file**
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"version": "2.0",
|
|
115
|
+
"tasks": [
|
|
116
|
+
{ "id": "1", "instance": "tm1-finance", "process": "Extract.GL.Data" },
|
|
117
|
+
{ "id": "2", "instance": "tm1-finance", "process": "Extract.FX.Rates" },
|
|
118
|
+
{
|
|
119
|
+
"id": "3",
|
|
120
|
+
"instance": "tm1-finance",
|
|
121
|
+
"process": "Transform.Currency",
|
|
122
|
+
"predecessors": ["1", "2"]
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"id": "4",
|
|
126
|
+
"instance": "tm1-finance",
|
|
127
|
+
"process": "Build.Reports",
|
|
128
|
+
"predecessors": ["3"]
|
|
129
|
+
}
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**3. Validate and run**
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
rushti tasks validate --tasks daily-refresh.json --skip-tm1-check
|
|
138
|
+
rushti run --tasks daily-refresh.json --max-workers 4
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Documentation
|
|
142
|
+
|
|
143
|
+
Full documentation is available at **[cubewise-code.github.io/rushti/docs](https://cubewise-code.github.io/rushti/docs/)**
|
|
144
|
+
|
|
145
|
+
- [Installation](https://cubewise-code.github.io/rushti/docs/getting-started/installation/)
|
|
146
|
+
- [Quick Start](https://cubewise-code.github.io/rushti/docs/getting-started/quick-start/)
|
|
147
|
+
- [Task Files](https://cubewise-code.github.io/rushti/docs/getting-started/task-files/)
|
|
148
|
+
- [CLI Reference](https://cubewise-code.github.io/rushti/docs/advanced/cli-reference/)
|
|
149
|
+
- [Settings Reference](https://cubewise-code.github.io/rushti/docs/advanced/settings-reference/)
|
|
150
|
+
|
|
151
|
+
## Website
|
|
152
|
+
|
|
153
|
+
Visit **[cubewise-code.github.io/rushti](https://cubewise-code.github.io/rushti/)** for interactive demos, feature overviews, and architecture visualizations.
|
|
154
|
+
|
|
155
|
+
## Links
|
|
156
|
+
|
|
157
|
+
- [GitHub](https://github.com/cubewise-code/rushti)
|
|
158
|
+
- [PyPI](https://pypi.org/project/rushti/)
|
|
159
|
+
- [Issues](https://github.com/cubewise-code/rushti/issues)
|
|
160
|
+
- [Changelog](https://github.com/cubewise-code/rushti/releases)
|
|
161
|
+
|
|
162
|
+
## Built With
|
|
163
|
+
|
|
164
|
+
[TM1py](https://github.com/cubewise-code/TM1py) — Python interface to the TM1 REST API
|
|
165
|
+
|
|
166
|
+
## License
|
|
167
|
+
|
|
168
|
+
MIT — see [LICENSE](LICENSE) for details.
|
rushti-2.0.0/README.md
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/cubewise-code/rushti/rushti2dot0/docs/assets/images/rushti/RushTi2026_blue.svg" alt="RushTI" width="400" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<strong>Parallel TI execution engine for IBM Planning Analytics</strong>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://pypi.org/project/rushti/"><img src="https://img.shields.io/pypi/v/rushti?color=blue" alt="PyPI"></a>
|
|
11
|
+
<a href="https://pypi.org/project/rushti/"><img src="https://img.shields.io/pypi/pyversions/rushti" alt="Python"></a>
|
|
12
|
+
<a href="https://github.com/cubewise-code/rushti/blob/master/LICENSE"><img src="https://img.shields.io/github/license/cubewise-code/rushti" alt="License"></a>
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
RushTI transforms sequential TurboIntegrator execution into intelligent, parallel workflows. Define task dependencies as a DAG, and RushTI schedules them across multiple workers — starting each task the moment its predecessors complete.
|
|
18
|
+
|
|
19
|
+
## What's New in 2.0
|
|
20
|
+
|
|
21
|
+
- **DAG Execution** — True dependency-based scheduling replaces wait-based sequencing
|
|
22
|
+
- **JSON Task Files** — Structured format with metadata, settings, and stages
|
|
23
|
+
- **Self-Optimization** — EWMA-based learning reorders tasks from historical performance
|
|
24
|
+
- **Checkpoint & Resume** — Automatic progress saving with failure recovery
|
|
25
|
+
- **Exclusive Mode** — Prevents concurrent runs on shared TM1 servers
|
|
26
|
+
- **SQLite Statistics** — Persistent execution history with dashboards and analysis
|
|
27
|
+
- **TM1 Integration** — Read tasks from and write results to a TM1 cube
|
|
28
|
+
- **100% Backwards Compatible** — Legacy TXT task files work without changes
|
|
29
|
+
|
|
30
|
+
## Installation
|
|
31
|
+
|
|
32
|
+
### pip (recommended)
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
pip install rushti
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
For the latest beta:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
pip install rushti --pre
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### uv
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
uv pip install rushti
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Executable (no Python required)
|
|
51
|
+
|
|
52
|
+
Download `rushti.exe` from [GitHub Releases](https://github.com/cubewise-code/rushti/releases) — includes all dependencies.
|
|
53
|
+
|
|
54
|
+
## Quick Start
|
|
55
|
+
|
|
56
|
+
**1. Configure TM1 connection**
|
|
57
|
+
|
|
58
|
+
```ini
|
|
59
|
+
# config/config.ini
|
|
60
|
+
[tm1-finance]
|
|
61
|
+
address = localhost
|
|
62
|
+
port = 12354
|
|
63
|
+
ssl = true
|
|
64
|
+
user = admin
|
|
65
|
+
password = apple
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**2. Create a task file**
|
|
69
|
+
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"version": "2.0",
|
|
73
|
+
"tasks": [
|
|
74
|
+
{ "id": "1", "instance": "tm1-finance", "process": "Extract.GL.Data" },
|
|
75
|
+
{ "id": "2", "instance": "tm1-finance", "process": "Extract.FX.Rates" },
|
|
76
|
+
{
|
|
77
|
+
"id": "3",
|
|
78
|
+
"instance": "tm1-finance",
|
|
79
|
+
"process": "Transform.Currency",
|
|
80
|
+
"predecessors": ["1", "2"]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "4",
|
|
84
|
+
"instance": "tm1-finance",
|
|
85
|
+
"process": "Build.Reports",
|
|
86
|
+
"predecessors": ["3"]
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**3. Validate and run**
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
rushti tasks validate --tasks daily-refresh.json --skip-tm1-check
|
|
96
|
+
rushti run --tasks daily-refresh.json --max-workers 4
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Documentation
|
|
100
|
+
|
|
101
|
+
Full documentation is available at **[cubewise-code.github.io/rushti/docs](https://cubewise-code.github.io/rushti/docs/)**
|
|
102
|
+
|
|
103
|
+
- [Installation](https://cubewise-code.github.io/rushti/docs/getting-started/installation/)
|
|
104
|
+
- [Quick Start](https://cubewise-code.github.io/rushti/docs/getting-started/quick-start/)
|
|
105
|
+
- [Task Files](https://cubewise-code.github.io/rushti/docs/getting-started/task-files/)
|
|
106
|
+
- [CLI Reference](https://cubewise-code.github.io/rushti/docs/advanced/cli-reference/)
|
|
107
|
+
- [Settings Reference](https://cubewise-code.github.io/rushti/docs/advanced/settings-reference/)
|
|
108
|
+
|
|
109
|
+
## Website
|
|
110
|
+
|
|
111
|
+
Visit **[cubewise-code.github.io/rushti](https://cubewise-code.github.io/rushti/)** for interactive demos, feature overviews, and architecture visualizations.
|
|
112
|
+
|
|
113
|
+
## Links
|
|
114
|
+
|
|
115
|
+
- [GitHub](https://github.com/cubewise-code/rushti)
|
|
116
|
+
- [PyPI](https://pypi.org/project/rushti/)
|
|
117
|
+
- [Issues](https://github.com/cubewise-code/rushti/issues)
|
|
118
|
+
- [Changelog](https://github.com/cubewise-code/rushti/releases)
|
|
119
|
+
|
|
120
|
+
## Built With
|
|
121
|
+
|
|
122
|
+
[TM1py](https://github.com/cubewise-code/TM1py) — Python interface to the TM1 REST API
|
|
123
|
+
|
|
124
|
+
## License
|
|
125
|
+
|
|
126
|
+
MIT — see [LICENSE](LICENSE) for details.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "rushti"
|
|
7
|
+
version = "2.0.0"
|
|
8
|
+
description = "RushTI - Parallel TM1 TurboIntegrator Process Execution"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
authors = [
|
|
12
|
+
{name = "nicolasbisurgi", email = "nbisurgi@cubewise.com"},
|
|
13
|
+
{name = "Marius Wirtz", email = "mwirtz@cubewise.com"}
|
|
14
|
+
]
|
|
15
|
+
maintainers = [
|
|
16
|
+
{name = "Cubewise CODE"},
|
|
17
|
+
]
|
|
18
|
+
keywords = ["TM1", "Planning Analytics", "TM1Py", "TurboIntegrator", "orchestration", "automation", "ETL"]
|
|
19
|
+
classifiers = [
|
|
20
|
+
"Development Status :: 5 - Production/Stable",
|
|
21
|
+
"Intended Audience :: Developers",
|
|
22
|
+
"Intended Audience :: System Administrators",
|
|
23
|
+
"Operating System :: OS Independent",
|
|
24
|
+
"Programming Language :: Python :: 3",
|
|
25
|
+
"Programming Language :: Python :: 3.9",
|
|
26
|
+
"Programming Language :: Python :: 3.10",
|
|
27
|
+
"Programming Language :: Python :: 3.11",
|
|
28
|
+
"Programming Language :: Python :: 3.12",
|
|
29
|
+
"Topic :: Database",
|
|
30
|
+
"Topic :: System :: Systems Administration",
|
|
31
|
+
]
|
|
32
|
+
requires-python = ">=3.9"
|
|
33
|
+
dependencies = [
|
|
34
|
+
"TM1py>=2.0.0",
|
|
35
|
+
"keyring>=25.7.0",
|
|
36
|
+
"chardet>=5.2.0",
|
|
37
|
+
"pandas>=2.0.0",
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
[project.optional-dependencies]
|
|
41
|
+
dev = [
|
|
42
|
+
"pytest>=7.0.0",
|
|
43
|
+
"pytest-asyncio",
|
|
44
|
+
"pytest-cov",
|
|
45
|
+
"pyinstaller>=5.0.0",
|
|
46
|
+
"pre-commit",
|
|
47
|
+
"black>=24.10.0",
|
|
48
|
+
"ruff>=0.8.0",
|
|
49
|
+
"mypy",
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
[project.urls]
|
|
53
|
+
Homepage = "https://cubewise-code.github.io/rushti/"
|
|
54
|
+
Documentation = "https://cubewise-code.github.io/rushti/docs/"
|
|
55
|
+
Repository = "https://github.com/cubewise-code/rushti"
|
|
56
|
+
Issues = "https://github.com/cubewise-code/rushti/issues"
|
|
57
|
+
Changelog = "https://github.com/cubewise-code/rushti/releases"
|
|
58
|
+
|
|
59
|
+
[project.scripts]
|
|
60
|
+
rushti = "rushti.cli:main"
|
|
61
|
+
|
|
62
|
+
[tool.setuptools]
|
|
63
|
+
package-dir = {"" = "src"}
|
|
64
|
+
|
|
65
|
+
[tool.setuptools.packages.find]
|
|
66
|
+
where = ["src"]
|
|
67
|
+
|
|
68
|
+
[tool.setuptools.package-data]
|
|
69
|
+
"rushti.templates" = ["*.html"]
|
|
70
|
+
|
|
71
|
+
[tool.pytest.ini_options]
|
|
72
|
+
pythonpath = ["src"]
|
|
73
|
+
testpaths = ["tests"]
|
|
74
|
+
python_files = ["test_*.py"]
|
|
75
|
+
python_classes = ["Test*"]
|
|
76
|
+
python_functions = ["test_*"]
|
|
77
|
+
markers = [
|
|
78
|
+
"requires_tm1: marks tests as requiring TM1 connection (deselect with '-m \"not requires_tm1\"')",
|
|
79
|
+
"slow: marks tests as slow running",
|
|
80
|
+
"integration: marks tests as integration tests",
|
|
81
|
+
]
|
|
82
|
+
asyncio_mode = "auto"
|
|
83
|
+
|
|
84
|
+
[tool.black]
|
|
85
|
+
line-length = 100
|
|
86
|
+
target-version = ["py39", "py310", "py311", "py312"]
|
|
87
|
+
include = '\.pyi?$'
|
|
88
|
+
exclude = '''
|
|
89
|
+
/(
|
|
90
|
+
\.eggs
|
|
91
|
+
| \.git
|
|
92
|
+
| \.hg
|
|
93
|
+
| \.mypy_cache
|
|
94
|
+
| \.tox
|
|
95
|
+
| \.venv
|
|
96
|
+
| _build
|
|
97
|
+
| buck-out
|
|
98
|
+
| build
|
|
99
|
+
| dist
|
|
100
|
+
)/
|
|
101
|
+
'''
|
|
102
|
+
|
|
103
|
+
[tool.isort]
|
|
104
|
+
profile = "black"
|
|
105
|
+
line_length = 100
|
|
106
|
+
src_paths = ["src", "tests"]
|
|
107
|
+
|
|
108
|
+
[tool.ruff]
|
|
109
|
+
line-length = 100
|
|
110
|
+
target-version = "py39"
|
|
111
|
+
|
|
112
|
+
[tool.ruff.lint]
|
|
113
|
+
select = ["E", "F", "W"]
|
|
114
|
+
# E501 handled by Black formatter (which intentionally skips strings/comments)
|
|
115
|
+
ignore = ["E501"]
|
|
116
|
+
|
|
117
|
+
[tool.ruff.lint.per-file-ignores]
|
|
118
|
+
# Integration tests manipulate sys.path before imports (standard pattern)
|
|
119
|
+
"tests/integration/*.py" = ["E402"]
|
|
120
|
+
|
|
121
|
+
[tool.mypy]
|
|
122
|
+
python_version = "3.9"
|
|
123
|
+
warn_return_any = true
|
|
124
|
+
warn_unused_configs = true
|
|
125
|
+
ignore_missing_imports = true
|
rushti-2.0.0/setup.cfg
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"""
|
|
2
|
+
RushTI - Parallel TM1 TurboIntegrator Process Execution.
|
|
3
|
+
|
|
4
|
+
This package provides tools for executing TM1 TI processes in parallel
|
|
5
|
+
with dependency management, checkpoint/resume support, and execution logging.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
__version__ = "2.0.0"
|
|
9
|
+
__app_name__ = "RushTI"
|
|
10
|
+
|
|
11
|
+
# Core exports for programmatic use
|
|
12
|
+
from rushti.task import Task, OptimizedTask, ExecutionMode
|
|
13
|
+
from rushti.dag import DAG
|
|
14
|
+
from rushti.checkpoint import Checkpoint, CheckpointManager
|
|
15
|
+
from rushti.settings import Settings, load_settings
|
|
16
|
+
from rushti.taskfile import Taskfile, TaskDefinition, parse_json_taskfile
|
|
17
|
+
|
|
18
|
+
__all__ = [
|
|
19
|
+
"__version__",
|
|
20
|
+
"__app_name__",
|
|
21
|
+
# Core classes
|
|
22
|
+
"Task",
|
|
23
|
+
"OptimizedTask",
|
|
24
|
+
"ExecutionMode",
|
|
25
|
+
"DAG",
|
|
26
|
+
"Checkpoint",
|
|
27
|
+
"CheckpointManager",
|
|
28
|
+
"Settings",
|
|
29
|
+
"load_settings",
|
|
30
|
+
"Taskfile",
|
|
31
|
+
"TaskDefinition",
|
|
32
|
+
"parse_json_taskfile",
|
|
33
|
+
]
|