omdev 0.0.38__tar.gz → 0.0.40__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 (563) hide show
  1. {omdev-0.0.38/omdev.egg-info → omdev-0.0.40}/PKG-INFO +6 -6
  2. {omdev-0.0.38 → omdev-0.0.40}/omdev/.om-manifests.json +1 -1
  3. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/data/actions.py +1 -1
  4. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/data/specs.py +1 -1
  5. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/cli.py +6 -2
  6. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/gen.py +5 -0
  7. omdev-0.0.40/omdev/dockerdev/resources/.python-versions.json +19 -0
  8. omdev-0.0.40/omdev/dockerdev/resources/fragments/om.sh +20 -0
  9. {omdev-0.0.38 → omdev-0.0.40}/omdev/packaging/marshal.py +10 -6
  10. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/ci.py +20 -14
  11. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/interp.py +12 -9
  12. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/pidfiles.py +12 -9
  13. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/pyproject.py +12 -9
  14. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/jsonschema/codegen/cli.py +2 -2
  15. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/jsonschema/codegen/names.py +13 -15
  16. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/jsonschema/codegen/rendering.py +6 -6
  17. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/json/processing.py +9 -9
  18. omdev-0.0.40/omdev/tools/shell.py +239 -0
  19. {omdev-0.0.38 → omdev-0.0.40/omdev.egg-info}/PKG-INFO +6 -6
  20. {omdev-0.0.38 → omdev-0.0.40}/omdev.egg-info/SOURCES.txt +1 -0
  21. {omdev-0.0.38 → omdev-0.0.40}/omdev.egg-info/requires.txt +5 -5
  22. {omdev-0.0.38 → omdev-0.0.40}/pyproject.toml +6 -6
  23. omdev-0.0.38/omdev/dockerdev/resources/.python-versions.json +0 -19
  24. omdev-0.0.38/omdev/tools/shell.py +0 -119
  25. {omdev-0.0.38 → omdev-0.0.40}/LICENSE +0 -0
  26. {omdev-0.0.38 → omdev-0.0.40}/MANIFEST.in +0 -0
  27. {omdev-0.0.38 → omdev-0.0.40}/README.md +0 -0
  28. {omdev-0.0.38 → omdev-0.0.40}/omdev/README.md +0 -0
  29. {omdev-0.0.38 → omdev-0.0.40}/omdev/__about__.py +0 -0
  30. {omdev-0.0.38 → omdev-0.0.40}/omdev/__init__.py +0 -0
  31. {omdev-0.0.38 → omdev-0.0.40}/omdev/amalg/__init__.py +0 -0
  32. {omdev-0.0.38 → omdev-0.0.40}/omdev/amalg/__main__.py +0 -0
  33. {omdev-0.0.38 → omdev-0.0.40}/omdev/amalg/cli/__init__.py +0 -0
  34. {omdev-0.0.38 → omdev-0.0.40}/omdev/amalg/cli/main.py +0 -0
  35. {omdev-0.0.38 → omdev-0.0.40}/omdev/amalg/gen/__init__.py +0 -0
  36. {omdev-0.0.38 → omdev-0.0.40}/omdev/amalg/gen/gen.py +0 -0
  37. {omdev-0.0.38 → omdev-0.0.40}/omdev/amalg/gen/imports.py +0 -0
  38. {omdev-0.0.38 → omdev-0.0.40}/omdev/amalg/gen/manifests.py +0 -0
  39. {omdev-0.0.38 → omdev-0.0.40}/omdev/amalg/gen/resources.py +0 -0
  40. {omdev-0.0.38 → omdev-0.0.40}/omdev/amalg/gen/srcfiles.py +0 -0
  41. {omdev-0.0.38 → omdev-0.0.40}/omdev/amalg/gen/strip.py +0 -0
  42. {omdev-0.0.38 → omdev-0.0.40}/omdev/amalg/gen/types.py +0 -0
  43. {omdev-0.0.38 → omdev-0.0.40}/omdev/amalg/gen/typing.py +0 -0
  44. {omdev-0.0.38 → omdev-0.0.40}/omdev/amalg/info.py +0 -0
  45. {omdev-0.0.38 → omdev-0.0.40}/omdev/amalg/sources.py +0 -0
  46. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/__init__.py +0 -0
  47. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/compute/__init__.py +0 -0
  48. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/compute/cache.py +0 -0
  49. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/compute/contexts.py +0 -0
  50. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/compute/currents.py +0 -0
  51. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/compute/fns.py +0 -0
  52. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/compute/resolvers.py +0 -0
  53. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/compute/storage.py +0 -0
  54. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/compute/types.py +0 -0
  55. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/data/__init__.py +0 -0
  56. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/data/cache.py +0 -0
  57. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/data/consts.py +0 -0
  58. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/data/defaults.py +0 -0
  59. {omdev-0.0.38 → omdev-0.0.40}/omdev/cache/data/manifests.py +0 -0
  60. {omdev-0.0.38 → omdev-0.0.40}/omdev/capi/__init__.py +0 -0
  61. {omdev-0.0.38 → omdev-0.0.40}/omdev/capi/darwin/__init__.py +0 -0
  62. {omdev-0.0.38 → omdev-0.0.40}/omdev/capi/darwin/aps.py +0 -0
  63. {omdev-0.0.38 → omdev-0.0.40}/omdev/capi/darwin/ax.py +0 -0
  64. {omdev-0.0.38 → omdev-0.0.40}/omdev/capi/darwin/cf.py +0 -0
  65. {omdev-0.0.38 → omdev-0.0.40}/omdev/capi/darwin/cg.py +0 -0
  66. {omdev-0.0.38 → omdev-0.0.40}/omdev/capi/linux/__init__.py +0 -0
  67. {omdev-0.0.38 → omdev-0.0.40}/omdev/capi/linux/x11.py +0 -0
  68. {omdev-0.0.38 → omdev-0.0.40}/omdev/cc/__init__.py +0 -0
  69. {omdev-0.0.38 → omdev-0.0.40}/omdev/cc/__main__.py +0 -0
  70. {omdev-0.0.38 → omdev-0.0.40}/omdev/cc/cdeps.py +0 -0
  71. {omdev-0.0.38 → omdev-0.0.40}/omdev/cc/cdeps.toml +0 -0
  72. {omdev-0.0.38 → omdev-0.0.40}/omdev/cc/cli.py +0 -0
  73. {omdev-0.0.38 → omdev-0.0.40}/omdev/cc/srclangs.py +0 -0
  74. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/__init__.py +0 -0
  75. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_boilerplate.cc +0 -0
  76. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/LICENSE +0 -0
  77. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/__init__.py +0 -0
  78. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/build_ext.py +0 -0
  79. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  80. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  81. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/compilers/options.py +0 -0
  82. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  83. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/dir_util.py +0 -0
  84. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/errors.py +0 -0
  85. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/extension.py +0 -0
  86. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/file_util.py +0 -0
  87. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/modified.py +0 -0
  88. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/spawn.py +0 -0
  89. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/sysconfig.py +0 -0
  90. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/util.py +0 -0
  91. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/_distutils/version.py +0 -0
  92. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/build.py +0 -0
  93. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/cmake.py +0 -0
  94. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/configs.py +0 -0
  95. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/importhook.py +0 -0
  96. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/magic.py +0 -0
  97. {omdev-0.0.38 → omdev-0.0.40}/omdev/cexts/scan.py +0 -0
  98. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/__init__.py +0 -0
  99. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/__main__.py +0 -0
  100. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/cache.py +0 -0
  101. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/ci.py +0 -0
  102. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/compose.py +0 -0
  103. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/consts.py +0 -0
  104. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/docker/__init__.py +0 -0
  105. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/docker/buildcaching.py +0 -0
  106. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/docker/cache.py +0 -0
  107. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/docker/cacheserved/__init__.py +0 -0
  108. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/docker/cacheserved/cache.py +0 -0
  109. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/docker/cacheserved/manifests.py +0 -0
  110. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/docker/cmds.py +0 -0
  111. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/docker/dataserver.py +0 -0
  112. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/docker/imagepulling.py +0 -0
  113. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/docker/inject.py +0 -0
  114. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/docker/packing.py +0 -0
  115. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/docker/repositories.py +0 -0
  116. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/docker/utils.py +0 -0
  117. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/github/__init__.py +0 -0
  118. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/github/api/__init__.py +0 -0
  119. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/github/api/clients.py +0 -0
  120. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/github/api/v1/__init__.py +0 -0
  121. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/github/api/v1/api.py +0 -0
  122. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/github/api/v1/client.py +0 -0
  123. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/github/api/v2/__init__.py +0 -0
  124. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/github/api/v2/api.py +0 -0
  125. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/github/api/v2/azure.py +0 -0
  126. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/github/api/v2/client.py +0 -0
  127. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/github/bootstrap.py +0 -0
  128. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/github/cache.py +0 -0
  129. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/github/cli.py +0 -0
  130. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/github/env.py +0 -0
  131. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/github/inject.py +0 -0
  132. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/inject.py +0 -0
  133. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/requirements.py +0 -0
  134. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/shell.py +0 -0
  135. {omdev-0.0.38 → omdev-0.0.40}/omdev/ci/utils.py +0 -0
  136. {omdev-0.0.38 → omdev-0.0.40}/omdev/cli/__init__.py +0 -0
  137. {omdev-0.0.38 → omdev-0.0.40}/omdev/cli/__main__.py +0 -0
  138. {omdev-0.0.38 → omdev-0.0.40}/omdev/cli/_pathhack.py +0 -0
  139. {omdev-0.0.38 → omdev-0.0.40}/omdev/cli/clicli.py +0 -0
  140. {omdev-0.0.38 → omdev-0.0.40}/omdev/cli/install.py +0 -0
  141. {omdev-0.0.38 → omdev-0.0.40}/omdev/cli/main.py +0 -0
  142. {omdev-0.0.38 → omdev-0.0.40}/omdev/cli/managers.py +0 -0
  143. {omdev-0.0.38 → omdev-0.0.40}/omdev/cli/types.py +0 -0
  144. {omdev-0.0.38 → omdev-0.0.40}/omdev/clipboard/__init__.py +0 -0
  145. {omdev-0.0.38 → omdev-0.0.40}/omdev/clipboard/capi/__init__.py +0 -0
  146. {omdev-0.0.38 → omdev-0.0.40}/omdev/clipboard/capi/darwin_cf.py +0 -0
  147. {omdev-0.0.38 → omdev-0.0.40}/omdev/clipboard/capi/linux_x11.py +0 -0
  148. {omdev-0.0.38 → omdev-0.0.40}/omdev/clipboard/commands.py +0 -0
  149. {omdev-0.0.38 → omdev-0.0.40}/omdev/clipboard/platform.py +0 -0
  150. {omdev-0.0.38 → omdev-0.0.40}/omdev/clipboard/types.py +0 -0
  151. {omdev-0.0.38 → omdev-0.0.40}/omdev/cmake.py +0 -0
  152. {omdev-0.0.38 → omdev-0.0.40}/omdev/cmdlog/__init__.py +0 -0
  153. {omdev-0.0.38 → omdev-0.0.40}/omdev/cmdlog/__main__.py +0 -0
  154. {omdev-0.0.38 → omdev-0.0.40}/omdev/cmdlog/_cmdlog.py +0 -0
  155. {omdev-0.0.38 → omdev-0.0.40}/omdev/cmdlog/cli.py +0 -0
  156. {omdev-0.0.38 → omdev-0.0.40}/omdev/cmdlog/cmdlog.py +0 -0
  157. {omdev-0.0.38 → omdev-0.0.40}/omdev/dataclasses/__init__.py +0 -0
  158. {omdev-0.0.38 → omdev-0.0.40}/omdev/dataclasses/__main__.py +0 -0
  159. {omdev-0.0.38 → omdev-0.0.40}/omdev/dataclasses/_dumping.py +0 -0
  160. {omdev-0.0.38 → omdev-0.0.40}/omdev/dataclasses/_template.py +0 -0
  161. {omdev-0.0.38 → omdev-0.0.40}/omdev/dataclasses/cli.py +0 -0
  162. {omdev-0.0.38 → omdev-0.0.40}/omdev/dataclasses/codegen.py +0 -0
  163. {omdev-0.0.38 → omdev-0.0.40}/omdev/dataclasses/dumping.py +0 -0
  164. {omdev-0.0.38 → omdev-0.0.40}/omdev/dataserver/__init__.py +0 -0
  165. {omdev-0.0.38 → omdev-0.0.40}/omdev/dataserver/handlers.py +0 -0
  166. {omdev-0.0.38 → omdev-0.0.40}/omdev/dataserver/http.py +0 -0
  167. {omdev-0.0.38 → omdev-0.0.40}/omdev/dataserver/routes.py +0 -0
  168. {omdev-0.0.38 → omdev-0.0.40}/omdev/dataserver/server.py +0 -0
  169. {omdev-0.0.38 → omdev-0.0.40}/omdev/dataserver/targets.py +0 -0
  170. {omdev-0.0.38 → omdev-0.0.40}/omdev/diffs/__init__.py +0 -0
  171. {omdev-0.0.38 → omdev-0.0.40}/omdev/diffs/__main__.py +0 -0
  172. {omdev-0.0.38 → omdev-0.0.40}/omdev/diffs/cli.py +0 -0
  173. {omdev-0.0.38 → omdev-0.0.40}/omdev/diffs/parsing.py +0 -0
  174. {omdev-0.0.38 → omdev-0.0.40}/omdev/diffs/rendering.py +0 -0
  175. {omdev-0.0.38 → omdev-0.0.40}/omdev/diffs/types.py +0 -0
  176. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/__init__.py +0 -0
  177. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/__main__.py +0 -0
  178. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/build.py +0 -0
  179. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/cli.py +0 -0
  180. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/config.py +0 -0
  181. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/config.toml +0 -0
  182. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/content.py +0 -0
  183. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/helpers.py +0 -0
  184. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/ops.py +0 -0
  185. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/rendering.py +0 -0
  186. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/configs/.gdbinit +0 -0
  187. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/configs/.sqliterc +0 -0
  188. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/configs/.tmux.conf +0 -0
  189. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/configs/.vimrc +0 -0
  190. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/depsets/python.toml +0 -0
  191. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/depsets/system.toml +0 -0
  192. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/depsets/x11.toml +0 -0
  193. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/apt.sh +0 -0
  194. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/chgrp.sh +0 -0
  195. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/docker.sh +0 -0
  196. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/firefox.sh +0 -0
  197. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/go.sh +0 -0
  198. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/jdk.sh +0 -0
  199. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/man.sh +0 -0
  200. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/nvm.sh +0 -0
  201. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/pyenv.sh +0 -0
  202. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/rbenv.sh +0 -0
  203. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/rust.sh +0 -0
  204. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/sshd.sh +0 -0
  205. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/user.sh +0 -0
  206. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/uv.sh +0 -0
  207. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/vcpkg.sh +0 -0
  208. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/workdir.sh +0 -0
  209. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/fragments/zig.sh +0 -0
  210. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/scripts/install-claude +0 -0
  211. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/scripts/install-codex +0 -0
  212. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/scripts/install-pi +0 -0
  213. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/scripts/run-dbus +0 -0
  214. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/resources/shift-uid.sh +0 -0
  215. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/run.py +0 -0
  216. {omdev-0.0.38 → omdev-0.0.40}/omdev/dockerdev/utils.py +0 -0
  217. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/__init__.py +0 -0
  218. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/magic.py +0 -0
  219. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/revisions.py +0 -0
  220. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/shallow.py +0 -0
  221. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/status.py +0 -0
  222. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/vendor/__init__.py +0 -0
  223. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/vendor/aborting.py +0 -0
  224. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/vendor/diffing.py +0 -0
  225. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/vendor/errors.py +0 -0
  226. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/vendor/journals.py +0 -0
  227. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/vendor/merging.py +0 -0
  228. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/vendor/paths.py +0 -0
  229. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/vendor/pulling.py +0 -0
  230. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/vendor/runners.py +0 -0
  231. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/vendor/specs.py +0 -0
  232. {omdev-0.0.38 → omdev-0.0.40}/omdev/git/vendor/upstreams.py +0 -0
  233. {omdev-0.0.38 → omdev-0.0.40}/omdev/home/__init__.py +0 -0
  234. {omdev-0.0.38 → omdev-0.0.40}/omdev/home/__main__.py +0 -0
  235. {omdev-0.0.38 → omdev-0.0.40}/omdev/home/cli.py +0 -0
  236. {omdev-0.0.38 → omdev-0.0.40}/omdev/home/paths.py +0 -0
  237. {omdev-0.0.38 → omdev-0.0.40}/omdev/home/secrets.py +0 -0
  238. {omdev-0.0.38 → omdev-0.0.40}/omdev/home/shadow.py +0 -0
  239. {omdev-0.0.38 → omdev-0.0.40}/omdev/imgur.py +0 -0
  240. {omdev-0.0.38 → omdev-0.0.40}/omdev/intellij/__init__.py +0 -0
  241. {omdev-0.0.38 → omdev-0.0.40}/omdev/intellij/cli.py +0 -0
  242. {omdev-0.0.38 → omdev-0.0.40}/omdev/intellij/ides.py +0 -0
  243. {omdev-0.0.38 → omdev-0.0.40}/omdev/intellij/open.py +0 -0
  244. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/__init__.py +0 -0
  245. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/__main__.py +0 -0
  246. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/cli.py +0 -0
  247. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/default.py +0 -0
  248. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/inject.py +0 -0
  249. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/inspect.py +0 -0
  250. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/providers/__init__.py +0 -0
  251. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/providers/base.py +0 -0
  252. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/providers/inject.py +0 -0
  253. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/providers/running.py +0 -0
  254. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/providers/standalone.py +0 -0
  255. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/providers/system.py +0 -0
  256. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/pyenv/__init__.py +0 -0
  257. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/pyenv/inject.py +0 -0
  258. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/pyenv/install.py +0 -0
  259. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/pyenv/provider.py +0 -0
  260. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/pyenv/pyenv.py +0 -0
  261. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/resolvers.py +0 -0
  262. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/types.py +0 -0
  263. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/uv/__init__.py +0 -0
  264. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/uv/inject.py +0 -0
  265. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/uv/provider.py +0 -0
  266. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/uv/uv.py +0 -0
  267. {omdev-0.0.38 → omdev-0.0.40}/omdev/interp/venvs.py +0 -0
  268. {omdev-0.0.38 → omdev-0.0.40}/omdev/java/__init__.py +0 -0
  269. {omdev-0.0.38 → omdev-0.0.40}/omdev/java/__main__.py +0 -0
  270. {omdev-0.0.38 → omdev-0.0.40}/omdev/java/cli.py +0 -0
  271. {omdev-0.0.38 → omdev-0.0.40}/omdev/java/pomgen.py +0 -0
  272. {omdev-0.0.38 → omdev-0.0.40}/omdev/java/utils.py +0 -0
  273. {omdev-0.0.38 → omdev-0.0.40}/omdev/java/xml.py +0 -0
  274. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/__init__.py +0 -0
  275. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/LICENSE +0 -0
  276. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/TODO.md +0 -0
  277. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/__init__.py +0 -0
  278. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_pyqjsng.c +0 -0
  279. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_pyqjsng.pyi +0 -0
  280. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/LICENSE +0 -0
  281. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/builtin-array-fromasync.h +0 -0
  282. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/builtin-iterator-zip-keyed.h +0 -0
  283. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/builtin-iterator-zip.h +0 -0
  284. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/cutils.h +0 -0
  285. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/dtoa.c +0 -0
  286. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/dtoa.h +0 -0
  287. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/libregexp-opcode.h +0 -0
  288. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/libregexp.c +0 -0
  289. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/libregexp.h +0 -0
  290. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/libunicode-table.h +0 -0
  291. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/libunicode.c +0 -0
  292. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/libunicode.h +0 -0
  293. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/list.h +0 -0
  294. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/quickjs-atom.h +0 -0
  295. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/quickjs-c-atomics.h +0 -0
  296. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/quickjs-libc.c +0 -0
  297. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/quickjs-libc.h +0 -0
  298. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/quickjs-opcode.h +0 -0
  299. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/quickjs.c +0 -0
  300. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/_quickjs/quickjs.h +0 -0
  301. {omdev-0.0.38 → omdev-0.0.40}/omdev/js/quickjs/snapshots.py +0 -0
  302. {omdev-0.0.38 → omdev-0.0.40}/omdev/magic/__init__.py +0 -0
  303. {omdev-0.0.38 → omdev-0.0.40}/omdev/magic/__main__.py +0 -0
  304. {omdev-0.0.38 → omdev-0.0.40}/omdev/magic/cli.py +0 -0
  305. {omdev-0.0.38 → omdev-0.0.40}/omdev/magic/find.py +0 -0
  306. {omdev-0.0.38 → omdev-0.0.40}/omdev/magic/magic.py +0 -0
  307. {omdev-0.0.38 → omdev-0.0.40}/omdev/magic/prepare.py +0 -0
  308. {omdev-0.0.38 → omdev-0.0.40}/omdev/magic/styles.py +0 -0
  309. {omdev-0.0.38 → omdev-0.0.40}/omdev/manifests/__init__.py +0 -0
  310. {omdev-0.0.38 → omdev-0.0.40}/omdev/manifests/__main__.py +0 -0
  311. {omdev-0.0.38 → omdev-0.0.40}/omdev/manifests/_dumping.py +0 -0
  312. {omdev-0.0.38 → omdev-0.0.40}/omdev/manifests/building.py +0 -0
  313. {omdev-0.0.38 → omdev-0.0.40}/omdev/manifests/dumping.py +0 -0
  314. {omdev-0.0.38 → omdev-0.0.40}/omdev/manifests/main.py +0 -0
  315. {omdev-0.0.38 → omdev-0.0.40}/omdev/markdown/__init__.py +0 -0
  316. {omdev-0.0.38 → omdev-0.0.40}/omdev/markdown/incparse.py +0 -0
  317. {omdev-0.0.38 → omdev-0.0.40}/omdev/markdown/tokens.py +0 -0
  318. {omdev-0.0.38 → omdev-0.0.40}/omdev/mypy/__init__.py +0 -0
  319. {omdev-0.0.38 → omdev-0.0.40}/omdev/mypy/debug.py +0 -0
  320. {omdev-0.0.38 → omdev-0.0.40}/omdev/mypy/report.py +0 -0
  321. {omdev-0.0.38 → omdev-0.0.40}/omdev/packaging/__init__.py +0 -0
  322. {omdev-0.0.38 → omdev-0.0.40}/omdev/packaging/names.py +0 -0
  323. {omdev-0.0.38 → omdev-0.0.40}/omdev/packaging/requirements.py +0 -0
  324. {omdev-0.0.38 → omdev-0.0.40}/omdev/packaging/revisions.py +0 -0
  325. {omdev-0.0.38 → omdev-0.0.40}/omdev/packaging/specifiers.py +0 -0
  326. {omdev-0.0.38 → omdev-0.0.40}/omdev/packaging/versions.py +0 -0
  327. {omdev-0.0.38 → omdev-0.0.40}/omdev/packaging/wheelfile.py +0 -0
  328. {omdev-0.0.38 → omdev-0.0.40}/omdev/pip.py +0 -0
  329. {omdev-0.0.38 → omdev-0.0.40}/omdev/precheck/__init__.py +0 -0
  330. {omdev-0.0.38 → omdev-0.0.40}/omdev/precheck/__main__.py +0 -0
  331. {omdev-0.0.38 → omdev-0.0.40}/omdev/precheck/base.py +0 -0
  332. {omdev-0.0.38 → omdev-0.0.40}/omdev/precheck/blanklines.py +0 -0
  333. {omdev-0.0.38 → omdev-0.0.40}/omdev/precheck/caches.py +0 -0
  334. {omdev-0.0.38 → omdev-0.0.40}/omdev/precheck/git.py +0 -0
  335. {omdev-0.0.38 → omdev-0.0.40}/omdev/precheck/imports.py +0 -0
  336. {omdev-0.0.38 → omdev-0.0.40}/omdev/precheck/lite.py +0 -0
  337. {omdev-0.0.38 → omdev-0.0.40}/omdev/precheck/main.py +0 -0
  338. {omdev-0.0.38 → omdev-0.0.40}/omdev/precheck/manifests.py +0 -0
  339. {omdev-0.0.38 → omdev-0.0.40}/omdev/precheck/scripts.py +0 -0
  340. {omdev-0.0.38 → omdev-0.0.40}/omdev/precheck/unicode.py +0 -0
  341. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/__init__.py +0 -0
  342. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/asts/__init__.py +0 -0
  343. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/asts/parents.py +0 -0
  344. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/asts/toplevel.py +0 -0
  345. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/asts/visitors.py +0 -0
  346. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/attrdocs.py +0 -0
  347. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/bracepy.py +0 -0
  348. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/classdot.py +0 -0
  349. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/docstrings/LICENSE +0 -0
  350. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/docstrings/__init__.py +0 -0
  351. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/docstrings/attrdoc.py +0 -0
  352. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/docstrings/common.py +0 -0
  353. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/docstrings/epydoc.py +0 -0
  354. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/docstrings/google.py +0 -0
  355. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/docstrings/numpydoc.py +0 -0
  356. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/docstrings/parser.py +0 -0
  357. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/docstrings/rest.py +0 -0
  358. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/findimports.py +0 -0
  359. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/reprs.py +0 -0
  360. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/scripts/__init__.py +0 -0
  361. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/scripts/bumpversion.py +0 -0
  362. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/scripts/importtrace.py +0 -0
  363. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/srcheaders.py +0 -0
  364. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/tokens/__init__.py +0 -0
  365. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/tokens/all.py +0 -0
  366. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/tokens/tokenizert.py +0 -0
  367. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/tokens/utils.py +0 -0
  368. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/tools/__init__.py +0 -0
  369. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/tools/fixdocstrings.py +0 -0
  370. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/tools/importscan.py +0 -0
  371. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/tools/mkrelimp.py +0 -0
  372. {omdev-0.0.38 → omdev-0.0.40}/omdev/py/tools/pipdepup.py +0 -0
  373. {omdev-0.0.38 → omdev-0.0.40}/omdev/py.typed +0 -0
  374. {omdev-0.0.38 → omdev-0.0.40}/omdev/pyproject/__init__.py +0 -0
  375. {omdev-0.0.38 → omdev-0.0.40}/omdev/pyproject/__main__.py +0 -0
  376. {omdev-0.0.38 → omdev-0.0.40}/omdev/pyproject/cli.py +0 -0
  377. {omdev-0.0.38 → omdev-0.0.40}/omdev/pyproject/configs.py +0 -0
  378. {omdev-0.0.38 → omdev-0.0.40}/omdev/pyproject/inject.py +0 -0
  379. {omdev-0.0.38 → omdev-0.0.40}/omdev/pyproject/pkg.py +0 -0
  380. {omdev-0.0.38 → omdev-0.0.40}/omdev/pyproject/reqs.py +0 -0
  381. {omdev-0.0.38 → omdev-0.0.40}/omdev/pyproject/resources/dockerdev.sh +0 -0
  382. {omdev-0.0.38 → omdev-0.0.40}/omdev/pyproject/resources/python.sh +0 -0
  383. {omdev-0.0.38 → omdev-0.0.40}/omdev/pyproject/tools/__init__.py +0 -0
  384. {omdev-0.0.38 → omdev-0.0.40}/omdev/pyproject/tools/aboutdeps.py +0 -0
  385. {omdev-0.0.38 → omdev-0.0.40}/omdev/pyproject/tools/buildrs.py +0 -0
  386. {omdev-0.0.38 → omdev-0.0.40}/omdev/pyproject/tools/pyversions.py +0 -0
  387. {omdev-0.0.38 → omdev-0.0.40}/omdev/pyproject/venvs.py +0 -0
  388. {omdev-0.0.38 → omdev-0.0.40}/omdev/pyproject/versions.py +0 -0
  389. {omdev-0.0.38 → omdev-0.0.40}/omdev/rs/__init__.py +0 -0
  390. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/__init__.py +0 -0
  391. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/lib/__init__.py +0 -0
  392. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/lib/formats/__init__.py +0 -0
  393. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/lib/formats/goyaml.py +0 -0
  394. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/lib/inject.py +0 -0
  395. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/lib/io/__init__.py +0 -0
  396. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/lib/io/pipelines.py +0 -0
  397. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/lib/io/streambufs.py +0 -0
  398. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/lib/logs.py +0 -0
  399. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/lib/marshal.py +0 -0
  400. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/slowcat.py +0 -0
  401. {omdev-0.0.38 → omdev-0.0.40}/omdev/scripts/tmpexec.py +0 -0
  402. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/__init__.py +0 -0
  403. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/__init__.py +0 -0
  404. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/messages/__init__.py +0 -0
  405. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/messages/base.py +0 -0
  406. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/messages/formats.py +0 -0
  407. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/messages/messages.py +0 -0
  408. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/messages/parsing.py +0 -0
  409. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/numerics/__init__.py +0 -0
  410. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/numerics/formats.py +0 -0
  411. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/numerics/numerics.py +0 -0
  412. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/numerics/types.py +0 -0
  413. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/protocol/LICENSE +0 -0
  414. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/protocol/__init__.py +0 -0
  415. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/protocol/consts.py +0 -0
  416. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/protocol/errors.py +0 -0
  417. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/protocol/message.py +0 -0
  418. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/protocol/nuh.py +0 -0
  419. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/protocol/parsing.py +0 -0
  420. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/protocol/rendering.py +0 -0
  421. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/protocol/tags.py +0 -0
  422. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/irc/protocol/utils.py +0 -0
  423. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/jsonschema/__init__.py +0 -0
  424. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/jsonschema/codegen/__init__.py +0 -0
  425. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/jsonschema/codegen/__main__.py +0 -0
  426. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/jsonschema/codegen/analysis.py +0 -0
  427. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/jsonschema/codegen/config.py +0 -0
  428. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/jsonschema/codegen/errors.py +0 -0
  429. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/jsonschema/codegen/generator.py +0 -0
  430. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/jsonschema/codegen/ir.py +0 -0
  431. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/jsonschema/codegen/transforms.py +0 -0
  432. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/jsonschema/codegen/typing.py +0 -0
  433. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/oci/__init__.py +0 -0
  434. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/oci/building.py +0 -0
  435. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/oci/compression.py +0 -0
  436. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/oci/data.py +0 -0
  437. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/oci/datarefs.py +0 -0
  438. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/oci/dataserver.py +0 -0
  439. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/oci/loading.py +0 -0
  440. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/oci/media.py +0 -0
  441. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/oci/pack/__init__.py +0 -0
  442. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/oci/pack/packing.py +0 -0
  443. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/oci/pack/repositories.py +0 -0
  444. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/oci/pack/unpacking.py +0 -0
  445. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/oci/repositories.py +0 -0
  446. {omdev-0.0.38 → omdev-0.0.40}/omdev/specs/oci/tars.py +0 -0
  447. {omdev-0.0.38 → omdev-0.0.40}/omdev/tagstrings.py +0 -0
  448. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/__init__.py +0 -0
  449. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/cloc.py +0 -0
  450. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/diff.py +0 -0
  451. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/doc.py +0 -0
  452. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/docker.py +0 -0
  453. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/git/__init__.py +0 -0
  454. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/git/__main__.py +0 -0
  455. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/git/cli.py +0 -0
  456. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/git/cloning.py +0 -0
  457. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/git/consts.py +0 -0
  458. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/git/messages.py +0 -0
  459. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/json/__init__.py +0 -0
  460. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/json/__main__.py +0 -0
  461. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/json/cli.py +0 -0
  462. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/json/formats.py +0 -0
  463. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/json/io.py +0 -0
  464. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/json/parsing.py +0 -0
  465. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/json/rendering.py +0 -0
  466. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/jsonview/__init__.py +0 -0
  467. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/jsonview/__main__.py +0 -0
  468. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/jsonview/cli.py +0 -0
  469. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/jsonview/resources/jsonview.css +0 -0
  470. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/jsonview/resources/jsonview.html.j2 +0 -0
  471. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/jsonview/resources/jsonview.js +0 -0
  472. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/linehisto.py +0 -0
  473. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/mkenv.py +0 -0
  474. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/notebook.py +0 -0
  475. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/ocr.py +0 -0
  476. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/pawk/README.md +0 -0
  477. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/pawk/__init__.py +0 -0
  478. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/pawk/__main__.py +0 -0
  479. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/pawk/pawk.py +0 -0
  480. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/pip.py +0 -0
  481. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/prof.py +0 -0
  482. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/qr.py +0 -0
  483. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/shadow.py +0 -0
  484. {omdev-0.0.38 → omdev-0.0.40}/omdev/tools/sqlrepl.py +0 -0
  485. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/__init__.py +0 -0
  486. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/__init__.py +0 -0
  487. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/edit/__init__.py +0 -0
  488. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/edit/main.py +0 -0
  489. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/irc/__init__.py +0 -0
  490. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/irc/__main__.py +0 -0
  491. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/irc/app.py +0 -0
  492. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/irc/client.py +0 -0
  493. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/irc/commands.py +0 -0
  494. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/irc/main.py +0 -0
  495. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/jtree/LICENSE +0 -0
  496. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/jtree/__init__.py +0 -0
  497. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/jtree/__main__.py +0 -0
  498. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/jtree/app.py +0 -0
  499. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/jtree/cli.py +0 -0
  500. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/jtree/styles/layout.tcss +0 -0
  501. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/jtree/utils.py +0 -0
  502. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/jtree/widgets.py +0 -0
  503. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/markdown/__init__.py +0 -0
  504. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/markdown/__main__.py +0 -0
  505. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/apps/markdown/cli.py +0 -0
  506. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/__init__.py +0 -0
  507. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/console2.py +0 -0
  508. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/diff/LICENSE +0 -0
  509. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/diff/__init__.py +0 -0
  510. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/diff/__main__.py +0 -0
  511. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/diff/_compat.py +0 -0
  512. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/diff/cli.py +0 -0
  513. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/diff/renderables.py +0 -0
  514. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/diff/rendering.py +0 -0
  515. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/diff/underlinebar.py +0 -0
  516. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/markdown2.py +0 -0
  517. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/textual/__init__.py +0 -0
  518. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/textual/dark.py +0 -0
  519. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/textual/dump.py +0 -0
  520. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/textual/themes.py +0 -0
  521. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/rich/trirule.py +0 -0
  522. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/__init__.py +0 -0
  523. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/actionmenu.py +0 -0
  524. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/LICENSE +0 -0
  525. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/__init__.py +0 -0
  526. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/client.py +0 -0
  527. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/previews/__init__.py +0 -0
  528. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/previews/borders.py +0 -0
  529. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/previews/colors.py +0 -0
  530. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/previews/colors.tcss +0 -0
  531. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/previews/easing.py +0 -0
  532. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/previews/easing.tcss +0 -0
  533. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/previews/keys.py +0 -0
  534. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/protocol.py +0 -0
  535. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/redirect_output.py +0 -0
  536. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/renderables.py +0 -0
  537. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/server.py +0 -0
  538. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/service.py +0 -0
  539. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/tools/__init__.py +0 -0
  540. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/altdevtools/tools/diagnose.py +0 -0
  541. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/app2.py +0 -0
  542. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/autocomplete/LICENSE +0 -0
  543. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/autocomplete/__init__.py +0 -0
  544. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/autocomplete/matching.py +0 -0
  545. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/autocomplete/paths.py +0 -0
  546. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/autocomplete/widget.py +0 -0
  547. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/binding2.py +0 -0
  548. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/clipboard.py +0 -0
  549. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/debug/__init__.py +0 -0
  550. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/debug/dominfo.py +0 -0
  551. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/debug/screen.py +0 -0
  552. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/devtools.py +0 -0
  553. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/dom2.py +0 -0
  554. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/drivers2.py +0 -0
  555. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/logging2.py +0 -0
  556. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/render2.py +0 -0
  557. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/screen2.py +0 -0
  558. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/types.py +0 -0
  559. {omdev-0.0.38 → omdev-0.0.40}/omdev/tui/textual/widgets2.py +0 -0
  560. {omdev-0.0.38 → omdev-0.0.40}/omdev.egg-info/dependency_links.txt +0 -0
  561. {omdev-0.0.38 → omdev-0.0.40}/omdev.egg-info/entry_points.txt +0 -0
  562. {omdev-0.0.38 → omdev-0.0.40}/omdev.egg-info/top_level.txt +0 -0
  563. {omdev-0.0.38 → omdev-0.0.40}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.38
3
+ Version: 0.0.40
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -13,10 +13,10 @@ Classifier: Programming Language :: Python :: 3.14
13
13
  Requires-Python: >=3.14
14
14
  Description-Content-Type: text/markdown
15
15
  License-File: LICENSE
16
- Requires-Dist: omcore==0.0.38
16
+ Requires-Dist: omcore==0.0.40
17
17
  Provides-Extra: all
18
- Requires-Dist: ominfra==0.0.38; extra == "all"
19
- Requires-Dist: omllm==0.0.38; extra == "all"
18
+ Requires-Dist: ominfra==0.0.40; extra == "all"
19
+ Requires-Dist: omllm==0.0.40; extra == "all"
20
20
  Requires-Dist: black~=26.5; extra == "all"
21
21
  Requires-Dist: pycparser~=3.0; extra == "all"
22
22
  Requires-Dist: pcpp~=1.30; extra == "all"
@@ -35,9 +35,9 @@ Requires-Dist: textual~=8.2; extra == "all"
35
35
  Requires-Dist: textual-dev~=1.8; extra == "all"
36
36
  Requires-Dist: textual-speedups~=0.2; extra == "all"
37
37
  Provides-Extra: ominfra
38
- Requires-Dist: ominfra==0.0.38; extra == "ominfra"
38
+ Requires-Dist: ominfra==0.0.40; extra == "ominfra"
39
39
  Provides-Extra: omllm
40
- Requires-Dist: omllm==0.0.38; extra == "omllm"
40
+ Requires-Dist: omllm==0.0.40; extra == "omllm"
41
41
  Provides-Extra: black
42
42
  Requires-Dist: black~=26.5; extra == "black"
43
43
  Provides-Extra: c
@@ -562,7 +562,7 @@
562
562
  "module": ".tools.shell",
563
563
  "attr": "_CLI_MODULE",
564
564
  "file": "omdev/tools/shell.py",
565
- "line": 110,
565
+ "line": 230,
566
566
  "value": {
567
567
  "!.cli.types.CliModule": {
568
568
  "name": [
@@ -18,7 +18,7 @@ from .consts import SERIALIZATION_VERSION
18
18
 
19
19
 
20
20
  @dc.dataclass(frozen=True)
21
- @msh.set_polymorphic_from_subclasses(naming=msh.Naming.SNAKE, strip_suffix=True)
21
+ @msh.set_polymorphic(naming='snake', suffix_stripping='required')
22
22
  class Action(lang.Abstract, lang.Sealed):
23
23
  serialization_version: int = dc.field(default=SERIALIZATION_VERSION, kw_only=True)
24
24
 
@@ -20,7 +20,7 @@ from .consts import SERIALIZATION_VERSION
20
20
 
21
21
 
22
22
  @dc.dataclass(frozen=True)
23
- @msh.set_polymorphic_from_subclasses(naming=msh.Naming.SNAKE, strip_suffix=True)
23
+ @msh.set_polymorphic(naming='snake', suffix_stripping='required')
24
24
  class Spec(lang.Abstract, lang.Sealed):
25
25
  serialization_version: int = dc.field(default=SERIALIZATION_VERSION, kw_only=True)
26
26
 
@@ -113,6 +113,8 @@ class CiCli(ArgparseCli):
113
113
  argparse_arg('-e', '--env', action='append'),
114
114
  argparse_arg('-v', '--volume', action='append'),
115
115
 
116
+ argparse_arg('--pre-cmd', action='append'),
117
+
116
118
  argparse_arg('cmd', nargs=argparse.REMAINDER),
117
119
  )
118
120
  async def run(self) -> None:
@@ -126,8 +128,10 @@ class CiCli(ArgparseCli):
126
128
 
127
129
  #
128
130
 
129
- cmd = ' '.join(self.args.cmd)
130
- check.non_empty_str(cmd)
131
+ cmd = ' && '.join([
132
+ *[check.non_empty_str(pc) for pc in (self.args.pre_cmd or [])],
133
+ check.non_empty_str(' '.join(self.args.cmd)),
134
+ ])
131
135
 
132
136
  #
133
137
 
@@ -138,6 +138,11 @@ def gen_ops(cfg: Config) -> ta.Sequence[Op]:
138
138
  cache_mount_args=[f'uid={cfg.uid}', f'gid={cfg.gid}'],
139
139
  ))
140
140
 
141
+ ##
142
+ # self
143
+
144
+ ops.append(fragment_section('om'))
145
+
141
146
  ##
142
147
  # ownership
143
148
 
@@ -0,0 +1,19 @@
1
+ {
2
+ "8": "3.8.20",
3
+ "9": "3.9.25",
4
+ "10": "3.10.20",
5
+ "11": "3.11.15",
6
+ "12": "3.12.13",
7
+ "13": "3.13.15",
8
+ "13d": "3.13.15d",
9
+ "13t": "3.13.15t",
10
+ "13dt": "3.13.15dt",
11
+ "14": "3.14.7",
12
+ "14d": "3.14.7d",
13
+ "14t": "3.14.7t",
14
+ "14dt": "3.14.7dt",
15
+ "15": "3.15.0rc1",
16
+ "15d": "3.15.0rc1d",
17
+ "15t": "3.15.0rc1t",
18
+ "15dt": "3.15.0rc1dt"
19
+ }
@@ -0,0 +1,20 @@
1
+ curl -LsSf 'https://raw.githubusercontent.com/wrmsr/om/master/omdev/cli/install.py' | bash --login -c 'python3 - $@' - \
2
+ omcore-cext \
3
+ omdev-cext \
4
+ ominfra \
5
+ omllm \
6
+ \
7
+ pip \
8
+ \
9
+ asttokens \
10
+ executing \
11
+ \
12
+ orjson \
13
+ pyyaml \
14
+ \
15
+ textual \
16
+ textual-speedups \
17
+ \
18
+ pg8000 \
19
+ pymysql \
20
+ ;
@@ -44,7 +44,11 @@ class RequirementMarkerListMarshaler(msh.Marshaler):
44
44
 
45
45
 
46
46
  class RequirementMarkerListMarshalerFactory(msh.MarshalerFactory):
47
- def make_marshaler(self, ctx: msh.MarshalFactoryContext, rty: rfl.Type) -> ta.Callable[[], msh.Marshaler] | None:
47
+ def make_marshaler(self, ctx: msh.MarshalFactoryContext, spec: msh.Spec) -> ta.Callable[[], msh.Marshaler] | None:
48
+ if not isinstance(spec, rfl.Type):
49
+ return None
50
+ rty = spec
51
+
48
52
  if rty.runtime_object is not MarshalRequirementMarkerList:
49
53
  return None
50
54
  return lambda: RequirementMarkerListMarshaler(
@@ -60,11 +64,11 @@ class RequirementMarkerListMarshalerFactory(msh.MarshalerFactory):
60
64
  def _install_standard_marshaling(cfgs: msh.ConfigRegistry) -> None:
61
65
  requires_node_poly = msh.Polymorphism(
62
66
  RequirementNode,
63
- [
64
- msh.Impl(RequirementVariable, 'variable'),
65
- msh.Impl(RequirementValue, 'value'),
66
- msh.Impl(RequirementOp, 'op'),
67
- ],
67
+ msh.SubtypeInfos([
68
+ msh.SubtypeInfo(RequirementVariable, 'variable'),
69
+ msh.SubtypeInfo(RequirementValue, 'value'),
70
+ msh.SubtypeInfo(RequirementOp, 'op'),
71
+ ]),
68
72
  )
69
73
  msh.install_standard_factories(
70
74
  cfgs,
@@ -142,7 +142,7 @@ def __om_amalg__(): # noqa
142
142
  dict(path='../../omcore/lite/marshal.py', sha1='9b3f4ff802344313147f412f8f028922afc52b2f'),
143
143
  dict(path='../../omcore/lite/maybes.py', sha1='5ac5f92e5610c6795b0a228c38e7bcd272bf6305'),
144
144
  dict(path='../../omcore/lite/runtime.py', sha1='2e752a27ae2bf89b1bb79b4a2da522a3ec360c70'),
145
- dict(path='../../omcore/lite/timeouts.py', sha1='e7b2d3b364e7b99aba287f0f97f4dc8a5492bd94'),
145
+ dict(path='../../omcore/lite/timeouts.py', sha1='f534acc131c6506d485f4d29e9597dfd3f0fb072'),
146
146
  dict(path='../../omcore/logs/infos.py', sha1='c6a4599ad727fbee7c3d8eb1bce80846f8106079'),
147
147
  dict(path='../../omcore/logs/metrics/base.py', sha1='38429b7e804533da9a1dd356cf563ac4cff82aa2'),
148
148
  dict(path='../../omcore/logs/protocols.py', sha1='2e13388c65699c4aa89f32b78be8496b94fc40bb'),
@@ -156,7 +156,7 @@ def __om_amalg__(): # noqa
156
156
  dict(path='../specs/oci/datarefs.py', sha1='19c6cf61c96efe6f667608a8eda120a0ad1ef466'),
157
157
  dict(path='../specs/oci/pack/unpacking.py', sha1='6cc7a1a64a91b96144c150ac4e0006bfe2caa3e0'),
158
158
  dict(path='../../omcore/argparse/cli.py', sha1='643ea018c916268b80efe227a13979c84c59be3c'),
159
- dict(path='../../omcore/asyncs/asyncio/sockets.py', sha1='57bfaf9aaf1cc8263dc3292d9b1397de9e81ce5d'),
159
+ dict(path='../../omcore/asyncs/asyncio/sockets.py', sha1='2e3ccc17b95307033f4d7980850a463617d3c357'),
160
160
  dict(path='../../omcore/asyncs/asyncio/timeouts.py', sha1='79905340353b28e51bcd02a62026787f41b731b9'),
161
161
  dict(path='../../omcore/formats/yaml/goyaml/tokens.py', sha1='3c3cb038c1008425577157906ec0ccce4b5ce14d'),
162
162
  dict(path='../../omcore/http/pipelines/bodymodes.py', sha1='fa4169dd860a83c00cf13f6f48583fffd3c2bcf5'),
@@ -193,7 +193,7 @@ def __om_amalg__(): # noqa
193
193
  dict(path='../../omcore/logs/std/records.py', sha1='fb1e2d887248cc24b0463156836d9965a06c8ab6'),
194
194
  dict(path='../../omcore/logs/std/standard.py', sha1='223e3cba0f2854c5093fb60d6cef2f27b80c193c'),
195
195
  dict(path='../../omcore/secrets/tempssl.py', sha1='bbf47f864752f318f4122e539523ad5e6ed0a3b9'),
196
- dict(path='../../omcore/subprocesses/base.py', sha1='902de24f7135858a9f539fab378cacb96f5cc672'),
196
+ dict(path='../../omcore/subprocesses/base.py', sha1='9c2f2d0a7627a255953315ae429224822407c597'),
197
197
  dict(path='../dataserver/handlers.py', sha1='f290d30b0e286d9152b9e7ff8135f2fdd222ceca'),
198
198
  dict(path='../dataserver/routes.py', sha1='f65920d9104c79ab186d4d04f0d52f2c6ad185b6'),
199
199
  dict(path='../specs/oci/media.py', sha1='803842842e9b3f1d51ccb48c41c7fb7df9d833b3'),
@@ -252,7 +252,7 @@ def __om_amalg__(): # noqa
252
252
  dict(path='docker/cacheserved/cache.py', sha1='a1e3481bd93412a2c572fc306786d52e06406eee'),
253
253
  dict(path='docker/inject.py', sha1='4755881c4f90bfa7508c4e8aa03d9f030a9123d8'),
254
254
  dict(path='inject.py', sha1='277c5529fd72cc023f136da599e10f9547ef9d60'),
255
- dict(path='cli.py', sha1='457b154c601f8cfe7387fefc0be85c2a03b300d3'),
255
+ dict(path='cli.py', sha1='37fe9aeb930875a4b13fc0ff694fea6aa3c16962'),
256
256
  ],
257
257
  )
258
258
 
@@ -10299,7 +10299,7 @@ class Timeout(Abstract):
10299
10299
  raise NotImplementedError
10300
10300
 
10301
10301
  @abc.abstractmethod
10302
- def or_(self, o: ta.Any) -> ta.Any:
10302
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
10303
10303
  """Evaluates time remaining via remaining() if this timeout can expire, otherwise returns `o`."""
10304
10304
 
10305
10305
  raise NotImplementedError
@@ -10398,7 +10398,7 @@ class DeadlineTimeout(Timeout):
10398
10398
  return rem
10399
10399
  raise self.exc
10400
10400
 
10401
- def or_(self, o: ta.Any) -> ta.Any:
10401
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
10402
10402
  return self()
10403
10403
 
10404
10404
 
@@ -10419,7 +10419,7 @@ class InfiniteTimeout(Timeout):
10419
10419
  def __call__(self) -> float:
10420
10420
  return float('inf')
10421
10421
 
10422
- def or_(self, o: ta.Any) -> ta.Any:
10422
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
10423
10423
  return o
10424
10424
 
10425
10425
 
@@ -10445,7 +10445,7 @@ class CompositeTimeout(Timeout):
10445
10445
  def __call__(self) -> float:
10446
10446
  return min((c() for c in self.children), default=float('inf'))
10447
10447
 
10448
- def or_(self, o: ta.Any) -> ta.Any:
10448
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
10449
10449
  if self.can_expire:
10450
10450
  return self()
10451
10451
  return o
@@ -10480,8 +10480,10 @@ class PredicateTimeout(Timeout):
10480
10480
  return float('inf')
10481
10481
  raise self.exc
10482
10482
 
10483
- def or_(self, o: ta.Any) -> ta.Any:
10484
- return self()
10483
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
10484
+ if not math.isinf(f := self()):
10485
+ return f
10486
+ return o
10485
10487
 
10486
10488
 
10487
10489
  ########################################
@@ -12282,7 +12284,7 @@ async def asyncio_wait_until_can_connect(
12282
12284
 
12283
12285
  else:
12284
12286
  writer.close()
12285
- await asyncio.wait_for(writer.wait_closed(), timeout=timeout.or_(None))
12287
+ await asyncio.wait_for(writer.wait_closed(), timeout=timeout.remaining_or(None))
12286
12288
  break
12287
12289
 
12288
12290
  await asyncio.sleep(min(sleep_s, timeout.remaining()))
@@ -22857,7 +22859,7 @@ class BaseSubprocesses(Abstract):
22857
22859
  #
22858
22860
 
22859
22861
  if 'timeout' in kwargs:
22860
- kwargs['timeout'] = Timeout.of(kwargs['timeout']).or_(None)
22862
+ kwargs['timeout'] = Timeout.of(kwargs['timeout']).remaining_or(None)
22861
22863
 
22862
22864
  #
22863
22865
 
@@ -36451,6 +36453,8 @@ class CiCli(ArgparseCli):
36451
36453
  argparse_arg('-e', '--env', action='append'),
36452
36454
  argparse_arg('-v', '--volume', action='append'),
36453
36455
 
36456
+ argparse_arg('--pre-cmd', action='append'),
36457
+
36454
36458
  argparse_arg('cmd', nargs=argparse.REMAINDER),
36455
36459
  )
36456
36460
  async def run(self) -> None:
@@ -36464,8 +36468,10 @@ class CiCli(ArgparseCli):
36464
36468
 
36465
36469
  #
36466
36470
 
36467
- cmd = ' '.join(self.args.cmd)
36468
- check.non_empty_str(cmd)
36471
+ cmd = ' && '.join([
36472
+ *[check.non_empty_str(pc) for pc in (self.args.pre_cmd or [])],
36473
+ check.non_empty_str(' '.join(self.args.cmd)),
36474
+ ])
36469
36475
 
36470
36476
  #
36471
36477
 
@@ -27,6 +27,7 @@ import inspect
27
27
  import itertools
28
28
  import json
29
29
  import logging
30
+ import math
30
31
  import operator
31
32
  import os
32
33
  import os.path
@@ -69,7 +70,7 @@ def __om_amalg__(): # noqa
69
70
  dict(path='../../omcore/lite/json.py', sha1='01124e62093ebd4078602f16df0ec04cb724a612'),
70
71
  dict(path='../../omcore/lite/maybes.py', sha1='5ac5f92e5610c6795b0a228c38e7bcd272bf6305'),
71
72
  dict(path='../../omcore/lite/runtime.py', sha1='2e752a27ae2bf89b1bb79b4a2da522a3ec360c70'),
72
- dict(path='../../omcore/lite/timeouts.py', sha1='e7b2d3b364e7b99aba287f0f97f4dc8a5492bd94'),
73
+ dict(path='../../omcore/lite/timeouts.py', sha1='f534acc131c6506d485f4d29e9597dfd3f0fb072'),
73
74
  dict(path='../../omcore/logs/protocols.py', sha1='2e13388c65699c4aa89f32b78be8496b94fc40bb'),
74
75
  dict(path='../packaging/specifiers.py', sha1='baec4e53b7187f99e8d8b36bdf48bf61af82c252'),
75
76
  dict(path='../../omcore/argparse/cli.py', sha1='643ea018c916268b80efe227a13979c84c59be3c'),
@@ -80,7 +81,7 @@ def __om_amalg__(): # noqa
80
81
  dict(path='../../omcore/subprocesses/wrap.py', sha1='12d94dc2357951cd0fed1c50a46817d30d628927'),
81
82
  dict(path='types.py', sha1='c53a8d45d29f2010244760adeb8dcd02a4a240e1'),
82
83
  dict(path='../../omcore/logs/std/standard.py', sha1='223e3cba0f2854c5093fb60d6cef2f27b80c193c'),
83
- dict(path='../../omcore/subprocesses/base.py', sha1='902de24f7135858a9f539fab378cacb96f5cc672'),
84
+ dict(path='../../omcore/subprocesses/base.py', sha1='9c2f2d0a7627a255953315ae429224822407c597'),
84
85
  dict(path='providers/base.py', sha1='bb952ac8a8c2ceeac41a777753a1a4e60439f3d4'),
85
86
  dict(path='../../omcore/subprocesses/asyncs.py', sha1='8d428af73220f793d2c0e93f5c9966fac9474246'),
86
87
  dict(path='resolvers.py', sha1='817b8e76401cd7a19eb43ca54d65272e4c8a4b0e'),
@@ -2670,7 +2671,7 @@ class Timeout(Abstract):
2670
2671
  raise NotImplementedError
2671
2672
 
2672
2673
  @abc.abstractmethod
2673
- def or_(self, o: ta.Any) -> ta.Any:
2674
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
2674
2675
  """Evaluates time remaining via remaining() if this timeout can expire, otherwise returns `o`."""
2675
2676
 
2676
2677
  raise NotImplementedError
@@ -2769,7 +2770,7 @@ class DeadlineTimeout(Timeout):
2769
2770
  return rem
2770
2771
  raise self.exc
2771
2772
 
2772
- def or_(self, o: ta.Any) -> ta.Any:
2773
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
2773
2774
  return self()
2774
2775
 
2775
2776
 
@@ -2790,7 +2791,7 @@ class InfiniteTimeout(Timeout):
2790
2791
  def __call__(self) -> float:
2791
2792
  return float('inf')
2792
2793
 
2793
- def or_(self, o: ta.Any) -> ta.Any:
2794
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
2794
2795
  return o
2795
2796
 
2796
2797
 
@@ -2816,7 +2817,7 @@ class CompositeTimeout(Timeout):
2816
2817
  def __call__(self) -> float:
2817
2818
  return min((c() for c in self.children), default=float('inf'))
2818
2819
 
2819
- def or_(self, o: ta.Any) -> ta.Any:
2820
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
2820
2821
  if self.can_expire:
2821
2822
  return self()
2822
2823
  return o
@@ -2851,8 +2852,10 @@ class PredicateTimeout(Timeout):
2851
2852
  return float('inf')
2852
2853
  raise self.exc
2853
2854
 
2854
- def or_(self, o: ta.Any) -> ta.Any:
2855
- return self()
2855
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
2856
+ if not math.isinf(f := self()):
2857
+ return f
2858
+ return o
2856
2859
 
2857
2860
 
2858
2861
  ########################################
@@ -5116,7 +5119,7 @@ class BaseSubprocesses(Abstract):
5116
5119
  #
5117
5120
 
5118
5121
  if 'timeout' in kwargs:
5119
- kwargs['timeout'] = Timeout.of(kwargs['timeout']).or_(None)
5122
+ kwargs['timeout'] = Timeout.of(kwargs['timeout']).remaining_or(None)
5120
5123
 
5121
5124
  #
5122
5125
 
@@ -27,6 +27,7 @@ import functools
27
27
  import inspect
28
28
  import json
29
29
  import logging
30
+ import math
30
31
  import operator
31
32
  import os
32
33
  import os.path
@@ -68,7 +69,7 @@ def __om_amalg__(): # noqa
68
69
  dict(path='../../lite/marshal.py', sha1='9b3f4ff802344313147f412f8f028922afc52b2f'),
69
70
  dict(path='../../lite/maybes.py', sha1='5ac5f92e5610c6795b0a228c38e7bcd272bf6305'),
70
71
  dict(path='../../lite/runtime.py', sha1='2e752a27ae2bf89b1bb79b4a2da522a3ec360c70'),
71
- dict(path='../../lite/timeouts.py', sha1='e7b2d3b364e7b99aba287f0f97f4dc8a5492bd94'),
72
+ dict(path='../../lite/timeouts.py', sha1='f534acc131c6506d485f4d29e9597dfd3f0fb072'),
72
73
  dict(path='../../logs/protocols.py', sha1='2e13388c65699c4aa89f32b78be8496b94fc40bb'),
73
74
  dict(path='../../argparse/cli.py', sha1='643ea018c916268b80efe227a13979c84c59be3c'),
74
75
  dict(path='../../lite/args.py', sha1='ae96b0baeb376617a63c0e64632ab2c5ff4171a8'),
@@ -76,7 +77,7 @@ def __om_amalg__(): # noqa
76
77
  dict(path='../../subprocesses/wrap.py', sha1='12d94dc2357951cd0fed1c50a46817d30d628927'),
77
78
  dict(path='../../diag/cmds/lslocks.py', sha1='46725d80fd8e016d2d13a4b5c1ad1352b982841e'),
78
79
  dict(path='../../diag/cmds/lsof.py', sha1='cdb2aaaed6f7c6fbddbd8cc165fd82c1f8f2ebb3'),
79
- dict(path='../../subprocesses/base.py', sha1='902de24f7135858a9f539fab378cacb96f5cc672'),
80
+ dict(path='../../subprocesses/base.py', sha1='9c2f2d0a7627a255953315ae429224822407c597'),
80
81
  dict(path='../../subprocesses/sync.py', sha1='df383531e888c4652a285defb522dd90ce916b6a'),
81
82
  dict(path='pinning.py', sha1='436eb3fc76ae7106605c8c26de60e36899ad0b8a'),
82
83
  dict(path='cli.py', sha1='fb926284e3a92c28573c91a69295ea8d99f6f134'),
@@ -3314,7 +3315,7 @@ class Timeout(Abstract):
3314
3315
  raise NotImplementedError
3315
3316
 
3316
3317
  @abc.abstractmethod
3317
- def or_(self, o: ta.Any) -> ta.Any:
3318
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
3318
3319
  """Evaluates time remaining via remaining() if this timeout can expire, otherwise returns `o`."""
3319
3320
 
3320
3321
  raise NotImplementedError
@@ -3413,7 +3414,7 @@ class DeadlineTimeout(Timeout):
3413
3414
  return rem
3414
3415
  raise self.exc
3415
3416
 
3416
- def or_(self, o: ta.Any) -> ta.Any:
3417
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
3417
3418
  return self()
3418
3419
 
3419
3420
 
@@ -3434,7 +3435,7 @@ class InfiniteTimeout(Timeout):
3434
3435
  def __call__(self) -> float:
3435
3436
  return float('inf')
3436
3437
 
3437
- def or_(self, o: ta.Any) -> ta.Any:
3438
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
3438
3439
  return o
3439
3440
 
3440
3441
 
@@ -3460,7 +3461,7 @@ class CompositeTimeout(Timeout):
3460
3461
  def __call__(self) -> float:
3461
3462
  return min((c() for c in self.children), default=float('inf'))
3462
3463
 
3463
- def or_(self, o: ta.Any) -> ta.Any:
3464
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
3464
3465
  if self.can_expire:
3465
3466
  return self()
3466
3467
  return o
@@ -3495,8 +3496,10 @@ class PredicateTimeout(Timeout):
3495
3496
  return float('inf')
3496
3497
  raise self.exc
3497
3498
 
3498
- def or_(self, o: ta.Any) -> ta.Any:
3499
- return self()
3499
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
3500
+ if not math.isinf(f := self()):
3501
+ return f
3502
+ return o
3500
3503
 
3501
3504
 
3502
3505
  ########################################
@@ -4243,7 +4246,7 @@ class BaseSubprocesses(Abstract):
4243
4246
  #
4244
4247
 
4245
4248
  if 'timeout' in kwargs:
4246
- kwargs['timeout'] = Timeout.of(kwargs['timeout']).or_(None)
4249
+ kwargs['timeout'] = Timeout.of(kwargs['timeout']).remaining_or(None)
4247
4250
 
4248
4251
  #
4249
4252
 
@@ -52,6 +52,7 @@ import io
52
52
  import itertools
53
53
  import json
54
54
  import logging
55
+ import math
55
56
  import multiprocessing as mp
56
57
  import operator
57
58
  import os
@@ -116,7 +117,7 @@ def __om_amalg__(): # noqa
116
117
  dict(path='../../omcore/lite/marshal.py', sha1='9b3f4ff802344313147f412f8f028922afc52b2f'),
117
118
  dict(path='../../omcore/lite/maybes.py', sha1='5ac5f92e5610c6795b0a228c38e7bcd272bf6305'),
118
119
  dict(path='../../omcore/lite/runtime.py', sha1='2e752a27ae2bf89b1bb79b4a2da522a3ec360c70'),
119
- dict(path='../../omcore/lite/timeouts.py', sha1='e7b2d3b364e7b99aba287f0f97f4dc8a5492bd94'),
120
+ dict(path='../../omcore/lite/timeouts.py', sha1='f534acc131c6506d485f4d29e9597dfd3f0fb072'),
120
121
  dict(path='../../omcore/logs/infos.py', sha1='c6a4599ad727fbee7c3d8eb1bce80846f8106079'),
121
122
  dict(path='../../omcore/logs/metrics/base.py', sha1='38429b7e804533da9a1dd356cf563ac4cff82aa2'),
122
123
  dict(path='../../omcore/logs/protocols.py', sha1='2e13388c65699c4aa89f32b78be8496b94fc40bb'),
@@ -136,7 +137,7 @@ def __om_amalg__(): # noqa
136
137
  dict(path='../../omcore/logs/base.py', sha1='4195705c64f3ec1c4263c2c76c63351d9dacdd5c'),
137
138
  dict(path='../../omcore/logs/std/records.py', sha1='fb1e2d887248cc24b0463156836d9965a06c8ab6'),
138
139
  dict(path='../../omcore/logs/std/standard.py', sha1='223e3cba0f2854c5093fb60d6cef2f27b80c193c'),
139
- dict(path='../../omcore/subprocesses/base.py', sha1='902de24f7135858a9f539fab378cacb96f5cc672'),
140
+ dict(path='../../omcore/subprocesses/base.py', sha1='9c2f2d0a7627a255953315ae429224822407c597'),
140
141
  dict(path='../interp/providers/base.py', sha1='bb952ac8a8c2ceeac41a777753a1a4e60439f3d4'),
141
142
  dict(path='../../omcore/logs/asyncs.py', sha1='6b444494a0512f7b7ea2c93be5c4a9868deb7251'),
142
143
  dict(path='../../omcore/logs/std/loggers.py', sha1='144a96b3b190a5641f3b7cc2656d6ffa4e45b5a9'),
@@ -5620,7 +5621,7 @@ class Timeout(Abstract):
5620
5621
  raise NotImplementedError
5621
5622
 
5622
5623
  @abc.abstractmethod
5623
- def or_(self, o: ta.Any) -> ta.Any:
5624
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
5624
5625
  """Evaluates time remaining via remaining() if this timeout can expire, otherwise returns `o`."""
5625
5626
 
5626
5627
  raise NotImplementedError
@@ -5719,7 +5720,7 @@ class DeadlineTimeout(Timeout):
5719
5720
  return rem
5720
5721
  raise self.exc
5721
5722
 
5722
- def or_(self, o: ta.Any) -> ta.Any:
5723
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
5723
5724
  return self()
5724
5725
 
5725
5726
 
@@ -5740,7 +5741,7 @@ class InfiniteTimeout(Timeout):
5740
5741
  def __call__(self) -> float:
5741
5742
  return float('inf')
5742
5743
 
5743
- def or_(self, o: ta.Any) -> ta.Any:
5744
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
5744
5745
  return o
5745
5746
 
5746
5747
 
@@ -5766,7 +5767,7 @@ class CompositeTimeout(Timeout):
5766
5767
  def __call__(self) -> float:
5767
5768
  return min((c() for c in self.children), default=float('inf'))
5768
5769
 
5769
- def or_(self, o: ta.Any) -> ta.Any:
5770
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
5770
5771
  if self.can_expire:
5771
5772
  return self()
5772
5773
  return o
@@ -5801,8 +5802,10 @@ class PredicateTimeout(Timeout):
5801
5802
  return float('inf')
5802
5803
  raise self.exc
5803
5804
 
5804
- def or_(self, o: ta.Any) -> ta.Any:
5805
- return self()
5805
+ def remaining_or(self, o: T) -> ta.Union[float, T]:
5806
+ if not math.isinf(f := self()):
5807
+ return f
5808
+ return o
5806
5809
 
5807
5810
 
5808
5811
  ########################################
@@ -10808,7 +10811,7 @@ class BaseSubprocesses(Abstract):
10808
10811
  #
10809
10812
 
10810
10813
  if 'timeout' in kwargs:
10811
- kwargs['timeout'] = Timeout.of(kwargs['timeout']).or_(None)
10814
+ kwargs['timeout'] = Timeout.of(kwargs['timeout']).remaining_or(None)
10812
10815
 
10813
10816
  #
10814
10817
 
@@ -4,7 +4,7 @@ import typing as ta
4
4
 
5
5
  from omcore.argparse import all as ap
6
6
  from omcore.formats.json import all as json
7
- from omcore.logs.std.standard import configure_standard_logging
7
+ from omcore.logs import all as logs
8
8
  from omcore.specs import jsonschema as jsch
9
9
 
10
10
  from .generator import JsonSchemaCodeGen
@@ -51,7 +51,7 @@ class Cli(ap.Cli):
51
51
 
52
52
 
53
53
  def _main() -> None:
54
- configure_standard_logging()
54
+ logs.configure_standard_logging()
55
55
 
56
56
  Cli().cli_run_and_exit()
57
57
 
@@ -2,8 +2,6 @@ import re
2
2
  import typing as ta
3
3
 
4
4
  from omcore import lang
5
- from omcore.lang.casing import StringCasingError
6
- from omcore.marshal.api.naming import Naming
7
5
 
8
6
 
9
7
  ##
@@ -19,7 +17,7 @@ _WORD_PAT: ta.Final = re.compile(r'[A-Za-z0-9]+')
19
17
  def split_loose_words(s: str) -> list[str]:
20
18
  try:
21
19
  return lang.split_string_casing(s)
22
- except StringCasingError:
20
+ except lang.StringCasingError:
23
21
  pass
24
22
 
25
23
  words = [m.group(0).lower() for m in _WORD_PAT.finditer(s)]
@@ -40,7 +38,7 @@ def ref_name(ref_str: str) -> str:
40
38
  def python_class_name(json_name: str) -> str:
41
39
  try:
42
40
  return _SNAKE_TO_CAMEL(_LOW_CAMEL_TO_SNAKE(json_name))
43
- except StringCasingError:
41
+ except lang.StringCasingError:
44
42
  pass
45
43
 
46
44
  try:
@@ -56,7 +54,7 @@ def python_field_name(json_name: str) -> str:
56
54
 
57
55
  try:
58
56
  return _LOW_CAMEL_TO_SNAKE(json_name)
59
- except StringCasingError:
57
+ except lang.StringCasingError:
60
58
  pass
61
59
 
62
60
  try:
@@ -69,21 +67,21 @@ def tag_to_camel(tag: str) -> str:
69
67
  return lang.CAMEL_CASE.join(*split_loose_words(tag))
70
68
 
71
69
 
72
- def infer_naming(names: ta.Iterable[str]) -> Naming | None:
73
- counts: dict[Naming, int] = {}
70
+ def infer_naming(names: ta.Iterable[str]) -> lang.StringCasing | None:
71
+ counts: dict[lang.StringCasing, int] = {}
74
72
  for name in names:
75
73
  if name.startswith('_'):
76
74
  continue
77
- for naming, casing in [
78
- (Naming.CAMEL, lang.CAMEL_CASE),
79
- (Naming.LOW_CAMEL, lang.LOW_CAMEL_CASE),
80
- (Naming.SNAKE, lang.SNAKE_CASE),
81
- (Naming.UP_SNAKE, lang.UP_SNAKE_CASE),
82
- (Naming.KEBAB, lang.KEBAB_CASE),
83
- (Naming.UP_KEBAB, lang.UP_KEBAB_CASE),
75
+ for casing in [
76
+ lang.CAMEL_CASE,
77
+ lang.LOW_CAMEL_CASE,
78
+ lang.SNAKE_CASE,
79
+ lang.UP_SNAKE_CASE,
80
+ lang.KEBAB_CASE,
81
+ lang.UP_KEBAB_CASE,
84
82
  ]:
85
83
  if casing.match(name):
86
- counts[naming] = counts.get(naming, 0) + 1
84
+ counts[casing] = counts.get(casing, 0) + 1
87
85
 
88
86
  if not counts:
89
87
  return None