corio 2.3.2a2__tar.gz → 2.3.4__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 (170) hide show
  1. {corio-2.3.2a2 → corio-2.3.4}/PKG-INFO +1 -1
  2. {corio-2.3.2a2 → corio-2.3.4}/corio/entrypoint.py +1 -1
  3. {corio-2.3.2a2 → corio-2.3.4}/corio/infra/incrementor_pyproject.py +1 -6
  4. {corio-2.3.2a2 → corio-2.3.4}/corio/infra/project.py +0 -2
  5. {corio-2.3.2a2 → corio-2.3.4}/corio/infra/releaser.py +54 -29
  6. {corio-2.3.2a2 → corio-2.3.4}/corio/pyproject.package.toml +2 -2
  7. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_infra.py +27 -8
  8. {corio-2.3.2a2 → corio-2.3.4}/corio.egg-info/PKG-INFO +1 -1
  9. {corio-2.3.2a2 → corio-2.3.4}/pyproject.toml +2 -2
  10. {corio-2.3.2a2 → corio-2.3.4}/LICENSE +0 -0
  11. {corio-2.3.2a2 → corio-2.3.4}/README.md +0 -0
  12. {corio-2.3.2a2 → corio-2.3.4}/corio/__init__.py +0 -0
  13. {corio-2.3.2a2 → corio-2.3.4}/corio/ai/__init__.py +0 -0
  14. {corio-2.3.2a2 → corio-2.3.4}/corio/ai/agentic.py +0 -0
  15. {corio-2.3.2a2 → corio-2.3.4}/corio/ai/infer.py +0 -0
  16. {corio-2.3.2a2 → corio-2.3.4}/corio/aio.py +0 -0
  17. {corio-2.3.2a2 → corio-2.3.4}/corio/api.py +0 -0
  18. {corio-2.3.2a2 → corio-2.3.4}/corio/augmentation.py +0 -0
  19. {corio-2.3.2a2 → corio-2.3.4}/corio/av.py +0 -0
  20. {corio-2.3.2a2 → corio-2.3.4}/corio/caching.py +0 -0
  21. {corio-2.3.2a2 → corio-2.3.4}/corio/constants.py +0 -0
  22. {corio-2.3.2a2 → corio-2.3.4}/corio/context.py +0 -0
  23. {corio-2.3.2a2 → corio-2.3.4}/corio/dataclass.py +0 -0
  24. {corio-2.3.2a2 → corio-2.3.4}/corio/datatype.py +0 -0
  25. {corio-2.3.2a2 → corio-2.3.4}/corio/db/__init__.py +0 -0
  26. {corio-2.3.2a2 → corio-2.3.4}/corio/db/document.py +0 -0
  27. {corio-2.3.2a2 → corio-2.3.4}/corio/debug.py +0 -0
  28. {corio-2.3.2a2 → corio-2.3.4}/corio/dm.py +0 -0
  29. {corio-2.3.2a2 → corio-2.3.4}/corio/dns/__init__.py +0 -0
  30. {corio-2.3.2a2 → corio-2.3.4}/corio/dns/client.py +0 -0
  31. {corio-2.3.2a2 → corio-2.3.4}/corio/dns/dm.py +0 -0
  32. {corio-2.3.2a2 → corio-2.3.4}/corio/dns/proxy.py +0 -0
  33. {corio-2.3.2a2 → corio-2.3.4}/corio/dns/server.py +0 -0
  34. {corio-2.3.2a2 → corio-2.3.4}/corio/docker/__init__.py +0 -0
  35. {corio-2.3.2a2 → corio-2.3.4}/corio/dt.py +0 -0
  36. {corio-2.3.2a2 → corio-2.3.4}/corio/encrypt.py +0 -0
  37. {corio-2.3.2a2 → corio-2.3.4}/corio/env.py +0 -0
  38. {corio-2.3.2a2 → corio-2.3.4}/corio/function.py +0 -0
  39. {corio-2.3.2a2 → corio-2.3.4}/corio/google_api.py +0 -0
  40. {corio-2.3.2a2 → corio-2.3.4}/corio/ha/__init__.py +0 -0
  41. {corio-2.3.2a2 → corio-2.3.4}/corio/ha/constants.py +0 -0
  42. {corio-2.3.2a2 → corio-2.3.4}/corio/ha/core.py +0 -0
  43. {corio-2.3.2a2 → corio-2.3.4}/corio/ha/supervisor.py +0 -0
  44. {corio-2.3.2a2 → corio-2.3.4}/corio/ha/utils.py +0 -0
  45. {corio-2.3.2a2 → corio-2.3.4}/corio/hash.py +0 -0
  46. {corio-2.3.2a2 → corio-2.3.4}/corio/hfh.py +0 -0
  47. {corio-2.3.2a2 → corio-2.3.4}/corio/hook.py +0 -0
  48. {corio-2.3.2a2 → corio-2.3.4}/corio/https.py +0 -0
  49. {corio-2.3.2a2 → corio-2.3.4}/corio/infra/__init__.py +0 -0
  50. {corio-2.3.2a2 → corio-2.3.4}/corio/infra/api.py +0 -0
  51. {corio-2.3.2a2 → corio-2.3.4}/corio/infra/repository.py +0 -0
  52. {corio-2.3.2a2 → corio-2.3.4}/corio/infra/stack.py +0 -0
  53. {corio-2.3.2a2 → corio-2.3.4}/corio/inherit.py +0 -0
  54. {corio-2.3.2a2 → corio-2.3.4}/corio/inspection.py +0 -0
  55. {corio-2.3.2a2 → corio-2.3.4}/corio/interface/__init__.py +0 -0
  56. {corio-2.3.2a2 → corio-2.3.4}/corio/interface/context.py +0 -0
  57. {corio-2.3.2a2 → corio-2.3.4}/corio/interface/controls.py +0 -0
  58. {corio-2.3.2a2 → corio-2.3.4}/corio/interface/interface.py +0 -0
  59. {corio-2.3.2a2 → corio-2.3.4}/corio/iterator.py +0 -0
  60. {corio-2.3.2a2 → corio-2.3.4}/corio/jsn.py +0 -0
  61. {corio-2.3.2a2 → corio-2.3.4}/corio/json_fix.py +0 -0
  62. {corio-2.3.2a2 → corio-2.3.4}/corio/logs.py +0 -0
  63. {corio-2.3.2a2 → corio-2.3.4}/corio/markup.py +0 -0
  64. {corio-2.3.2a2 → corio-2.3.4}/corio/merging.py +0 -0
  65. {corio-2.3.2a2 → corio-2.3.4}/corio/metric.py +0 -0
  66. {corio-2.3.2a2 → corio-2.3.4}/corio/mqtt.py +0 -0
  67. {corio-2.3.2a2 → corio-2.3.4}/corio/name.py +0 -0
  68. {corio-2.3.2a2 → corio-2.3.4}/corio/net.py +0 -0
  69. {corio-2.3.2a2 → corio-2.3.4}/corio/netrc.py +0 -0
  70. {corio-2.3.2a2 → corio-2.3.4}/corio/openai.py +0 -0
  71. {corio-2.3.2a2 → corio-2.3.4}/corio/parallel.py +0 -0
  72. {corio-2.3.2a2 → corio-2.3.4}/corio/path/__init__.py +0 -0
  73. {corio-2.3.2a2 → corio-2.3.4}/corio/path/app.py +0 -0
  74. {corio-2.3.2a2 → corio-2.3.4}/corio/path/path.py +0 -0
  75. {corio-2.3.2a2 → corio-2.3.4}/corio/path/type.py +0 -0
  76. {corio-2.3.2a2 → corio-2.3.4}/corio/paths.py +0 -0
  77. {corio-2.3.2a2 → corio-2.3.4}/corio/patterns.py +0 -0
  78. {corio-2.3.2a2 → corio-2.3.4}/corio/pdf.py +0 -0
  79. {corio-2.3.2a2 → corio-2.3.4}/corio/plat.py +0 -0
  80. {corio-2.3.2a2 → corio-2.3.4}/corio/process.py +0 -0
  81. {corio-2.3.2a2 → corio-2.3.4}/corio/profiling.py +0 -0
  82. {corio-2.3.2a2 → corio-2.3.4}/corio/rand.py +0 -0
  83. {corio-2.3.2a2 → corio-2.3.4}/corio/sec.py +0 -0
  84. {corio-2.3.2a2 → corio-2.3.4}/corio/semantic.py +0 -0
  85. {corio-2.3.2a2 → corio-2.3.4}/corio/sets.py +0 -0
  86. {corio-2.3.2a2 → corio-2.3.4}/corio/setup/__init__.py +0 -0
  87. {corio-2.3.2a2 → corio-2.3.4}/corio/spaces.py +0 -0
  88. {corio-2.3.2a2 → corio-2.3.4}/corio/strings.py +0 -0
  89. {corio-2.3.2a2 → corio-2.3.4}/corio/tabular.py +0 -0
  90. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/__init__.py +0 -0
  91. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/conftest.py +0 -0
  92. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/helpers.py +0 -0
  93. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_caching.py +0 -0
  94. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_datatype.py +0 -0
  95. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_dns.py +0 -0
  96. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_dt.py +0 -0
  97. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_encrypt.py +0 -0
  98. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_env.py +0 -0
  99. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_hash.py +0 -0
  100. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_hook.py +0 -0
  101. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_iterator.py +0 -0
  102. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_jsn.py +0 -0
  103. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_name.py +0 -0
  104. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_path.py +0 -0
  105. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_patterns.py +0 -0
  106. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_rand.py +0 -0
  107. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_strings.py +0 -0
  108. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_toml.py +0 -0
  109. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_tools.py +0 -0
  110. {corio-2.3.2a2 → corio-2.3.4}/corio/tests/test_yml.py +0 -0
  111. {corio-2.3.2a2 → corio-2.3.4}/corio/tokenization.py +0 -0
  112. {corio-2.3.2a2 → corio-2.3.4}/corio/toml.py +0 -0
  113. {corio-2.3.2a2 → corio-2.3.4}/corio/tools.py +0 -0
  114. {corio-2.3.2a2 → corio-2.3.4}/corio/unicode.py +0 -0
  115. {corio-2.3.2a2 → corio-2.3.4}/corio/version/__init__.py +0 -0
  116. {corio-2.3.2a2 → corio-2.3.4}/corio/version/version.py +0 -0
  117. {corio-2.3.2a2 → corio-2.3.4}/corio/webhook.py +0 -0
  118. {corio-2.3.2a2 → corio-2.3.4}/corio/yml.py +0 -0
  119. {corio-2.3.2a2 → corio-2.3.4}/corio/youtube.py +0 -0
  120. {corio-2.3.2a2 → corio-2.3.4}/corio.egg-info/SOURCES.txt +0 -0
  121. {corio-2.3.2a2 → corio-2.3.4}/corio.egg-info/dependency_links.txt +0 -0
  122. {corio-2.3.2a2 → corio-2.3.4}/corio.egg-info/entry_points.txt +0 -0
  123. {corio-2.3.2a2 → corio-2.3.4}/corio.egg-info/requires.txt +0 -0
  124. {corio-2.3.2a2 → corio-2.3.4}/corio.egg-info/top_level.txt +0 -0
  125. {corio-2.3.2a2 → corio-2.3.4}/scripts/add-service +0 -0
  126. {corio-2.3.2a2 → corio-2.3.4}/scripts/add-user-path +0 -0
  127. {corio-2.3.2a2 → corio-2.3.4}/scripts/add-ve-shell +0 -0
  128. {corio-2.3.2a2 → corio-2.3.4}/scripts/apt-essentials +0 -0
  129. {corio-2.3.2a2 → corio-2.3.4}/scripts/apt-headless +0 -0
  130. {corio-2.3.2a2 → corio-2.3.4}/scripts/auth-token +0 -0
  131. {corio-2.3.2a2 → corio-2.3.4}/scripts/compose-update +0 -0
  132. {corio-2.3.2a2 → corio-2.3.4}/scripts/compress-dir +0 -0
  133. {corio-2.3.2a2 → corio-2.3.4}/scripts/cru +0 -0
  134. {corio-2.3.2a2 → corio-2.3.4}/scripts/docker-build-bases +0 -0
  135. {corio-2.3.2a2 → corio-2.3.4}/scripts/docker-build-bases-dev +0 -0
  136. {corio-2.3.2a2 → corio-2.3.4}/scripts/docker-install-deps +0 -0
  137. {corio-2.3.2a2 → corio-2.3.4}/scripts/docker-install-prod +0 -0
  138. {corio-2.3.2a2 → corio-2.3.4}/scripts/docker-prune +0 -0
  139. {corio-2.3.2a2 → corio-2.3.4}/scripts/docker-sandbox +0 -0
  140. {corio-2.3.2a2 → corio-2.3.4}/scripts/docker-sandbox-init +0 -0
  141. {corio-2.3.2a2 → corio-2.3.4}/scripts/docs-deploy +0 -0
  142. {corio-2.3.2a2 → corio-2.3.4}/scripts/download +0 -0
  143. {corio-2.3.2a2 → corio-2.3.4}/scripts/encrypt-secrets +0 -0
  144. {corio-2.3.2a2 → corio-2.3.4}/scripts/fmtr-test-script +0 -0
  145. {corio-2.3.2a2 → corio-2.3.4}/scripts/git-clone +0 -0
  146. {corio-2.3.2a2 → corio-2.3.4}/scripts/ha-addon-launch +0 -0
  147. {corio-2.3.2a2 → corio-2.3.4}/scripts/infra +0 -0
  148. {corio-2.3.2a2 → corio-2.3.4}/scripts/install-browser +0 -0
  149. {corio-2.3.2a2 → corio-2.3.4}/scripts/install-docker +0 -0
  150. {corio-2.3.2a2 → corio-2.3.4}/scripts/install-ts +0 -0
  151. {corio-2.3.2a2 → corio-2.3.4}/scripts/install-ys +0 -0
  152. {corio-2.3.2a2 → corio-2.3.4}/scripts/mirror-dir +0 -0
  153. {corio-2.3.2a2 → corio-2.3.4}/scripts/opt-dev-init +0 -0
  154. {corio-2.3.2a2 → corio-2.3.4}/scripts/parse-args +0 -0
  155. {corio-2.3.2a2 → corio-2.3.4}/scripts/pypi-check +0 -0
  156. {corio-2.3.2a2 → corio-2.3.4}/scripts/pypi-reserve +0 -0
  157. {corio-2.3.2a2 → corio-2.3.4}/scripts/run-script +0 -0
  158. {corio-2.3.2a2 → corio-2.3.4}/scripts/run-tests +0 -0
  159. {corio-2.3.2a2 → corio-2.3.4}/scripts/set-password +0 -0
  160. {corio-2.3.2a2 → corio-2.3.4}/scripts/set-secure-path +0 -0
  161. {corio-2.3.2a2 → corio-2.3.4}/scripts/set-user-sudo +0 -0
  162. {corio-2.3.2a2 → corio-2.3.4}/scripts/snips-install +0 -0
  163. {corio-2.3.2a2 → corio-2.3.4}/scripts/ssh-auth +0 -0
  164. {corio-2.3.2a2 → corio-2.3.4}/scripts/ssh-serve +0 -0
  165. {corio-2.3.2a2 → corio-2.3.4}/scripts/tasmota-config +0 -0
  166. {corio-2.3.2a2 → corio-2.3.4}/scripts/tasmota-flash +0 -0
  167. {corio-2.3.2a2 → corio-2.3.4}/scripts/tasmota-terminal +0 -0
  168. {corio-2.3.2a2 → corio-2.3.4}/scripts/vlc-tn +0 -0
  169. {corio-2.3.2a2 → corio-2.3.4}/scripts/vm-launch +0 -0
  170. {corio-2.3.2a2 → corio-2.3.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: corio
3
- Version: 2.3.2a2
3
+ Version: 2.3.4
4
4
  Summary: Collection of high-level tools to simplify everyday development tasks, with a focus on AI/ML
5
5
  Author-email: Frontmatter AI <innovative.fowler@mask.pro.fmtr.dev>
6
6
  License-Expression: Apache-2.0
@@ -34,7 +34,7 @@ class Pyproject(dm.Base):
34
34
  from corio.paths import paths
35
35
 
36
36
  project = Project(paths.name_ns)
37
- project.versions.pinned = project.versions.old
37
+ project.versions.pinned = project.versions.new
38
38
  return IncrementorPyproject(project.releaser).apply()
39
39
 
40
40
 
@@ -1,4 +1,3 @@
1
- from copy import deepcopy
2
1
  from functools import cached_property
3
2
  from itertools import chain
4
3
  from packaging.requirements import Requirement, InvalidRequirement
@@ -115,15 +114,11 @@ class IncrementorPyproject(Incrementor):
115
114
  return None
116
115
 
117
116
  data = self.path.read_toml()
118
- original_data = deepcopy(data)
119
117
 
120
118
  data = self._enrich_toml(data)
121
119
  if data is None:
122
120
  return None
123
121
 
124
- if data == original_data:
125
- return None
126
-
127
122
  self.path.write_toml(data)
128
123
  return self.path
129
124
 
@@ -357,4 +352,4 @@ class GeneratorTestEnvs:
357
352
  for module in self._tests_modules:
358
353
  path_test = self.get_path_test(module)
359
354
  envs |= self.get_env(module, self.get_deps(module), path_test)
360
- return envs
355
+ return envs
@@ -103,8 +103,6 @@ class Versions(Inherit[Project]):
103
103
 
104
104
  def __init__(self, project: Project, pinned: str | None = None):
105
105
  super().__init__(project)
106
- self.old = self.get()
107
-
108
106
  self.pinned = None
109
107
  if pinned:
110
108
  self.pinned = version.Version.parse(pinned)
@@ -224,40 +224,65 @@ class Incrementor(Inherit[Releaser]):
224
224
 
225
225
 
226
226
  class IncrementorVersion(Incrementor):
227
- @logger.instrument('Incrementing release version in-memory for "{self.paths.name_ns}"...')
228
- def apply(self) -> Path | list[Path] | None:
229
- old = self.versions.old
230
-
231
- old_tag = f"v{old}"
232
- has_old_tag = old_tag in self.repo.tags.all
233
-
234
- if self.versions.pinned:
235
- new = self.versions.pinned
236
- if not has_old_tag and new != old:
237
- logger.warning(
238
- f'Current version tag "{old_tag}" was not found. '
239
- f'Using pinned version "{new}" and continuing.'
240
- )
241
- elif not has_old_tag:
242
- logger.warning(
243
- f'Current version tag "{old_tag}" was not found. '
244
- f'Assuming previous release failed and reusing version "{new}".'
245
- )
246
- elif not has_old_tag:
227
+ @cached_property
228
+ def old(self):
229
+ return self.paths.metadata.version_obj
230
+
231
+ @cached_property
232
+ def old_tag(self):
233
+ return self.old.tag
234
+
235
+ @cached_property
236
+ def has_old_tag(self):
237
+ return self.old_tag in self.repo.tags.all
238
+
239
+ @cached_property
240
+ def pinned_tag(self):
241
+ if not self.versions.pinned:
242
+ return None
243
+ return self.versions.pinned.tag
244
+
245
+ @cached_property
246
+ def pinned(self):
247
+ new = self.versions.pinned
248
+ if not new:
249
+ return None
250
+
251
+ if not self.has_old_tag:
252
+ raise RuntimeError(
253
+ f'Current version tag "{self.old_tag}" was not found. '
254
+ f'Refusing pinned release "{new}" until the previous release state is resolved.'
255
+ )
256
+
257
+ if self.pinned_tag in self.repo.tags.all:
258
+ raise RuntimeError(f'Pinned version tag already exists: "{self.pinned_tag}".')
259
+
260
+ return new
261
+
262
+ @cached_property
263
+ def new(self):
264
+ new = self.pinned
265
+ if new:
266
+ return new
267
+
268
+ if not self.has_old_tag:
247
269
  logger.warning(
248
- f'Current version tag "{old_tag}" was not found. '
249
- f'Assuming previous release failed and reusing version "{old}".'
270
+ f'Current version tag "{self.old_tag}" was not found. '
271
+ f'Assuming previous release failed and reusing version "{self.old}".'
250
272
  )
251
- new = old
252
- elif old.prerelease:
253
- new = old.bump_prerelease()
273
+ return self.old
274
+
275
+ if self.old.prerelease:
276
+ return self.old.bump_prerelease()
254
277
  else:
255
- new = old.bump_patch()
278
+ return self.old.bump_patch()
256
279
 
257
- if old != new:
258
- logger.info(f'Incrementing runtime version {old} {Constants.ARROW_RIGHT} {new}...')
280
+ @logger.instrument('Incrementing release version in-memory for "{self.paths.name_ns}"...')
281
+ def apply(self) -> Path | list[Path] | None:
282
+ if self.old != self.new:
283
+ logger.info(f'Incrementing runtime version {self.old} {Constants.ARROW_RIGHT} {self.new}...')
259
284
 
260
- self.paths.metadata.version = str(new)
285
+ self.paths.metadata.version = str(self.new)
261
286
  return None
262
287
 
263
288
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "corio"
3
- version = "2.3.2-alpha002"
3
+ version = "2.3.4"
4
4
  description = "Collection of high-level tools to simplify everyday development tasks, with a focus on AI/ML"
5
5
  readme = "README.md"
6
6
  dependencies = []
@@ -83,7 +83,7 @@ Homepage = "https://github.com/fmtr/corio"
83
83
  corio = "corio.entrypoint:main"
84
84
 
85
85
  [tool.corio.metadata]
86
- version = "2.3.2-alpha002"
86
+ version = "2.3.4"
87
87
  port = 0
88
88
  base = "python"
89
89
  description = "Collection of high-level tools to simplify everyday development tasks, with a focus on AI/ML"
@@ -349,10 +349,10 @@ def test_repository_get_most_recent_release_tag_filters_and_orders():
349
349
 
350
350
 
351
351
  def _make_version_incrementor(*, old: str, pinned: str | None, tags: set[str]):
352
- metadata = SimpleNamespace(version=old)
352
+ metadata = SimpleNamespace(version=old, version_obj=version.parse(old))
353
353
  parent = SimpleNamespace(
354
354
  paths=SimpleNamespace(name_ns="corio", metadata=metadata),
355
- versions=SimpleNamespace(old=version.parse(old), pinned=version.parse(pinned) if pinned else None),
355
+ versions=SimpleNamespace(pinned=version.parse(pinned) if pinned else None),
356
356
  repo=SimpleNamespace(tags=SimpleNamespace(all=tags)),
357
357
  )
358
358
  return IncrementorVersion(parent), metadata
@@ -370,16 +370,35 @@ def test_incrementor_version_does_not_increment_when_old_tag_missing():
370
370
  assert metadata.version == "1.2.3"
371
371
 
372
372
 
373
- def test_incrementor_version_uses_pinned_even_when_old_tag_missing():
374
- incrementor, metadata = _make_version_incrementor(
373
+ def test_incrementor_version_raises_when_pinned_and_old_tag_missing():
374
+ incrementor, _ = _make_version_incrementor(
375
375
  old="1.2.3",
376
376
  pinned="2.0.0",
377
377
  tags={"v1.2.2"},
378
378
  )
379
379
 
380
- incrementor.apply()
380
+ try:
381
+ incrementor.apply()
382
+ except RuntimeError as exception:
383
+ assert 'Current version tag "v1.2.3" was not found.' in str(exception)
384
+ assert 'Refusing pinned release "2.0.0"' in str(exception)
385
+ else:
386
+ raise AssertionError("Expected RuntimeError when old tag is missing for pinned release.")
387
+
381
388
 
382
- assert metadata.version == "2.0.0"
389
+ def test_incrementor_version_raises_when_pinned_tag_exists():
390
+ incrementor, _ = _make_version_incrementor(
391
+ old="1.2.3",
392
+ pinned="2.0.0",
393
+ tags={"v1.2.3", "v2.0.0"},
394
+ )
395
+
396
+ try:
397
+ incrementor.apply()
398
+ except RuntimeError as exception:
399
+ assert 'Pinned version tag already exists: "v2.0.0".' in str(exception)
400
+ else:
401
+ raise AssertionError("Expected RuntimeError when pinned tag already exists.")
383
402
 
384
403
 
385
404
  def test_releaser_run_commits_only_after_tests_pass(monkeypatch):
@@ -434,5 +453,5 @@ def test_releaser_run_continues_when_pre_tests_fail(monkeypatch):
434
453
  assert events == ["fetch", "increment", "tests", "commit", "push", "fetch"]
435
454
 
436
455
 
437
- def test_intentional_failure_for_testing():
438
- assert False, "Intentional failing test for test-pipeline verification."
456
+ # def test_intentional_failure_for_testing():
457
+ # assert False, "Intentional failing test for test-pipeline verification."
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: corio
3
- Version: 2.3.2a2
3
+ Version: 2.3.4
4
4
  Summary: Collection of high-level tools to simplify everyday development tasks, with a focus on AI/ML
5
5
  Author-email: Frontmatter AI <innovative.fowler@mask.pro.fmtr.dev>
6
6
  License-Expression: Apache-2.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "corio"
3
- version = "2.3.2-alpha002"
3
+ version = "2.3.4"
4
4
  description = "Collection of high-level tools to simplify everyday development tasks, with a focus on AI/ML"
5
5
  readme = "README.md"
6
6
  dependencies = []
@@ -83,7 +83,7 @@ Homepage = "https://github.com/fmtr/corio"
83
83
  corio = "corio.entrypoint:main"
84
84
 
85
85
  [tool.corio.metadata]
86
- version = "2.3.2-alpha002"
86
+ version = "2.3.4"
87
87
  port = 0
88
88
  base = "python"
89
89
  description = "Collection of high-level tools to simplify everyday development tasks, with a focus on AI/ML"
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
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