wup 0.2.16__tar.gz → 0.2.20__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 (43) hide show
  1. {wup-0.2.16/wup.egg-info → wup-0.2.20}/PKG-INFO +82 -19
  2. {wup-0.2.16 → wup-0.2.20}/README.md +81 -18
  3. {wup-0.2.16 → wup-0.2.20}/pyproject.toml +1 -1
  4. {wup-0.2.16 → wup-0.2.20}/wup/__init__.py +1 -1
  5. wup-0.2.20/wup/anomaly_detector.py +593 -0
  6. wup-0.2.20/wup/assistant.py +692 -0
  7. {wup-0.2.16 → wup-0.2.20}/wup/cli.py +28 -0
  8. {wup-0.2.16 → wup-0.2.20}/wup/config.py +60 -5
  9. {wup-0.2.16 → wup-0.2.20}/wup/models/__init__.py +21 -8
  10. {wup-0.2.16 → wup-0.2.20}/wup/models/config.py +29 -3
  11. {wup-0.2.16 → wup-0.2.20}/wup/testql_watcher.py +52 -6
  12. {wup-0.2.16 → wup-0.2.20}/wup/visual_diff.py +64 -9
  13. {wup-0.2.16 → wup-0.2.20}/wup/web_client.py +4 -4
  14. {wup-0.2.16 → wup-0.2.20/wup.egg-info}/PKG-INFO +82 -19
  15. {wup-0.2.16 → wup-0.2.20}/wup.egg-info/SOURCES.txt +2 -14
  16. wup-0.2.20/wup.egg-info/top_level.txt +1 -0
  17. wup-0.2.16/wup-web/tests/__init__.py +0 -0
  18. wup-0.2.16/wup-web/tests/conftest.py +0 -23
  19. wup-0.2.16/wup-web/tests/test_dashboard.py +0 -35
  20. wup-0.2.16/wup-web/tests/test_drivers.py +0 -50
  21. wup-0.2.16/wup-web/tests/test_events.py +0 -95
  22. wup-0.2.16/wup-web/wup_web/__init__.py +0 -7
  23. wup-0.2.16/wup-web/wup_web/__main__.py +0 -21
  24. wup-0.2.16/wup-web/wup_web/main.py +0 -44
  25. wup-0.2.16/wup-web/wup_web/models.py +0 -59
  26. wup-0.2.16/wup-web/wup_web/routers/__init__.py +0 -1
  27. wup-0.2.16/wup-web/wup_web/routers/dashboard.py +0 -24
  28. wup-0.2.16/wup-web/wup_web/routers/drivers.py +0 -129
  29. wup-0.2.16/wup-web/wup_web/routers/events.py +0 -48
  30. wup-0.2.16/wup-web/wup_web/storage.py +0 -110
  31. wup-0.2.16/wup.egg-info/top_level.txt +0 -2
  32. {wup-0.2.16 → wup-0.2.20}/LICENSE +0 -0
  33. {wup-0.2.16 → wup-0.2.20}/setup.cfg +0 -0
  34. {wup-0.2.16 → wup-0.2.20}/tests/test_e2e.py +0 -0
  35. {wup-0.2.16 → wup-0.2.20}/tests/test_testql_watcher.py +0 -0
  36. {wup-0.2.16 → wup-0.2.20}/tests/test_web_client.py +0 -0
  37. {wup-0.2.16 → wup-0.2.20}/tests/test_wup.py +0 -0
  38. {wup-0.2.16 → wup-0.2.20}/wup/core.py +0 -0
  39. {wup-0.2.16 → wup-0.2.20}/wup/dependency_mapper.py +0 -0
  40. {wup-0.2.16 → wup-0.2.20}/wup/testql_discovery.py +0 -0
  41. {wup-0.2.16 → wup-0.2.20}/wup.egg-info/dependency_links.txt +0 -0
  42. {wup-0.2.16 → wup-0.2.20}/wup.egg-info/entry_points.txt +0 -0
  43. {wup-0.2.16 → wup-0.2.20}/wup.egg-info/requires.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wup
3
- Version: 0.2.16
3
+ Version: 0.2.20
4
4
  Summary: WUP (What's Up) - Intelligent file watcher for regression testing in large projects
5
5
  Author-email: Tom Sapletta <tom@sapletta.com>
6
6
  License: Apache-2.0
@@ -29,17 +29,17 @@ Dynamic: license-file
29
29
 
30
30
  ## AI Cost Tracking
31
31
 
32
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.2.16-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
33
- ![AI Cost](https://img.shields.io/badge/AI%20Cost-$2.55-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-4.5h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
32
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.2.20-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
33
+ ![AI Cost](https://img.shields.io/badge/AI%20Cost-$4.65-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-7.3h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
34
34
 
35
- - 🤖 **LLM usage:** $2.5500 (17 commits)
36
- - 👤 **Human dev:** ~$445 (4.5h @ $100/h, 30min dedup)
35
+ - 🤖 **LLM usage:** $4.6500 (31 commits)
36
+ - 👤 **Human dev:** ~$732 (7.3h @ $100/h, 30min dedup)
37
37
 
38
38
  Generated on 2026-04-29 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
39
39
 
40
40
  ---
41
41
 
42
- ![PyPI](https://img.shields.io/badge/pypi-wup-blue) ![Version](https://img.shields.io/badge/version-0.2.16-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
42
+ ![PyPI](https://img.shields.io/badge/pypi-wup-blue) ![Version](https://img.shields.io/badge/version-0.2.20-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
43
43
 
44
44
  **WUP (What's Up)** - Intelligent file watcher for regression testing in large projects.
45
45
 
@@ -74,16 +74,19 @@ pip install -e ".[dev]"
74
74
  ## Quick Start
75
75
 
76
76
  ```bash
77
- # 1. Initialize configuration (optional)
78
- wup init
77
+ # 1. Interactive configuration (recommended)
78
+ wup assistant
79
+
80
+ # 2. Or quick auto-setup
81
+ wup assistant --quick --template fastapi
79
82
 
80
- # 2. Build dependency map (one-time setup)
83
+ # 3. Build dependency map (one-time setup)
81
84
  wup map-deps ./my-project
82
85
 
83
- # 3. Start watching for changes
86
+ # 4. Start watching for changes
84
87
  wup watch ./my-project
85
88
 
86
- # 4. Start with live dashboard
89
+ # 5. Start with live dashboard
87
90
  wup watch ./my-project --dashboard
88
91
  ```
89
92
 
@@ -186,6 +189,16 @@ Full regression: 15s test → 15% CPU spike
186
189
 
187
190
  ## Configuration
188
191
 
192
+ ### Service Types
193
+
194
+ WUP supports three service types for coincidence detection and intelligent testing:
195
+
196
+ - **web** - HTTP/API services (FastAPI, Flask, Django, Express.js, etc.)
197
+ - **shell** - CLI tools, scripts, and command-line services
198
+ - **auto** - Automatic detection (default)
199
+
200
+ Coincidence detection allows WUP to identify related services. For example, if you have `users-web` and `users-shell`, WUP will detect they share the same domain and test both when relevant files change.
201
+
189
202
  ### wup.yaml Configuration File
190
203
 
191
204
  WUP supports declarative configuration via `wup.yaml` (or `.wup.yaml`) in your project root. This allows you to define watch paths, service-specific settings, and test strategies.
@@ -196,6 +209,11 @@ Generate a default configuration:
196
209
  wup init
197
210
  ```
198
211
 
212
+ The generated `wup.yaml` includes:
213
+ - **Metadata header**: Version, generation date, documentation links
214
+ - **Dependencies info**: WUP version and optional wupbro dashboard
215
+ - **Quick start guide**: Common commands to get started
216
+
199
217
  Example `wup.yaml`:
200
218
 
201
219
  ```yaml
@@ -333,15 +351,15 @@ Visible in `wup status` as a "Visual DOM diffs" section.
333
351
 
334
352
  If Playwright is not installed, the visual diff module logs a warning and skips scanning — it does **not** break the watcher.
335
353
 
336
- ## Web Dashboard (wup-web)
354
+ ## Web Dashboard (wupbro)
337
355
 
338
356
  Optional FastAPI backend that receives events from WUP agents and renders a live dashboard.
339
357
 
340
358
  ### Run
341
359
 
342
360
  ```bash
343
- pip install -e wup-web/
344
- wup-web --reload --port 8000
361
+ pip install -e wupbro/
362
+ wupbro --reload --port 8000
345
363
  ```
346
364
 
347
365
  Open <http://localhost:8000/> to see regressions, passes, anomalies, visual diffs, and health transitions in real time.
@@ -359,12 +377,12 @@ web:
359
377
  Or via env:
360
378
 
361
379
  ```bash
362
- export WUP_WEB_ENDPOINT=http://localhost:8000
380
+ export WUPBRO_ENDPOINT=http://localhost:8000
363
381
  ```
364
382
 
365
383
  The agent fire-and-forgets `REGRESSION`, `PASS`, `ANOMALY`, `VISUAL_DIFF`, and `HEALTH_TRANSITION` events. Network errors never break the watcher (soft-fail).
366
384
 
367
- See `wup-web/README.md` for full API reference and driver endpoints (DOM diff, browserless, anomaly).
385
+ See `wupbro/README.md` for full API reference and driver endpoints (DOM diff, browserless, anomaly).
368
386
 
369
387
  ## Project Structure
370
388
 
@@ -379,12 +397,12 @@ wup/
379
397
  │ ├── testql_discovery.py # TestQLEndpointDiscovery: scenario parsing
380
398
  │ ├── testql_watcher.py # TestQLWatcher: scenario runner + health tracking
381
399
  │ ├── visual_diff.py # VisualDiffer: Playwright DOM snapshot + diff engine
382
- │ ├── web_client.py # WebClient: async HTTP event sink → wup-web
400
+ │ ├── web_client.py # WebClient: async HTTP event sink → wupbro
383
401
  │ └── models/
384
402
  │ ├── __init__.py
385
403
  │ └── config.py # Dataclasses: WupConfig, VisualDiffConfig, WebConfig...
386
- ├── wup-web/ # Optional FastAPI dashboard (separate package)
387
- │ ├── wup_web/
404
+ ├── wupbro/ # Optional FastAPI dashboard (separate package)
405
+ │ ├── wupbro/
388
406
  │ │ ├── main.py # FastAPI app
389
407
  │ │ ├── routers/ # events, drivers, dashboard
390
408
  │ │ ├── storage.py # EventStore (in-memory + JSONL)
@@ -436,6 +454,18 @@ python3 examples/visual_diff_demo.py http://localhost:8100/health
436
454
 
437
455
  # TestQL + visual diff integration
438
456
  python3 examples/testql_integration.py /path/to/project
457
+
458
+ # Monorepo analysis (c2004-style large projects)
459
+ python3 examples/c2004_monorepo_demo.py /path/to/monorepo
460
+
461
+ # CI/CD integration patterns
462
+ python3 examples/ci_cd_integration.py
463
+
464
+ # Generate GitHub Actions workflow
465
+ python3 examples/ci_cd_integration.py --generate-github-actions
466
+
467
+ # Webhook notifications (Slack, Teams, Discord)
468
+ python3 examples/webhook_notifications.py
439
469
  ```
440
470
 
441
471
  ### Building & Publishing
@@ -444,6 +474,39 @@ python3 examples/testql_integration.py /path/to/project
444
474
  python -m build
445
475
  ```
446
476
 
477
+ ## Real-World Testing
478
+
479
+ WUP has been tested on production-scale projects:
480
+
481
+ - **c2004 Project** (maskservice/c2004): Large IoT platform with 21+ connect-* modules
482
+ - 29 services auto-detected by assistant
483
+ - 100+ YAML configuration files monitored
484
+ - Anomaly detection: 0.06s for 5 config files (~1ms/file)
485
+ - Framework: Custom Python/FastAPI hybrid
486
+
487
+ ## Documentation
488
+
489
+ Comprehensive documentation is available in the `docs/` directory:
490
+
491
+ - **[Configuration Assistant](docs/WUP_ASSISTANT.md)** - Interactive setup guide for `wup.yaml`
492
+ - `wup assistant` - Interactive configuration wizard
493
+ - Auto-detects framework and services
494
+ - Intelligent suggestions and validation
495
+
496
+ - **[Anomaly Detection](docs/ANOMALY_DETECTION.md)** - Fast alternatives to Playwright
497
+ - Hash-based change detection (~1ms per file)
498
+ - YAML structure analysis
499
+ - Python AST diff for API changes
500
+ - Configure with `anomaly_detection:` in wup.yaml
501
+
502
+ - **[Browser Notifications](docs/NOTIFICATIONS.md)** - Real-time alerts in wupbro
503
+ - 7 notification types (regressions, status changes, recoveries)
504
+ - Configurable per-type with cooldown
505
+ - Server-Sent Events for instant delivery
506
+ - Browser Notifications API integration
507
+
508
+ - **[TestQL Integration](docs/TESTQL_INTEGRATION.md)** - TestQL scenario support
509
+
447
510
  ## License
448
511
 
449
512
  Licensed under Apache-2.0.
@@ -3,17 +3,17 @@
3
3
 
4
4
  ## AI Cost Tracking
5
5
 
6
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.2.16-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
7
- ![AI Cost](https://img.shields.io/badge/AI%20Cost-$2.55-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-4.5h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
6
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.2.20-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
7
+ ![AI Cost](https://img.shields.io/badge/AI%20Cost-$4.65-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-7.3h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
8
8
 
9
- - 🤖 **LLM usage:** $2.5500 (17 commits)
10
- - 👤 **Human dev:** ~$445 (4.5h @ $100/h, 30min dedup)
9
+ - 🤖 **LLM usage:** $4.6500 (31 commits)
10
+ - 👤 **Human dev:** ~$732 (7.3h @ $100/h, 30min dedup)
11
11
 
12
12
  Generated on 2026-04-29 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
13
13
 
14
14
  ---
15
15
 
16
- ![PyPI](https://img.shields.io/badge/pypi-wup-blue) ![Version](https://img.shields.io/badge/version-0.2.16-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
16
+ ![PyPI](https://img.shields.io/badge/pypi-wup-blue) ![Version](https://img.shields.io/badge/version-0.2.20-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
17
17
 
18
18
  **WUP (What's Up)** - Intelligent file watcher for regression testing in large projects.
19
19
 
@@ -48,16 +48,19 @@ pip install -e ".[dev]"
48
48
  ## Quick Start
49
49
 
50
50
  ```bash
51
- # 1. Initialize configuration (optional)
52
- wup init
51
+ # 1. Interactive configuration (recommended)
52
+ wup assistant
53
+
54
+ # 2. Or quick auto-setup
55
+ wup assistant --quick --template fastapi
53
56
 
54
- # 2. Build dependency map (one-time setup)
57
+ # 3. Build dependency map (one-time setup)
55
58
  wup map-deps ./my-project
56
59
 
57
- # 3. Start watching for changes
60
+ # 4. Start watching for changes
58
61
  wup watch ./my-project
59
62
 
60
- # 4. Start with live dashboard
63
+ # 5. Start with live dashboard
61
64
  wup watch ./my-project --dashboard
62
65
  ```
63
66
 
@@ -160,6 +163,16 @@ Full regression: 15s test → 15% CPU spike
160
163
 
161
164
  ## Configuration
162
165
 
166
+ ### Service Types
167
+
168
+ WUP supports three service types for coincidence detection and intelligent testing:
169
+
170
+ - **web** - HTTP/API services (FastAPI, Flask, Django, Express.js, etc.)
171
+ - **shell** - CLI tools, scripts, and command-line services
172
+ - **auto** - Automatic detection (default)
173
+
174
+ Coincidence detection allows WUP to identify related services. For example, if you have `users-web` and `users-shell`, WUP will detect they share the same domain and test both when relevant files change.
175
+
163
176
  ### wup.yaml Configuration File
164
177
 
165
178
  WUP supports declarative configuration via `wup.yaml` (or `.wup.yaml`) in your project root. This allows you to define watch paths, service-specific settings, and test strategies.
@@ -170,6 +183,11 @@ Generate a default configuration:
170
183
  wup init
171
184
  ```
172
185
 
186
+ The generated `wup.yaml` includes:
187
+ - **Metadata header**: Version, generation date, documentation links
188
+ - **Dependencies info**: WUP version and optional wupbro dashboard
189
+ - **Quick start guide**: Common commands to get started
190
+
173
191
  Example `wup.yaml`:
174
192
 
175
193
  ```yaml
@@ -307,15 +325,15 @@ Visible in `wup status` as a "Visual DOM diffs" section.
307
325
 
308
326
  If Playwright is not installed, the visual diff module logs a warning and skips scanning — it does **not** break the watcher.
309
327
 
310
- ## Web Dashboard (wup-web)
328
+ ## Web Dashboard (wupbro)
311
329
 
312
330
  Optional FastAPI backend that receives events from WUP agents and renders a live dashboard.
313
331
 
314
332
  ### Run
315
333
 
316
334
  ```bash
317
- pip install -e wup-web/
318
- wup-web --reload --port 8000
335
+ pip install -e wupbro/
336
+ wupbro --reload --port 8000
319
337
  ```
320
338
 
321
339
  Open <http://localhost:8000/> to see regressions, passes, anomalies, visual diffs, and health transitions in real time.
@@ -333,12 +351,12 @@ web:
333
351
  Or via env:
334
352
 
335
353
  ```bash
336
- export WUP_WEB_ENDPOINT=http://localhost:8000
354
+ export WUPBRO_ENDPOINT=http://localhost:8000
337
355
  ```
338
356
 
339
357
  The agent fire-and-forgets `REGRESSION`, `PASS`, `ANOMALY`, `VISUAL_DIFF`, and `HEALTH_TRANSITION` events. Network errors never break the watcher (soft-fail).
340
358
 
341
- See `wup-web/README.md` for full API reference and driver endpoints (DOM diff, browserless, anomaly).
359
+ See `wupbro/README.md` for full API reference and driver endpoints (DOM diff, browserless, anomaly).
342
360
 
343
361
  ## Project Structure
344
362
 
@@ -353,12 +371,12 @@ wup/
353
371
  │ ├── testql_discovery.py # TestQLEndpointDiscovery: scenario parsing
354
372
  │ ├── testql_watcher.py # TestQLWatcher: scenario runner + health tracking
355
373
  │ ├── visual_diff.py # VisualDiffer: Playwright DOM snapshot + diff engine
356
- │ ├── web_client.py # WebClient: async HTTP event sink → wup-web
374
+ │ ├── web_client.py # WebClient: async HTTP event sink → wupbro
357
375
  │ └── models/
358
376
  │ ├── __init__.py
359
377
  │ └── config.py # Dataclasses: WupConfig, VisualDiffConfig, WebConfig...
360
- ├── wup-web/ # Optional FastAPI dashboard (separate package)
361
- │ ├── wup_web/
378
+ ├── wupbro/ # Optional FastAPI dashboard (separate package)
379
+ │ ├── wupbro/
362
380
  │ │ ├── main.py # FastAPI app
363
381
  │ │ ├── routers/ # events, drivers, dashboard
364
382
  │ │ ├── storage.py # EventStore (in-memory + JSONL)
@@ -410,6 +428,18 @@ python3 examples/visual_diff_demo.py http://localhost:8100/health
410
428
 
411
429
  # TestQL + visual diff integration
412
430
  python3 examples/testql_integration.py /path/to/project
431
+
432
+ # Monorepo analysis (c2004-style large projects)
433
+ python3 examples/c2004_monorepo_demo.py /path/to/monorepo
434
+
435
+ # CI/CD integration patterns
436
+ python3 examples/ci_cd_integration.py
437
+
438
+ # Generate GitHub Actions workflow
439
+ python3 examples/ci_cd_integration.py --generate-github-actions
440
+
441
+ # Webhook notifications (Slack, Teams, Discord)
442
+ python3 examples/webhook_notifications.py
413
443
  ```
414
444
 
415
445
  ### Building & Publishing
@@ -418,6 +448,39 @@ python3 examples/testql_integration.py /path/to/project
418
448
  python -m build
419
449
  ```
420
450
 
451
+ ## Real-World Testing
452
+
453
+ WUP has been tested on production-scale projects:
454
+
455
+ - **c2004 Project** (maskservice/c2004): Large IoT platform with 21+ connect-* modules
456
+ - 29 services auto-detected by assistant
457
+ - 100+ YAML configuration files monitored
458
+ - Anomaly detection: 0.06s for 5 config files (~1ms/file)
459
+ - Framework: Custom Python/FastAPI hybrid
460
+
461
+ ## Documentation
462
+
463
+ Comprehensive documentation is available in the `docs/` directory:
464
+
465
+ - **[Configuration Assistant](docs/WUP_ASSISTANT.md)** - Interactive setup guide for `wup.yaml`
466
+ - `wup assistant` - Interactive configuration wizard
467
+ - Auto-detects framework and services
468
+ - Intelligent suggestions and validation
469
+
470
+ - **[Anomaly Detection](docs/ANOMALY_DETECTION.md)** - Fast alternatives to Playwright
471
+ - Hash-based change detection (~1ms per file)
472
+ - YAML structure analysis
473
+ - Python AST diff for API changes
474
+ - Configure with `anomaly_detection:` in wup.yaml
475
+
476
+ - **[Browser Notifications](docs/NOTIFICATIONS.md)** - Real-time alerts in wupbro
477
+ - 7 notification types (regressions, status changes, recoveries)
478
+ - Configurable per-type with cooldown
479
+ - Server-Sent Events for instant delivery
480
+ - Browser Notifications API integration
481
+
482
+ - **[TestQL Integration](docs/TESTQL_INTEGRATION.md)** - TestQL scenario support
483
+
421
484
  ## License
422
485
 
423
486
  Licensed under Apache-2.0.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "wup"
7
- version = "0.2.16"
7
+ version = "0.2.20"
8
8
  description = "WUP (What's Up) - Intelligent file watcher for regression testing in large projects"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -7,7 +7,7 @@ WUP monitors file changes and runs intelligent regression tests using a 3-layer
7
7
  3. Detail Layer: Full tests with blame reports (only on failure)
8
8
  """
9
9
 
10
- __version__ = "0.2.16"
10
+ __version__ = "0.2.20"
11
11
  __author__ = "Tom Sapletta"
12
12
 
13
13
  from .config import load_config, save_config, get_default_config