release-devkit 0.1.0__tar.gz → 0.1.1__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 (28) hide show
  1. {release_devkit-0.1.0 → release_devkit-0.1.1}/AGENTS.md +1 -1
  2. {release_devkit-0.1.0 → release_devkit-0.1.1}/PKG-INFO +2 -2
  3. {release_devkit-0.1.0 → release_devkit-0.1.1}/pyproject.toml +2 -2
  4. {release_devkit-0.1.0 → release_devkit-0.1.1}/src/release_devkit/create_release.py +1 -1
  5. {release_devkit-0.1.0 → release_devkit-0.1.1}/src/release_devkit/fetch_ci_artifacts.py +1 -1
  6. {release_devkit-0.1.0 → release_devkit-0.1.1}/src/release_devkit/ledger.py +8 -11
  7. {release_devkit-0.1.0 → release_devkit-0.1.1}/src/release_devkit/mirror_images.py +1 -1
  8. {release_devkit-0.1.0 → release_devkit-0.1.1}/src/release_devkit/publish_dev.py +2 -2
  9. {release_devkit-0.1.0 → release_devkit-0.1.1}/src/release_devkit/publish_packages.py +2 -2
  10. {release_devkit-0.1.0 → release_devkit-0.1.1}/uv.lock +16 -17
  11. {release_devkit-0.1.0 → release_devkit-0.1.1}/.github/workflows/ci.yml +0 -0
  12. {release_devkit-0.1.0 → release_devkit-0.1.1}/.github/workflows/release.yml +0 -0
  13. {release_devkit-0.1.0 → release_devkit-0.1.1}/.gitignore +0 -0
  14. {release_devkit-0.1.0 → release_devkit-0.1.1}/CLAUDE.md +0 -0
  15. {release_devkit-0.1.0 → release_devkit-0.1.1}/LICENSE +0 -0
  16. {release_devkit-0.1.0 → release_devkit-0.1.1}/NOTICE +0 -0
  17. {release_devkit-0.1.0 → release_devkit-0.1.1}/README.md +0 -0
  18. {release_devkit-0.1.0 → release_devkit-0.1.1}/publish-config.json +0 -0
  19. {release_devkit-0.1.0 → release_devkit-0.1.1}/ruff.toml +0 -0
  20. {release_devkit-0.1.0 → release_devkit-0.1.1}/src/release_devkit/__init__.py +0 -0
  21. {release_devkit-0.1.0 → release_devkit-0.1.1}/src/release_devkit/config.py +0 -0
  22. {release_devkit-0.1.0 → release_devkit-0.1.1}/src/release_devkit/ensure_release_pr.py +0 -0
  23. {release_devkit-0.1.0 → release_devkit-0.1.1}/src/release_devkit/feeds.py +0 -0
  24. {release_devkit-0.1.0 → release_devkit-0.1.1}/src/release_devkit/plan.py +0 -0
  25. {release_devkit-0.1.0 → release_devkit-0.1.1}/src/release_devkit/py.typed +0 -0
  26. {release_devkit-0.1.0 → release_devkit-0.1.1}/tests/test_config.py +0 -0
  27. {release_devkit-0.1.0 → release_devkit-0.1.1}/tests/test_feeds.py +0 -0
  28. {release_devkit-0.1.0 → release_devkit-0.1.1}/tests/test_plan.py +0 -0
@@ -6,7 +6,7 @@ The publication machinery for outernet-foundation repos: the publish pipeline, t
6
6
 
7
7
  The consumer owns everything declarative: package identities, paths, tag prefixes, registry mappings, compose files, and the CI workflow name live in a consumer-authored `publish-config.json`; every command here reads that file. Per-repo copies of this machinery are refused, as are per-ecosystem splits — the seam is internal: one `Feed` adapter per registry over the shared ledger/diff/versioning core.
8
8
 
9
- The package is `release-devkit` (src-layout under `src/release_devkit/`; import `release_devkit`). Name history: `pubpkg` was unclaimable (PyPI's registrar rejects names merely similar to existing ones; nothing ever carried it), so `release-kit` was the first live PyPI identity — then the repo renamed to `release-devkit` (2026-09-21, member of the `-devkit` family): fresh tag ledger starting at `0.1.0`, with a terminal `release-kit` ≤0.1.0 deprecation release pointing here. Runtime dependencies: `bashrun` (all shell-outs), `docker-devkit` (`compute_service_shas`, `collect_repo_references`), `unity-devkit` (`ci_step`, runner setup), `pydantic`/`pydantic-settings` (config + CI env), `typer` (CLIs) — all from PyPI.
9
+ The package is `release-devkit` (src-layout under `src/release_devkit/`; import `release_devkit`). Name history: `pubpkg` was unclaimable (PyPI's registrar rejects names merely similar to existing ones; nothing ever carried it), so `release-kit` was the first live PyPI identity — then the repo renamed to `release-devkit` (2026-09-21, member of the `-devkit` family): fresh tag ledger starting at `0.1.0`, with a terminal `release-kit` ≤0.1.0 deprecation release pointing here. Runtime dependencies: `bashrun` (all shell-outs), `docker-devkit` (`compute_service_shas`, `collect_repo_references`), `ci-devkit` (`ci_step`, runner setup, git-tag ledger), `pydantic`/`pydantic-settings` (config + CI env), `typer` (CLIs) — all from PyPI.
10
10
 
11
11
  ## Self-publication
12
12
 
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: release-devkit
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Publication machinery: per-package tag ledger, path-diff change detection, ephemeral version patching, and per-registry feed adapters (nuget, npm/UPM) driven by a declarative consumer-owned config
5
5
  License-File: LICENSE
6
6
  License-File: NOTICE
7
7
  Requires-Python: >=3.13
8
8
  Requires-Dist: bashrun>=0.1.0
9
+ Requires-Dist: ci-devkit>=0.1.0
9
10
  Requires-Dist: docker-devkit>=0.1.0
10
11
  Requires-Dist: pydantic-settings>=2.9.1
11
12
  Requires-Dist: pydantic>=2.11.7
12
13
  Requires-Dist: typer>=0.17.4
13
- Requires-Dist: unity-devkit>=0.1.0
@@ -1,12 +1,12 @@
1
1
  [project]
2
2
  name = "release-devkit"
3
- version = "0.1.0"
3
+ version = "0.1.1"
4
4
  description = "Publication machinery: per-package tag ledger, path-diff change detection, ephemeral version patching, and per-registry feed adapters (nuget, npm/UPM) driven by a declarative consumer-owned config"
5
5
  requires-python = ">=3.13"
6
6
  dependencies = [
7
7
  "bashrun>=0.1.0",
8
8
  "docker-devkit>=0.1.0",
9
- "unity-devkit>=0.1.0",
9
+ "ci-devkit>=0.1.0",
10
10
  "pydantic>=2.11.7",
11
11
  "pydantic-settings>=2.9.1",
12
12
  "typer>=0.17.4",
@@ -10,7 +10,7 @@ import typer
10
10
  from bashrun import bash, bash_output
11
11
  from pydantic_settings import BaseSettings
12
12
  from docker_devkit.context_sha import compute_service_shas
13
- from unity_devkit.ci_step import ci_step
13
+ from ci_devkit.ci_step import ci_step
14
14
 
15
15
  from .config import PublishConfig, load_config
16
16
  from .ledger import GitLedger
@@ -7,7 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
  from bashrun import bash, bash_output
9
9
  from pydantic_settings import BaseSettings
10
- from unity_devkit.ci_step import ci_step
10
+ from ci_devkit.ci_step import ci_step
11
11
 
12
12
  from .config import load_config
13
13
 
@@ -1,7 +1,11 @@
1
1
  import re
2
2
  from pathlib import Path
3
3
 
4
- from bashrun import bash, bash_check, bash_output
4
+ from ci_devkit.git_tags import (
5
+ create_and_push_tag as push_tag,
6
+ has_changes_since_tag,
7
+ list_tag_versions,
8
+ )
5
9
 
6
10
  # Prerelease-suffixed tags (e.g. 1.0.6-preview) are not stable-ledger versions: the stable flow
7
11
  # must never compute a next version from one. Dev-channel versions never enter the tag space.
@@ -14,20 +18,13 @@ def is_stable_version(version: str) -> bool:
14
18
 
15
19
  class GitLedger:
16
20
  def latest_version(self, prefix: str) -> str | None:
17
- output = bash_output(f'git tag --list "{prefix}*" --sort=-v:refname').strip()
18
- if not output:
19
- return None
20
- for tag in output.splitlines():
21
- version = tag[len(prefix) :]
21
+ for version in list_tag_versions(prefix):
22
22
  if is_stable_version(version):
23
23
  return version
24
24
  return None
25
25
 
26
26
  def has_changes_since(self, tag: str | None, path: Path) -> bool:
27
- if tag is None:
28
- return True
29
- return not bash_check(f"git diff --quiet {tag} HEAD -- {path}")
27
+ return has_changes_since_tag(tag, path)
30
28
 
31
29
  def create_and_push_tag(self, tag: str) -> None:
32
- bash(f"git tag {tag}")
33
- bash(f"git push origin {tag}")
30
+ push_tag(tag)
@@ -7,7 +7,7 @@ from typing import Annotated
7
7
  import typer
8
8
  from bashrun import bash
9
9
  from docker_devkit.image_refs import collect_repo_references
10
- from unity_devkit.ci_step import ci_step
10
+ from ci_devkit.ci_step import ci_step
11
11
 
12
12
  from .config import load_config
13
13
 
@@ -5,8 +5,8 @@ from typing import Annotated
5
5
 
6
6
  import typer
7
7
  from pydantic_settings import BaseSettings
8
- from unity_devkit.ci_step import ci_step
9
- from unity_devkit.setup import configure_git, free_disk_space, install_dotnet, install_node
8
+ from ci_devkit.ci_step import ci_step
9
+ from ci_devkit.setup import configure_git, free_disk_space, install_dotnet, install_node
10
10
 
11
11
  from .config import load_config, select_packages
12
12
  from .feeds import DEV_VERSION_FORMATS, NPM_DEV_DIST_TAG, PublishRequest, build_feeds
@@ -5,8 +5,8 @@ from typing import Annotated
5
5
 
6
6
  import typer
7
7
  from pydantic_settings import BaseSettings
8
- from unity_devkit.ci_step import ci_step
9
- from unity_devkit.setup import configure_git, free_disk_space, install_dotnet, install_node
8
+ from ci_devkit.ci_step import ci_step
9
+ from ci_devkit.setup import configure_git, free_disk_space, install_dotnet, install_node
10
10
 
11
11
  from .config import load_config, select_packages
12
12
  from .feeds import PublishRequest, build_feeds
@@ -41,6 +41,20 @@ wheels = [
41
41
  { url = "https://files.pythonhosted.org/packages/be/9a/749dd28f3defde3690e0280131f9461e4100c43c117f9363798f6dedbb91/bashrun-0.1.0-py3-none-any.whl", hash = "sha256:80f87924f88336460890d669aa1abb6fb8c389b675fdb41ac8d2b6861d4ebddb", size = 7634, upload-time = "2026-09-21T01:47:56.233Z" },
42
42
  ]
43
43
 
44
+ [[package]]
45
+ name = "ci-devkit"
46
+ version = "0.1.0"
47
+ source = { registry = "https://pypi.org/simple" }
48
+ dependencies = [
49
+ { name = "bashrun" },
50
+ { name = "pydantic" },
51
+ { name = "pydantic-settings" },
52
+ ]
53
+ sdist = { url = "https://files.pythonhosted.org/packages/9c/58/e0c1f17fbcf6e7adcc4192d5d0a4300be2b0d0ffd055ff746f0116ad587a/ci_devkit-0.1.0.tar.gz", hash = "sha256:ac1a463effe9a2760ea6d18301d6938c6a47d07cee9d8e14bae0c2d20ab0f377", size = 38920, upload-time = "2026-09-21T22:54:14.99Z" }
54
+ wheels = [
55
+ { url = "https://files.pythonhosted.org/packages/c3/b3/ee5474174a4d8e9626eb0cbac234ea99908ed3988cc8b807fc8f4a2680a6/ci_devkit-0.1.0-py3-none-any.whl", hash = "sha256:3df3faf0821ffc1c32403f0af5b6b1ceb312d4912cae5b58aaf97b20c251874d", size = 26289, upload-time = "2026-09-21T22:54:13.759Z" },
56
+ ]
57
+
44
58
  [[package]]
45
59
  name = "colorama"
46
60
  version = "0.4.6"
@@ -301,11 +315,11 @@ version = "0.0.0.dev0"
301
315
  source = { editable = "." }
302
316
  dependencies = [
303
317
  { name = "bashrun" },
318
+ { name = "ci-devkit" },
304
319
  { name = "docker-devkit" },
305
320
  { name = "pydantic" },
306
321
  { name = "pydantic-settings" },
307
322
  { name = "typer" },
308
- { name = "unity-devkit" },
309
323
  ]
310
324
 
311
325
  [package.dev-dependencies]
@@ -318,11 +332,11 @@ dev = [
318
332
  [package.metadata]
319
333
  requires-dist = [
320
334
  { name = "bashrun", specifier = ">=0.1.0" },
335
+ { name = "ci-devkit", specifier = ">=0.1.0" },
321
336
  { name = "docker-devkit", specifier = ">=0.1.0" },
322
337
  { name = "pydantic", specifier = ">=2.11.7" },
323
338
  { name = "pydantic-settings", specifier = ">=2.9.1" },
324
339
  { name = "typer", specifier = ">=0.17.4" },
325
- { name = "unity-devkit", specifier = ">=0.1.0" },
326
340
  ]
327
341
 
328
342
  [package.metadata.requires-dev]
@@ -414,18 +428,3 @@ sdist = { url = "https://files.pythonhosted.org/packages/a3/26/b09b8010994eccc3c
414
428
  wheels = [
415
429
  { url = "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl", hash = "sha256:65b8397ba37ccbce054456aaccddfc91e6e3083c92824df348d96ca832f3f147", size = 14750, upload-time = "2026-08-12T12:37:24.648Z" },
416
430
  ]
417
-
418
- [[package]]
419
- name = "unity-devkit"
420
- version = "0.1.0"
421
- source = { registry = "https://pypi.org/simple" }
422
- dependencies = [
423
- { name = "bashrun" },
424
- { name = "pydantic" },
425
- { name = "pydantic-settings" },
426
- { name = "typer" },
427
- ]
428
- sdist = { url = "https://files.pythonhosted.org/packages/6d/04/0a44e72ea2d4d9ecfacdaaadc45e3bf287c9b77232ff5a6a3f97d73a65f0/unity_devkit-0.1.0.tar.gz", hash = "sha256:5c0d607d7ff66216f037bf0276683cbda4d6b2553480761fbd175c9029fc8de0", size = 50144, upload-time = "2026-09-21T22:17:36.414Z" }
429
- wheels = [
430
- { url = "https://files.pythonhosted.org/packages/e4/f9/75c751b4a5e6ef485c912b456da3685ec80a47a08a69082d2912cda166db/unity_devkit-0.1.0-py3-none-any.whl", hash = "sha256:72f84a3560bf795f335634b8c67420d648c6df3fd2432d954dbb0c7104546a21", size = 38841, upload-time = "2026-09-21T22:17:35.41Z" },
431
- ]
File without changes
File without changes
File without changes
File without changes
File without changes