rw-sysstable 0.2.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.
- rw_sysstable-0.2.0.dist-info/METADATA +321 -0
- rw_sysstable-0.2.0.dist-info/RECORD +20 -0
- rw_sysstable-0.2.0.dist-info/WHEEL +4 -0
- rw_sysstable-0.2.0.dist-info/entry_points.txt +2 -0
- rw_sysstable-0.2.0.dist-info/licenses/LICENSE +21 -0
- sysstable/__init__.py +3 -0
- sysstable/__main__.py +6 -0
- sysstable/cli.py +468 -0
- sysstable/collector.py +258 -0
- sysstable/config.py +105 -0
- sysstable/daemon.py +238 -0
- sysstable/database.py +241 -0
- sysstable/events.py +96 -0
- sysstable/process_watch.py +498 -0
- sysstable/resolver.py +380 -0
- sysstable/socketd.py +123 -0
- sysstable/state_machine.py +154 -0
- sysstable/systemd_notify.py +68 -0
- sysstable/thresholds.py +121 -0
- sysstable/utils.py +26 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: rw-sysstable
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: System stability monitor with Hermes integration β daemon, CLI, plugin, and critical memory pressure resolution
|
|
5
|
+
Project-URL: Homepage, https://github.com/stephanos8926-lgtm/rapidwebs-sysstable
|
|
6
|
+
Author-email: RapidWebs Enterprise <dev@rapidwebs.com>
|
|
7
|
+
Maintainer-email: "Lucien (RapidWebs)" <lucien@rapidwebs.com>
|
|
8
|
+
License: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: daemon,devops,hermes,monitoring,plugin,psutil,stability,system,thresholds
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Intended Audience :: System Administrators
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Natural Language :: English
|
|
16
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
|
+
Classifier: Topic :: System :: Monitoring
|
|
24
|
+
Classifier: Topic :: System :: Systems Administration
|
|
25
|
+
Requires-Python: >=3.10
|
|
26
|
+
Requires-Dist: click>=8.0
|
|
27
|
+
Requires-Dist: psutil>=5.9.0
|
|
28
|
+
Requires-Dist: pyyaml>=6.0
|
|
29
|
+
Provides-Extra: dev
|
|
30
|
+
Requires-Dist: build>=1.0; extra == 'dev'
|
|
31
|
+
Requires-Dist: hatch>=1.17.0; extra == 'dev'
|
|
32
|
+
Requires-Dist: pre-commit>=3.0; extra == 'dev'
|
|
33
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
34
|
+
Requires-Dist: ruff>=0.4.0; extra == 'dev'
|
|
35
|
+
Requires-Dist: twine>=5.0; extra == 'dev'
|
|
36
|
+
Description-Content-Type: text/markdown
|
|
37
|
+
|
|
38
|
+
# RapidWebs-SysStable π‘οΈ
|
|
39
|
+
|
|
40
|
+
**System stability monitor with Hermes integration β daemon, CLI, and plugin.**
|
|
41
|
+
|
|
42
|
+
A background daemon that collects real-time system metrics (RAM, CPU, disk, swap,
|
|
43
|
+
temperature, network, battery), thresholds them against configurable watermarks,
|
|
44
|
+
and feeds results into [Hermes Agent](https://hermes-agent.nousresearch.com) via
|
|
45
|
+
plugin hooks. When resources get tight, Hermes adapts β blocking delegation on
|
|
46
|
+
critical states, injecting context warnings on pressure.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## β¨ Features
|
|
51
|
+
|
|
52
|
+
| Capability | What It Does |
|
|
53
|
+
|------------|-------------|
|
|
54
|
+
| π **Metric Collection** | RAM, ZRAM, SWAP, CPU (per-core + load avg), disk, net I/O, battery, temperature, uptime β every 15s |
|
|
55
|
+
| ποΈ **Threshold Engine** | Green/Yellow/Orange/CRITICAL watermarks per metric. Supports CRITICAL severity level and threshold watermark for immediate action. Reverse-aware (lower=worse for RAM/disk, higher=worse for CPU/temp) |
|
|
56
|
+
| π€ **Hermes Plugin** | `pre_tool_call` blocks delegation on RED/CRITICAL, warns on YELLOW/ORANGE. With v0.2.0, it now supports CRITICAL severity blocking. `pre_llm_call` injects `[SYSTEM STATUS]` context. |
|
|
57
|
+
| π₯οΈ **CLI** | `sysstable status`, `history`, `trend`, `start`, `stop`, `init`, `uninstall`, `kill-list`, `processes`, `never-kill`, `resolution-history`. Supports starting with `--never-kill` flag. |
|
|
58
|
+
| π **Memory Pressure Resolution System** | System for automatically resolving memory pressure situations by intelligently killing non-critical processes when system RAM falls below a defined `critical` threshold. Includes `MemoryPressureResolver`, `PressureStateMachine`, `ProcessSnapshot`, `NoKillManager`, and `KillListGenerator`. |
|
|
59
|
+
| ποΈ **SQLite Storage** | WAL mode, configurable retention (24hβ14d), auto-pruning, unix socket IPC. New tables in DB schema for enhanced data management. |
|
|
60
|
+
| βοΈ **Configurable** | YAML config β thresholds, intervals, retention, webhook URLs, hook directories. New config blocks: `memory_pressure`, `resolution`, `process_scoring`, `never_kill`. |
|
|
61
|
+
| π¦ **Security Enhancements** | Triple (pid,name,cmdline) matching for process identification and security. |
|
|
62
|
+
| π **systemd Support** | `--user` service template with `Restart=on-failure` |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## ποΈ Architecture
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
70
|
+
β Daemon (sysstabled) β
|
|
71
|
+
β - Python, systemd --user service β
|
|
72
|
+
β - Collects every 15s (configurable) β
|
|
73
|
+
β - Reads /proc + psutil β
|
|
74
|
+
β - Writes metrics β SQLite (WAL, retention) β
|
|
75
|
+
β - Writes current state β state.json β
|
|
76
|
+
β - Evaluates thresholds β dispatches events β
|
|
77
|
+
ββββββ¬βββββββββββββββ¬ββββββββββββββ¬βββββββββββββββββ
|
|
78
|
+
β β β
|
|
79
|
+
β state.json β unix socket β Memory Pressure Resolution Layer
|
|
80
|
+
βΌ βΌ βΌ (monitors state.json, acts on critical thresholds)
|
|
81
|
+
βββββββββββββββ ββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββ
|
|
82
|
+
β Hermes β β CLI (sysstable) β β Resolver (memory_pressure) β
|
|
83
|
+
β Plugin β β - status β β - Manages resolution lifecycle β
|
|
84
|
+
β (pre_tool, β β - history, trend β β - Integrates with Process Watch modules β
|
|
85
|
+
β pre_llm) β β - daemon lifecycle β ββββββββββββββββββββββββββββ
|
|
86
|
+
βββββββββββββββ β - init, uninstall β
|
|
87
|
+
β - kill-list, processes, etc. β
|
|
88
|
+
ββββββββββββββββββββββββββββββββ
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## π¦ Installation
|
|
94
|
+
|
|
95
|
+
### Requirements
|
|
96
|
+
|
|
97
|
+
- Python β₯ 3.10
|
|
98
|
+
- Linux (reads `/proc`; psutil sensors)
|
|
99
|
+
- [Hermes Agent](https://hermes-agent.nousresearch.com) (for plugin integration)
|
|
100
|
+
|
|
101
|
+
### From PyPI
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
pip install rw-sysstable
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### From Source
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
git clone https://github.com/stephanos8926-lgtm/rapidwebs-sysstable.git
|
|
111
|
+
cd rapidwebs-sysstable
|
|
112
|
+
uv venv
|
|
113
|
+
source .venv/bin/activate
|
|
114
|
+
uv pip install -e ."[dev]"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Hermes Plugin
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Install the plugin from github repo via hermes plugins install
|
|
121
|
+
hermes plugins install https://github.com/stephanos8926-lgtm/rapidwebs-sysstable/hermes-plugin/rapidwebs-sysstable
|
|
122
|
+
|
|
123
|
+
# Enable it
|
|
124
|
+
hermes config set plugins.rapidwebs-sysstable.enabled true
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## π Quick Start
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# 1. Initialize directories + default config
|
|
133
|
+
sysstable init
|
|
134
|
+
|
|
135
|
+
# 2. Start the daemon (background)
|
|
136
|
+
sysstable start
|
|
137
|
+
|
|
138
|
+
# 3. Check system status
|
|
139
|
+
sysstable status
|
|
140
|
+
|
|
141
|
+
# 4. View metric history
|
|
142
|
+
sysstable history -n 10
|
|
143
|
+
|
|
144
|
+
# 5. See trends
|
|
145
|
+
sysstable trend -n 10
|
|
146
|
+
|
|
147
|
+
# 6. Stop the daemon
|
|
148
|
+
sysstable stop
|
|
149
|
+
|
|
150
|
+
# 7. View process list (for debugging memory pressure)
|
|
151
|
+
sysstable processes
|
|
152
|
+
|
|
153
|
+
# 8. Generate a kill list for non-critical processes
|
|
154
|
+
sysstable kill-list
|
|
155
|
+
|
|
156
|
+
# 9. Check resolution history
|
|
157
|
+
sysstable resolution-history
|
|
158
|
+
|
|
159
|
+
# Start the daemon, preventing it from killing processes initially
|
|
160
|
+
sysstable start --never-kill
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Systemd (persistent)
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
cp docs/sysstable.service ~/.config/systemd/user/
|
|
167
|
+
systemctl --user daemon-reload
|
|
168
|
+
systemctl --user enable --now sysstable
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## βοΈ Configuration
|
|
174
|
+
|
|
175
|
+
`~/.config/sysstable/config.yaml` β auto-created on `sysstable init`.
|
|
176
|
+
|
|
177
|
+
```yaml
|
|
178
|
+
interval_seconds: 15 # Collection interval
|
|
179
|
+
retention_hours: 72 # Data retention (24 | 72 | 120 | 168 | 336)
|
|
180
|
+
db_path: ~/.cache/sysstable/metrics.db
|
|
181
|
+
socket_path: ~/.cache/sysstable/sysstable.sock
|
|
182
|
+
state_path: ~/.hermes/plugins/rapidwebs-sysstable/state.json
|
|
183
|
+
|
|
184
|
+
# Memory Pressure Resolution Configuration
|
|
185
|
+
memory_pressure:
|
|
186
|
+
enabled: true # Enable automatic memory pressure resolution
|
|
187
|
+
check_interval_seconds: 30 # How often to check for memory pressure
|
|
188
|
+
severity_threshold: 128 # Memory available in MB to trigger resolution (e.g., CRITICAL threshold < 128 MB)
|
|
189
|
+
grace_period_seconds: 120 # Time to wait before killing processes after pressure detected
|
|
190
|
+
|
|
191
|
+
resolution:
|
|
192
|
+
# Settings for the MemoryPressureResolver
|
|
193
|
+
max_kill_attempts: 5 # Max processes to attempt killing in one cycle
|
|
194
|
+
min_process_ram_mb: 100 # Minimum RAM usage to consider a process for termination
|
|
195
|
+
max_cpu_usage_percent: 50 # Don't kill processes consuming high CPU (e.g., active services)
|
|
196
|
+
|
|
197
|
+
process_scoring:
|
|
198
|
+
# Scoring parameters for prioritizing processes to kill
|
|
199
|
+
ram_usage_weight: 0.6
|
|
200
|
+
cpu_usage_weight: 0.1
|
|
201
|
+
runtime_weight: 0.1
|
|
202
|
+
importance_score_weight: 0.2 # Higher score = less important
|
|
203
|
+
|
|
204
|
+
never_kill:
|
|
205
|
+
# List of processes (by pid, name, or cmdline) to never kill
|
|
206
|
+
user_list: ["hermes-agent", "sysstabled"] # Process names to protect (from config file)
|
|
207
|
+
|
|
208
|
+
events:
|
|
209
|
+
shell_hooks_dir: ~/.config/sysstable/hooks.d
|
|
210
|
+
webhooks: []
|
|
211
|
+
python_extensions_dir: ~/.config/sysstable/extensions.d
|
|
212
|
+
thresholds:
|
|
213
|
+
ram_available_mb: { yellow: 1024, orange: 512, red: 256, critical: 128 } # CRITICAL added
|
|
214
|
+
cpu_load_15m: { yellow: 2.0, red: 4.0 }
|
|
215
|
+
disk_root_free_mb: { yellow: 5120, red: 1024 }
|
|
216
|
+
swap_percent: { yellow: 50, red: 80 }
|
|
217
|
+
temperature_celsius: { yellow: 80, red: 95 }
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## π§ Memory Pressure Resolution System
|
|
223
|
+
|
|
224
|
+
This system proactively identifies and resolves memory pressure situations by intelligently terminating non-critical processes when system RAM falls below a defined `critical` threshold. It integrates seamlessly with the existing daemon and Hermes Agent, and is controlled via new CLI commands and configuration blocks.
|
|
225
|
+
|
|
226
|
+
### Lifecycle Overview:
|
|
227
|
+
|
|
228
|
+
1. **Detection:** The `sysstabled` daemon continuously monitors system metrics. When `ram_available_mb` drops below the `critical` watermark (defined in `thresholds.critical`), the Memory Pressure Resolution system is triggered.
|
|
229
|
+
2. **Initiation:** The `MemoryPressureResolver` (from `resolver.py`) is engaged. It checks the new `memory_pressure.enabled` configuration. If enabled, and after a `grace_period_seconds`, it begins the resolution process.
|
|
230
|
+
3. **Process Assessment:** The `ProcessSnapshot` class (from `process_watch.py`) gathers detailed information about all running processes, including their PID, name, command line, RAM usage, CPU usage, and runtime.
|
|
231
|
+
4. **Scoring & Prioritization:** The `resolution` configuration block defines parameters for scoring processes. Each process is assigned an importance score based on RAM usage, CPU usage, runtime, and an `importance_score_weight`. The `never_kill` configuration (pids, names, cmdlines) is consulted to exclude critical processes (e.g., `hermes-agent`, `sysstabled` itself).
|
|
232
|
+
5. **Termination:** The `KillListGenerator` (from `process_watch.py`) uses scorers and the `never_kill` list to create a prioritized list of non-critical processes to terminate. The `MemoryPressureResolver` then signals the termination of processes from this list, respecting `max_kill_attempts` and `min_process_ram_mb`.
|
|
233
|
+
6. **Monitoring & Feedback:** The `PressureStateMachine` (from `state_machine.py`) tracks the state of the memory pressure resolution. The CLI command `resolution-history` provides a log of these events. The Hermes plugin receives `CRITICAL` severity alerts, enabling immediate, system-wide actions.
|
|
234
|
+
|
|
235
|
+
### New Modules:
|
|
236
|
+
* `src/sysstable/process_watch.py`: Contains `ProcessSnapshot`, `NoKillManager`, `KillListGenerator`.
|
|
237
|
+
* `src/sysstable/state_machine.py`: Contains `PressureStateMachine`.
|
|
238
|
+
* `src/sysstable/resolver.py`: Contains `MemoryPressureResolver`.
|
|
239
|
+
|
|
240
|
+
### New CLI Commands:
|
|
241
|
+
* `sysstable processes`: List all running processes with key metrics.
|
|
242
|
+
* `sysstable kill-list`: Generate and display a prioritized list of processes that *could* be killed.
|
|
243
|
+
* `sysstable resolution-history`: View logs of memory pressure resolution events.
|
|
244
|
+
* `sysstable start --never-kill`: Temporarily disable the auto-kill feature on startup.
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## π§ͺ Development
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
# Install with dev deps
|
|
252
|
+
uv pip install -e ."[dev]"
|
|
253
|
+
|
|
254
|
+
# Run tests (80 tests total)
|
|
255
|
+
pytest tests/ -v
|
|
256
|
+
|
|
257
|
+
# Lint
|
|
258
|
+
ruff check src/ tests/
|
|
259
|
+
|
|
260
|
+
# Format
|
|
261
|
+
ruff format src/ tests/
|
|
262
|
+
|
|
263
|
+
# Full check
|
|
264
|
+
make check
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## π Threshold Behavior
|
|
270
|
+
|
|
271
|
+
| Severity | Plugin Action |
|
|
272
|
+
|----------|---------------|
|
|
273
|
+
| π’ Green | Silence |
|
|
274
|
+
| π‘ Yellow | Injects `[SYSTEM STATUS]` context warning via `pre_llm_call` |
|
|
275
|
+
| π Orange | Injects warning, blocks first delegation attempt, allows retry |
|
|
276
|
+
| π΄ Red | Blocks `delegate_task` via `pre_tool_call`. Release manually. |
|
|
277
|
+
| π¨ CRITICAL | Blocks `delegate_task` via `pre_tool_call`. Triggers Memory Pressure Resolution system. |
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## πΊοΈ Project Structure
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
rapidwebs-sysstable/
|
|
285
|
+
βββ src/sysstable/ # Main package
|
|
286
|
+
β βββ __init__.py # Version info
|
|
287
|
+
β βββ __main__.py # python -m entry
|
|
288
|
+
β βββ daemon.py # Collection loop + state
|
|
289
|
+
β βββ collector.py # psutil wrappers
|
|
290
|
+
β βββ thresholds.py # Watermark engine
|
|
291
|
+
β βββ events.py # Hook/extension dispatch
|
|
292
|
+
β βββ database.py # SQLite store
|
|
293
|
+
β βββ socketd.py # Unix IPC
|
|
294
|
+
β βββ cli.py # Click CLI
|
|
295
|
+
β βββ config.py # YAML loader
|
|
296
|
+
β βββ process_watch.py # Process (snapshot, no-kill, kill-list) modules
|
|
297
|
+
β βββ state_machine.py # State machine for pressure resolution
|
|
298
|
+
β βββ resolver.py # Memory pressure resolver logic
|
|
299
|
+
βββ hermes-plugin/ # Hermes integration
|
|
300
|
+
β βββ rapidwebs-sysstable/
|
|
301
|
+
βββ tests/ # Pytest suite (80 tests)
|
|
302
|
+
βββ docs/ # systemd service
|
|
303
|
+
βββ pyproject.toml # Build config
|
|
304
|
+
βββ Makefile # Dev commands
|
|
305
|
+
βββ Dockerfile # Container build
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## π Related
|
|
311
|
+
|
|
312
|
+
- [Hermes Agent](https://hermes-agent.nousresearch.com) β AI agent platform
|
|
313
|
+
- [rapidwebs-sysstable Hermes Plugin](https://github.com/stephanos8926-lgtm/rapidwebs-sysstable/tree/main/hermes-plugin) β v0.2.0 with CRITICAL severity blocking
|
|
314
|
+
- [psutil](https://github.com/giampaolo/psutil) β System metrics library
|
|
315
|
+
- [RapidWebs Enterprise](https://rapidwebs.com) β Digital architecture studio
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## π License
|
|
320
|
+
|
|
321
|
+
MIT Β© 2026 RapidWebs Enterprise. See [LICENSE](LICENSE) for details.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
sysstable/__init__.py,sha256=e60Hejr4o860hUj9a3-unNn8Vu2oCfvqyfvGK_sV8Zc,102
|
|
2
|
+
sysstable/__main__.py,sha256=LhzY4USZj9oaB9_sJwIvrzSpYr_CFtnH7Du9Kc2Fhhc,117
|
|
3
|
+
sysstable/cli.py,sha256=29nm8C90NeZpWRr4Z4dBhy7fQNQXEZW1QQ-eJn7Ak0U,16497
|
|
4
|
+
sysstable/collector.py,sha256=mFqW1Avxpxd4YClm_ddHuE7m5eRIXtnI-Y-XiAha8KE,9255
|
|
5
|
+
sysstable/config.py,sha256=d_0COMaBXKsZzwRuWomswb1g13GAGaERyHmAo5J2BRc,3203
|
|
6
|
+
sysstable/daemon.py,sha256=h_oao-w4rdmViB1CEWj9kG7JctNCw5vZiZaMfcOXlx0,8824
|
|
7
|
+
sysstable/database.py,sha256=90sxY7G6Trev5PW8vSoEtwrMIL8yUhaShhbv_y-teAE,9235
|
|
8
|
+
sysstable/events.py,sha256=C_dymasU8k5hhFF2jTkakJelNLLnxXW6YhwW4l6-eIE,3560
|
|
9
|
+
sysstable/process_watch.py,sha256=k9GxOLh8A6KdZETVyMUWl8lyRp8zkWQ_0hL76sZkenQ,17546
|
|
10
|
+
sysstable/resolver.py,sha256=0Pn3sqOsnpm0LdjnPZVWn_Wrqkaaay9aQ9MwdBLX1qM,15142
|
|
11
|
+
sysstable/socketd.py,sha256=7y5vb0ZCj0Y2l0vfXAHxR5sOJZaOETy072LNeDxRYSk,3994
|
|
12
|
+
sysstable/state_machine.py,sha256=aPyExoF_SqiT4aA3_OHkuOW0KyU5XZkX4pA9BFu59E8,5889
|
|
13
|
+
sysstable/systemd_notify.py,sha256=c62dVKVT3G8-uy0bwNPKti5bmVyhW6rvxy1FOLeWmtI,1811
|
|
14
|
+
sysstable/thresholds.py,sha256=rhcnjji5XqCWj1TWUGsVNYDTGdpfPp6Bd4JIjIgdA2Y,3950
|
|
15
|
+
sysstable/utils.py,sha256=Fu3i1kRDIp_jvEWyzbdxqpEr7ROHkdTTgczjtiugd7E,1030
|
|
16
|
+
rw_sysstable-0.2.0.dist-info/METADATA,sha256=ZkyHNwyYjG4bUYKYt6jFtnO6J-cQAcu7nHuwhyQTwDQ,14355
|
|
17
|
+
rw_sysstable-0.2.0.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
|
|
18
|
+
rw_sysstable-0.2.0.dist-info/entry_points.txt,sha256=pwz5UFjnVmO92ilU13NSuRLrm15BhR3KX9W_DnL0H0c,48
|
|
19
|
+
rw_sysstable-0.2.0.dist-info/licenses/LICENSE,sha256=PhJgaQpcP_aIHv03iPoCrZ6MxYuQBCFTvR-tiYSXYBs,1077
|
|
20
|
+
rw_sysstable-0.2.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 RapidWebs Enterprise
|
|
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.
|
sysstable/__init__.py
ADDED