pywire-cli 0.2.0__tar.gz → 0.3.0__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.
- {pywire_cli-0.2.0 → pywire_cli-0.3.0}/CHANGELOG.md +7 -0
- {pywire_cli-0.2.0 → pywire_cli-0.3.0}/PKG-INFO +3 -3
- {pywire_cli-0.2.0 → pywire_cli-0.3.0}/pyproject.toml +3 -3
- pywire_cli-0.3.0/src/pywire_cli/__init__.py +5 -0
- pywire_cli-0.3.0/src/pywire_cli/_compat.py +36 -0
- pywire_cli-0.2.0/src/pywire_cli/__init__.py +0 -3
- {pywire_cli-0.2.0 → pywire_cli-0.3.0}/.gitignore +0 -0
- {pywire_cli-0.2.0 → pywire_cli-0.3.0}/README.md +0 -0
- {pywire_cli-0.2.0 → pywire_cli-0.3.0}/scripts/check +0 -0
- {pywire_cli-0.2.0 → pywire_cli-0.3.0}/scripts/test +0 -0
- {pywire_cli-0.2.0 → pywire_cli-0.3.0}/src/pywire_cli/check.py +0 -0
- {pywire_cli-0.2.0 → pywire_cli-0.3.0}/src/pywire_cli/config.py +0 -0
- {pywire_cli-0.2.0 → pywire_cli-0.3.0}/src/pywire_cli/deploy.py +0 -0
- {pywire_cli-0.2.0 → pywire_cli-0.3.0}/src/pywire_cli/main.py +0 -0
- {pywire_cli-0.2.0 → pywire_cli-0.3.0}/src/pywire_cli/tui.py +0 -0
- {pywire_cli-0.2.0 → pywire_cli-0.3.0}/tests/__init__.py +0 -0
- {pywire_cli-0.2.0 → pywire_cli-0.3.0}/tests/test_check.py +0 -0
- {pywire_cli-0.2.0 → pywire_cli-0.3.0}/tests/test_deploy.py +0 -0
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.0](https://github.com/pywire/pywire/compare/pywire-cli-v0.2.0...pywire-cli-v0.3.0) (2026-05-02)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* cross-package version floors with runtime checks ([#181](https://github.com/pywire/pywire/issues/181)) ([9ec02a3](https://github.com/pywire/pywire/commit/9ec02a330d500ceb83a24547e6012acd1d828137))
|
|
9
|
+
|
|
3
10
|
## [0.2.0](https://github.com/pywire/pywire/compare/pywire-cli-v0.1.0...pywire-cli-v0.2.0) (2026-04-22)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pywire-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Command-line tools for PyWire projects: dev, build, deploy, check
|
|
5
5
|
Project-URL: Homepage, https://pywire.dev
|
|
6
6
|
Project-URL: Documentation, https://pywire.dev/docs
|
|
@@ -18,8 +18,8 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
18
18
|
Classifier: Topic :: Software Development :: Build Tools
|
|
19
19
|
Requires-Python: >=3.11
|
|
20
20
|
Requires-Dist: jinja2>=3.1.0
|
|
21
|
-
Requires-Dist: pywire-templates
|
|
22
|
-
Requires-Dist: pywire[build]
|
|
21
|
+
Requires-Dist: pywire-templates>=0.2.0
|
|
22
|
+
Requires-Dist: pywire[build]>=0.13.0
|
|
23
23
|
Requires-Dist: rich-click>=1.9.6
|
|
24
24
|
Requires-Dist: textual>=7.4.0
|
|
25
25
|
Requires-Dist: uvicorn[standard]>=0.27.0
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pywire-cli"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.3.0"
|
|
8
8
|
description = "Command-line tools for PyWire projects: dev, build, deploy, check"
|
|
9
9
|
authors = [
|
|
10
10
|
{ name = "Reece Holmdahl", email = "reece@pywire.dev" },
|
|
@@ -23,8 +23,8 @@ classifiers = [
|
|
|
23
23
|
"Topic :: Software Development :: Build Tools",
|
|
24
24
|
]
|
|
25
25
|
dependencies = [
|
|
26
|
-
"pywire[build]",
|
|
27
|
-
"pywire-templates",
|
|
26
|
+
"pywire[build]>=0.13.0",
|
|
27
|
+
"pywire-templates>=0.2.0",
|
|
28
28
|
"jinja2>=3.1.0",
|
|
29
29
|
"uvicorn[standard]>=0.27.0",
|
|
30
30
|
"watchfiles>=0.21.0",
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"""Runtime version-floor checks for upstream packages.
|
|
2
|
+
|
|
3
|
+
See packages/pywire/src/pywire/_compat.py for the rationale and
|
|
4
|
+
CLAUDE.md "Version Floors" for the bump protocol.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
8
|
+
|
|
9
|
+
_FLOORS = {
|
|
10
|
+
"pywire": "0.13.0",
|
|
11
|
+
"pywire-templates": "0.2.0",
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def _parse(v: str) -> tuple[int, ...]:
|
|
16
|
+
out: list[int] = []
|
|
17
|
+
for chunk in v.split("."):
|
|
18
|
+
digits = ""
|
|
19
|
+
for ch in chunk:
|
|
20
|
+
if not ch.isdigit():
|
|
21
|
+
break
|
|
22
|
+
digits += ch
|
|
23
|
+
out.append(int(digits) if digits else 0)
|
|
24
|
+
return tuple(out)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
for _pkg, _min in _FLOORS.items():
|
|
28
|
+
try:
|
|
29
|
+
_installed = version(_pkg)
|
|
30
|
+
except PackageNotFoundError:
|
|
31
|
+
continue
|
|
32
|
+
if _parse(_installed) < _parse(_min):
|
|
33
|
+
raise ImportError(
|
|
34
|
+
f"pywire-cli requires {_pkg}>={_min} but found {_installed}. "
|
|
35
|
+
f"Run: pip install -U '{_pkg}>={_min}'"
|
|
36
|
+
)
|
|
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
|