redeploy 0.2.14__tar.gz → 0.2.16__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.
- {redeploy-0.2.14 → redeploy-0.2.16}/PKG-INFO +6 -6
- {redeploy-0.2.14 → redeploy-0.2.16}/README.md +5 -5
- {redeploy-0.2.14 → redeploy-0.2.16}/pyproject.toml +1 -1
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/__init__.py +1 -1
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/markpact/parser.py +1 -1
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_markpact_compiler.py +7 -7
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_markpact_parser.py +1 -1
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy.egg-info/PKG-INFO +6 -6
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/apply/__init__.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/apply/executor.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/cli.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/data_sync.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/detect/__init__.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/detect/detector.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/detect/probes.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/detect/remote.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/detect/templates.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/detect/workflow.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/discovery.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/dsl/__init__.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/dsl/loader.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/dsl/parser.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/dsl_python/__init__.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/dsl_python/context.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/dsl_python/decorators.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/dsl_python/docker_steps.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/dsl_python/exceptions.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/dsl_python/runner.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/dsl_python/steps.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/fleet.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/iac/__init__.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/iac/base.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/iac/docker_compose.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/iac/parsers/__init__.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/iac/parsers/compose.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/iac/registry.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/markpact/__init__.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/markpact/compiler.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/markpact/models.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/models.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/observe.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/parse.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/patterns.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/plan/__init__.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/plan/planner.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/plugins/__init__.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/plugins/builtin/__init__.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/plugins/builtin/browser_reload.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/plugins/builtin/notify.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/plugins/builtin/systemd_reload.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/spec_loader.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/ssh.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/steps.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/__init__.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_cli.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_data_sync.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_discovery.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_dsl.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_examples.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_executor.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_fleet.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_git_integration.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_iac.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_manifest.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_models.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_observe.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_parse.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_patterns.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_planner_edge.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_plugins.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_probes.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_public_api.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_spec_loader.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_ssh.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_templates.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_verify.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_version.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_version_changelog.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_version_cli.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_version_manifest.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_version_sources.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/tests/test_workflow.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/verify.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/__init__.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/bump.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/changelog.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/commits.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/diff.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/git_integration.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/git_transaction.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/manifest.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/sources/__init__.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/sources/base.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/sources/json_.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/sources/plain.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/sources/regex.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/sources/toml_.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/sources/yaml_.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version/transaction.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy/version.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy.egg-info/SOURCES.txt +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy.egg-info/dependency_links.txt +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy.egg-info/entry_points.txt +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy.egg-info/requires.txt +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/redeploy.egg-info/top_level.txt +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/setup.cfg +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/tests/test_iac.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/tests/test_parse.py +0 -0
- {redeploy-0.2.14 → redeploy-0.2.16}/tests/test_redeploy.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: redeploy
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.16
|
|
4
4
|
Summary: Infrastructure migration toolkit: detect → plan → apply
|
|
5
5
|
Requires-Python: >=3.11
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -27,17 +27,17 @@ Requires-Dist: pfix>=0.1.60; extra == "dev"
|
|
|
27
27
|
|
|
28
28
|
## AI Cost Tracking
|
|
29
29
|
|
|
30
|
-
    
|
|
31
|
+
  
|
|
32
32
|
|
|
33
|
-
- 🤖 **LLM usage:** $
|
|
34
|
-
- 👤 **Human dev:** ~$
|
|
33
|
+
- 🤖 **LLM usage:** $5.2500 (35 commits)
|
|
34
|
+
- 👤 **Human dev:** ~$1128 (11.3h @ $100/h, 30min dedup)
|
|
35
35
|
|
|
36
36
|
Generated on 2026-04-20 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
|
|
40
|
-
    
|
|
41
41
|
|
|
42
42
|
Infrastructure migration and device deploy toolkit — VPS, Raspberry Pi kiosk, Podman Quadlet, k3s.
|
|
43
43
|
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
|
|
4
4
|
## AI Cost Tracking
|
|
5
5
|
|
|
6
|
-
    
|
|
7
|
+
  
|
|
8
8
|
|
|
9
|
-
- 🤖 **LLM usage:** $
|
|
10
|
-
- 👤 **Human dev:** ~$
|
|
9
|
+
- 🤖 **LLM usage:** $5.2500 (35 commits)
|
|
10
|
+
- 👤 **Human dev:** ~$1128 (11.3h @ $100/h, 30min dedup)
|
|
11
11
|
|
|
12
12
|
Generated on 2026-04-20 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
-
    
|
|
17
17
|
|
|
18
18
|
Infrastructure migration and device deploy toolkit — VPS, Raspberry Pi kiosk, Podman Quadlet, k3s.
|
|
19
19
|
|
|
@@ -7,7 +7,7 @@ Public API (stable from 0.2.0, semver guaranteed)::
|
|
|
7
7
|
|
|
8
8
|
Everything not listed in ``__all__`` is internal and may change without notice.
|
|
9
9
|
"""
|
|
10
|
-
__version__ = "0.2.
|
|
10
|
+
__version__ = "0.2.16"
|
|
11
11
|
|
|
12
12
|
# ── Core models ───────────────────────────────────────────────────────────────
|
|
13
13
|
from .models import ( # noqa: F401
|
|
@@ -42,7 +42,7 @@ def parse_markpact_text(text: str, *, path: str | Path = "migration.md") -> Mark
|
|
|
42
42
|
|
|
43
43
|
if not blocks:
|
|
44
44
|
raise MarkpactParseError(
|
|
45
|
-
f"No markpact blocks found in {source_path}. Expected fenced blocks like ```markpact:config
|
|
45
|
+
f"No markpact blocks found in {source_path}. Expected fenced blocks like ```yaml markpact:config."
|
|
46
46
|
)
|
|
47
47
|
|
|
48
48
|
return MarkpactDocument(path=source_path, blocks=blocks)
|
|
@@ -12,7 +12,7 @@ def test_compile_markpact_document_yaml_subset_to_spec():
|
|
|
12
12
|
textwrap.dedent("""\
|
|
13
13
|
# Demo
|
|
14
14
|
|
|
15
|
-
```markpact:config
|
|
15
|
+
```yaml markpact:config
|
|
16
16
|
name: compiler test
|
|
17
17
|
source:
|
|
18
18
|
strategy: docker_full
|
|
@@ -27,7 +27,7 @@ def test_compile_markpact_document_yaml_subset_to_spec():
|
|
|
27
27
|
remote_dir: ~/myapp
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
```markpact:steps
|
|
30
|
+
```yaml markpact:steps
|
|
31
31
|
extra_steps:
|
|
32
32
|
- id: sync_env
|
|
33
33
|
src: .env
|
|
@@ -64,7 +64,7 @@ def test_compile_markpact_document_supports_toml_config_and_steps():
|
|
|
64
64
|
remote_dir = "~/myapp"
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
```markpact:steps
|
|
67
|
+
```toml markpact:steps
|
|
68
68
|
[[extra_steps]]
|
|
69
69
|
id = "wait_startup"
|
|
70
70
|
seconds = 5
|
|
@@ -85,7 +85,7 @@ def test_compile_markpact_document_rejects_unsupported_block_kind():
|
|
|
85
85
|
textwrap.dedent("""\
|
|
86
86
|
# Demo
|
|
87
87
|
|
|
88
|
-
```markpact:config
|
|
88
|
+
```yaml markpact:config
|
|
89
89
|
name: compiler test
|
|
90
90
|
source:
|
|
91
91
|
strategy: docker_full
|
|
@@ -98,7 +98,7 @@ def test_compile_markpact_document_rejects_unsupported_block_kind():
|
|
|
98
98
|
remote_dir: ~/myapp
|
|
99
99
|
```
|
|
100
100
|
|
|
101
|
-
```markpact:python
|
|
101
|
+
```python markpact:python
|
|
102
102
|
print("unsupported")
|
|
103
103
|
```
|
|
104
104
|
"""),
|
|
@@ -116,7 +116,7 @@ def test_compile_markpact_document_rejects_unsupported_step_keys():
|
|
|
116
116
|
textwrap.dedent("""\
|
|
117
117
|
# Demo
|
|
118
118
|
|
|
119
|
-
```markpact:config
|
|
119
|
+
```yaml markpact:config
|
|
120
120
|
name: compiler test
|
|
121
121
|
source:
|
|
122
122
|
strategy: docker_full
|
|
@@ -129,7 +129,7 @@ def test_compile_markpact_document_rejects_unsupported_step_keys():
|
|
|
129
129
|
remote_dir: ~/myapp
|
|
130
130
|
```
|
|
131
131
|
|
|
132
|
-
```markpact:steps
|
|
132
|
+
```yaml markpact:steps
|
|
133
133
|
extra_steps:
|
|
134
134
|
- id: install_docker
|
|
135
135
|
action: ssh_cmd
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: redeploy
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.16
|
|
4
4
|
Summary: Infrastructure migration toolkit: detect → plan → apply
|
|
5
5
|
Requires-Python: >=3.11
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -27,17 +27,17 @@ Requires-Dist: pfix>=0.1.60; extra == "dev"
|
|
|
27
27
|
|
|
28
28
|
## AI Cost Tracking
|
|
29
29
|
|
|
30
|
-
    
|
|
31
|
+
  
|
|
32
32
|
|
|
33
|
-
- 🤖 **LLM usage:** $
|
|
34
|
-
- 👤 **Human dev:** ~$
|
|
33
|
+
- 🤖 **LLM usage:** $5.2500 (35 commits)
|
|
34
|
+
- 👤 **Human dev:** ~$1128 (11.3h @ $100/h, 30min dedup)
|
|
35
35
|
|
|
36
36
|
Generated on 2026-04-20 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
|
|
40
|
-
    
|
|
41
41
|
|
|
42
42
|
Infrastructure migration and device deploy toolkit — VPS, Raspberry Pi kiosk, Podman Quadlet, k3s.
|
|
43
43
|
|
|
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
|
|
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
|
|
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
|
|
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
|