specpulse 1.0.5__py3-none-any.whl → 1.0.6__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.
- specpulse/__init__.py +1 -1
- specpulse/cli/main.py +617 -631
- specpulse/core/specpulse.py +8 -2
- {specpulse-1.0.5.dist-info → specpulse-1.0.6.dist-info}/METADATA +7 -16
- {specpulse-1.0.5.dist-info → specpulse-1.0.6.dist-info}/RECORD +9 -9
- {specpulse-1.0.5.dist-info → specpulse-1.0.6.dist-info}/WHEEL +0 -0
- {specpulse-1.0.5.dist-info → specpulse-1.0.6.dist-info}/entry_points.txt +0 -0
- {specpulse-1.0.5.dist-info → specpulse-1.0.6.dist-info}/licenses/LICENSE +0 -0
- {specpulse-1.0.5.dist-info → specpulse-1.0.6.dist-info}/top_level.txt +0 -0
specpulse/core/specpulse.py
CHANGED
@@ -17,8 +17,14 @@ class SpecPulse:
|
|
17
17
|
def __init__(self, project_path: Optional[Path] = None):
|
18
18
|
self.project_path = project_path or Path.cwd()
|
19
19
|
self.config = self._load_config()
|
20
|
-
# Get resource directory path
|
21
|
-
|
20
|
+
# Get resource directory path using package data
|
21
|
+
import pkg_resources
|
22
|
+
try:
|
23
|
+
# Get the actual path to the resources directory in the installed package
|
24
|
+
self.resources_dir = Path(pkg_resources.resource_filename('specpulse', 'resources'))
|
25
|
+
except:
|
26
|
+
# Fallback to development path
|
27
|
+
self.resources_dir = Path(__file__).parent.parent / "resources"
|
22
28
|
|
23
29
|
def _load_config(self) -> Dict:
|
24
30
|
"""Load project configuration"""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: specpulse
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.6
|
4
4
|
Summary: Specification-Driven Development Framework
|
5
5
|
Home-page: https://github.com/specpulse
|
6
6
|
Author: SpecPulse
|
@@ -66,12 +66,12 @@ Dynamic: requires-python
|
|
66
66
|
|
67
67
|
SpecPulse revolutionizes AI-assisted development by enforcing a **specification-first approach**. Instead of jumping straight into code, SpecPulse ensures every feature starts with clear specifications, validated plans, and tracked tasks - guaranteeing quality from day one.
|
68
68
|
|
69
|
-
> **Latest Update (v1.0.
|
70
|
-
> -
|
71
|
-
> - ✅ **
|
72
|
-
> - ✅ **
|
73
|
-
> - ✅ **
|
74
|
-
> - ✅ **
|
69
|
+
> **Latest Update (v1.0.6)**:
|
70
|
+
> - 🐛 **Critical Bug Fix**: Fixed cross-platform template initialization bug
|
71
|
+
> - ✅ **Proper Resource Management**: All cross-platform scripts now correctly copied from @specpulse/resources
|
72
|
+
> - ✅ **Complete Script Availability**: All 12 scripts (4 types × 3 platforms) properly installed
|
73
|
+
> - ✅ **Enhanced Package Configuration**: Fixed package data inclusion for Python and PowerShell scripts
|
74
|
+
> - ✅ **Improved Error Handling**: Better resource path resolution and script copying operations
|
75
75
|
|
76
76
|
### Why SpecPulse?
|
77
77
|
|
@@ -439,21 +439,12 @@ pytest tests/
|
|
439
439
|
|
440
440
|
- **[PyPI Package](https://pypi.org/project/specpulse/)** - Official package page
|
441
441
|
- **[GitHub Repository](https://github.com/specpulse/specpulse)** - Source code and issues
|
442
|
-
- **[Examples](https://github.com/specpulse/specpulse/tree/main/examples)** - Real-world usage
|
443
442
|
- **Command Reference** - See AI Integration section above for full command list
|
444
443
|
|
445
444
|
## 📄 License
|
446
445
|
|
447
446
|
MIT License - see [LICENSE](LICENSE) file for details.
|
448
447
|
|
449
|
-
## 🙏 Acknowledgments
|
450
|
-
|
451
|
-
Built with inspiration from:
|
452
|
-
- Test-Driven Development principles
|
453
|
-
- Domain-Driven Design
|
454
|
-
- Clean Architecture
|
455
|
-
- Specification by Example
|
456
|
-
|
457
448
|
## 🚦 Project Status
|
458
449
|
|
459
450
|
[](https://github.com/specpulse/specpulse)
|
@@ -1,8 +1,8 @@
|
|
1
|
-
specpulse/__init__.py,sha256=
|
1
|
+
specpulse/__init__.py,sha256=_STxTaRnYchUEyj9kqTAxcD6ZWH8koMDNxHRm5VbRHo,270
|
2
2
|
specpulse/cli/__init__.py,sha256=DpX6FoRJtSNjudsmZ3mTih_RIaWyiIgxew4-f8mOmFY,70
|
3
|
-
specpulse/cli/main.py,sha256=
|
3
|
+
specpulse/cli/main.py,sha256=CnzDkTooxncCl0LZxIIuboLYOMXFSo_QPMu3-4iFerg,24814
|
4
4
|
specpulse/core/__init__.py,sha256=VKHGdPDM38QM9yDIq05jxol4q8WFlFAeltOzYLsPuto,132
|
5
|
-
specpulse/core/specpulse.py,sha256=
|
5
|
+
specpulse/core/specpulse.py,sha256=oiLZ1Ux58Lz88MLVBlcKpJdSE9VorTd2q6U3wO9RfVE,30269
|
6
6
|
specpulse/core/validator.py,sha256=dnaNUx7tj8V2K1TE6WPwrNWEiCpqC_b_DKryq6-A7Hk,12057
|
7
7
|
specpulse/resources/commands/claude/plan.md,sha256=G5V97UcTms6KgU4N2o8Chay64DMGoxUvq4xqhdv7Lfg,5958
|
8
8
|
specpulse/resources/commands/claude/pulse.md,sha256=Ki4iz5c4emXPHfIVMaXAuYEynHE8gmvWlnu3RXTvtNw,3116
|
@@ -33,9 +33,9 @@ specpulse/resources/templates/task.md,sha256=J1k2LksoXVubrYDuar36VXlA_YB_JCFUm-_
|
|
33
33
|
specpulse/utils/__init__.py,sha256=VTGRDsVLl2JIXYyHB9Sidxj5acY_W-LJI2MMtY1pwb0,122
|
34
34
|
specpulse/utils/console.py,sha256=xn4Koc1_ph61bvBTlvPOwAbqZ5ac7TZ51xTWJbwG0sc,12973
|
35
35
|
specpulse/utils/git_utils.py,sha256=RzJBZoyWp5on1_wq2lY1bs__UJsGKSDpAUeDKFdRYlQ,6095
|
36
|
-
specpulse-1.0.
|
37
|
-
specpulse-1.0.
|
38
|
-
specpulse-1.0.
|
39
|
-
specpulse-1.0.
|
40
|
-
specpulse-1.0.
|
41
|
-
specpulse-1.0.
|
36
|
+
specpulse-1.0.6.dist-info/licenses/LICENSE,sha256=ImSFezK-Phy0oTBqZipcajsJfPZT8mmg8m3jkgNdNhA,1066
|
37
|
+
specpulse-1.0.6.dist-info/METADATA,sha256=qIzosVyU5IsMf5eeW5u9iPC2i5Vj-rH6AuYuFcCK57w,16556
|
38
|
+
specpulse-1.0.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
39
|
+
specpulse-1.0.6.dist-info/entry_points.txt,sha256=GwMaCKWSCFZlJMrTNavEYrnREynIS6dM3B0ILxnaouA,83
|
40
|
+
specpulse-1.0.6.dist-info/top_level.txt,sha256=pEfkFil5xe38J00OHrBrJ07xpbm6bRnGhI8B07O9KeI,10
|
41
|
+
specpulse-1.0.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|