napkinstack 0.9.4__tar.gz → 0.9.5__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.
- {napkinstack-0.9.4 → napkinstack-0.9.5}/PKG-INFO +4 -4
- {napkinstack-0.9.4 → napkinstack-0.9.5}/README.md +3 -3
- {napkinstack-0.9.4 → napkinstack-0.9.5}/pyproject.toml +1 -1
- {napkinstack-0.9.4 → napkinstack-0.9.5}/pyproject.toml.orig +1 -1
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/cli.py +9 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/LICENSE +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/__init__.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/assurance.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/compat.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/discovery.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/doctor.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/fitness/__init__.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/fitness/boundaries.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/fitness/hygiene.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/fitness/manifests.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/fitness/plan.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/fitness/pr_scope.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/landed.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/modules.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/project.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/provenance.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/pull_request.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/settings.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/skills.py +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/templates/contracts/AGENTS.md +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/templates/contracts/MANIFEST.yaml +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/templates/contracts/README.md +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/templates/contracts/docs/runbook.md +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/templates/contracts/tests/.gitkeep +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/templates/module/AGENTS.md +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/templates/module/MANIFEST.yaml +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/templates/module/README.md +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/templates/module/src/.gitkeep +0 -0
- {napkinstack-0.9.4 → napkinstack-0.9.5}/src/napkinstack/templates/module/tests/.gitkeep +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: napkinstack
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.5
|
|
4
4
|
Summary: Engineering framework for several teams and their agents working in one repository: modules, contracts, guardrails in CI.
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -20,7 +20,7 @@ modules, contracts, guardrails in CI. On the Django or Rails model, one command
|
|
|
20
20
|
the project, which then receives new versions on demand; no application stack is imposed.
|
|
21
21
|
Positioning and vocabulary: [`PRODUCT.md`](PRODUCT.md) §1.
|
|
22
22
|
|
|
23
|
-
> **Status: v0.9.
|
|
23
|
+
> **Status: v0.9.5, published** on [PyPI](https://pypi.org/project/napkinstack/).
|
|
24
24
|
> What each version changes, engine and project apart: [`CHANGELOG.md`](CHANGELOG.md).
|
|
25
25
|
> What is open: [`docs/governance/workstreams.md`](docs/governance/workstreams.md).
|
|
26
26
|
|
|
@@ -84,8 +84,8 @@ To try it without installing anything, or to install it from this repository ins
|
|
|
84
84
|
registry — always pinned to a release tag:
|
|
85
85
|
|
|
86
86
|
```bash
|
|
87
|
-
uvx --from "git+https://github.com/NapkinStack/engineering-os@v0.9.
|
|
88
|
-
uv tool install "napkinstack @ git+https://github.com/NapkinStack/engineering-os@v0.9.
|
|
87
|
+
uvx --from "git+https://github.com/NapkinStack/engineering-os@v0.9.5" nstack init my-project
|
|
88
|
+
uv tool install "napkinstack @ git+https://github.com/NapkinStack/engineering-os@v0.9.5"
|
|
89
89
|
```
|
|
90
90
|
|
|
91
91
|
**Two channels, one published artefact.** The registry publishes: the PyPI artefact of a
|
|
@@ -5,7 +5,7 @@ modules, contracts, guardrails in CI. On the Django or Rails model, one command
|
|
|
5
5
|
the project, which then receives new versions on demand; no application stack is imposed.
|
|
6
6
|
Positioning and vocabulary: [`PRODUCT.md`](PRODUCT.md) §1.
|
|
7
7
|
|
|
8
|
-
> **Status: v0.9.
|
|
8
|
+
> **Status: v0.9.5, published** on [PyPI](https://pypi.org/project/napkinstack/).
|
|
9
9
|
> What each version changes, engine and project apart: [`CHANGELOG.md`](CHANGELOG.md).
|
|
10
10
|
> What is open: [`docs/governance/workstreams.md`](docs/governance/workstreams.md).
|
|
11
11
|
|
|
@@ -69,8 +69,8 @@ To try it without installing anything, or to install it from this repository ins
|
|
|
69
69
|
registry — always pinned to a release tag:
|
|
70
70
|
|
|
71
71
|
```bash
|
|
72
|
-
uvx --from "git+https://github.com/NapkinStack/engineering-os@v0.9.
|
|
73
|
-
uv tool install "napkinstack @ git+https://github.com/NapkinStack/engineering-os@v0.9.
|
|
72
|
+
uvx --from "git+https://github.com/NapkinStack/engineering-os@v0.9.5" nstack init my-project
|
|
73
|
+
uv tool install "napkinstack @ git+https://github.com/NapkinStack/engineering-os@v0.9.5"
|
|
74
74
|
```
|
|
75
75
|
|
|
76
76
|
**Two channels, one published artefact.** The registry publishes: the PyPI artefact of a
|
|
@@ -4,6 +4,7 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
import argparse
|
|
6
6
|
import json
|
|
7
|
+
import os
|
|
7
8
|
import sys
|
|
8
9
|
from pathlib import Path
|
|
9
10
|
|
|
@@ -183,8 +184,16 @@ def _run(a) -> int:
|
|
|
183
184
|
return modules.run_verb(root, "run", a.module, arguments)
|
|
184
185
|
|
|
185
186
|
|
|
187
|
+
# What git hands a hook to name its repository (D126): a hook of a linked worktree gets GIT_DIR,
|
|
188
|
+
# and every git the engine runs, in a module or a checkout of its own, would read that one.
|
|
189
|
+
# The engine names its project with --root; git finds the rest from where it runs.
|
|
190
|
+
GIT_LOCATION = ("GIT_DIR", "GIT_WORK_TREE", "GIT_INDEX_FILE", "GIT_COMMON_DIR")
|
|
191
|
+
|
|
192
|
+
|
|
186
193
|
def main(argv: list[str] | None = None) -> int:
|
|
187
194
|
argv = sys.argv[1:] if argv is None else argv
|
|
195
|
+
for name in GIT_LOCATION:
|
|
196
|
+
os.environ.pop(name, None)
|
|
188
197
|
if late := provenance.behind(_named_root(argv)):
|
|
189
198
|
print(late, file=sys.stderr, flush=True)
|
|
190
199
|
args = build_parser().parse_args(argv)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|