omdev 0.0.0.dev236__tar.gz → 0.0.0.dev237__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 (265) hide show
  1. {omdev-0.0.0.dev236/omdev.egg-info → omdev-0.0.0.dev237}/PKG-INFO +2 -2
  2. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/.manifests.json +13 -1
  3. omdev-0.0.0.dev237/omdev/home/configs.py +13 -0
  4. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/git/cli.py +59 -7
  5. omdev-0.0.0.dev237/omdev/tools/git/consts.py +1 -0
  6. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/git/messages.py +3 -1
  7. omdev-0.0.0.dev237/omdev/tools/shadow.py +72 -0
  8. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237/omdev.egg-info}/PKG-INFO +2 -2
  9. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev.egg-info/SOURCES.txt +3 -0
  10. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev.egg-info/requires.txt +1 -1
  11. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/pyproject.toml +2 -2
  12. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/LICENSE +0 -0
  13. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/MANIFEST.in +0 -0
  14. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/README.rst +0 -0
  15. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/__about__.py +0 -0
  16. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/__init__.py +0 -0
  17. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/amalg/__init__.py +0 -0
  18. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/amalg/__main__.py +0 -0
  19. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/amalg/gen.py +0 -0
  20. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/amalg/imports.py +0 -0
  21. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/amalg/main.py +0 -0
  22. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/amalg/manifests.py +0 -0
  23. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/amalg/resources.py +0 -0
  24. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/amalg/srcfiles.py +0 -0
  25. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/amalg/strip.py +0 -0
  26. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/amalg/types.py +0 -0
  27. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/amalg/typing.py +0 -0
  28. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/antlr/__init__.py +0 -0
  29. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/antlr/consts.py +0 -0
  30. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/antlr/gen.py +0 -0
  31. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/bracepy.py +0 -0
  32. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/__init__.py +0 -0
  33. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/compute/__init__.py +0 -0
  34. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/compute/cache.py +0 -0
  35. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/compute/contexts.py +0 -0
  36. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/compute/currents.py +0 -0
  37. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/compute/fns.py +0 -0
  38. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/compute/resolvers.py +0 -0
  39. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/compute/storage.py +0 -0
  40. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/compute/types.py +0 -0
  41. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/data/__init__.py +0 -0
  42. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/data/actions.py +0 -0
  43. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/data/cache.py +0 -0
  44. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/data/consts.py +0 -0
  45. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/data/defaults.py +0 -0
  46. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/data/manifests.py +0 -0
  47. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cache/data/specs.py +0 -0
  48. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cc/__init__.py +0 -0
  49. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cc/__main__.py +0 -0
  50. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cc/cdeps.py +0 -0
  51. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cc/cdeps.toml +0 -0
  52. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cc/cli.py +0 -0
  53. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/__init__.py +0 -0
  54. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_boilerplate.cc +0 -0
  55. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/LICENSE +0 -0
  56. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/__init__.py +0 -0
  57. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/build_ext.py +0 -0
  58. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  59. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  60. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/compilers/options.py +0 -0
  61. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  62. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/dir_util.py +0 -0
  63. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/errors.py +0 -0
  64. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/extension.py +0 -0
  65. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/file_util.py +0 -0
  66. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/modified.py +0 -0
  67. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/spawn.py +0 -0
  68. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/sysconfig.py +0 -0
  69. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/util.py +0 -0
  70. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/_distutils/version.py +0 -0
  71. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/build.py +0 -0
  72. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/cmake.py +0 -0
  73. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/importhook.py +0 -0
  74. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/magic.py +0 -0
  75. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cexts/scan.py +0 -0
  76. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/__init__.py +0 -0
  77. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/__main__.py +0 -0
  78. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/cache.py +0 -0
  79. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/ci.py +0 -0
  80. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/cli.py +0 -0
  81. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/compose.py +0 -0
  82. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/consts.py +0 -0
  83. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/docker/__init__.py +0 -0
  84. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/docker/buildcaching.py +0 -0
  85. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/docker/cache.py +0 -0
  86. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/docker/cacheserved.py +0 -0
  87. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/docker/cmds.py +0 -0
  88. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/docker/dataserver.py +0 -0
  89. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/docker/imagepulling.py +0 -0
  90. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/docker/inject.py +0 -0
  91. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/docker/packing.py +0 -0
  92. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/docker/repositories.py +0 -0
  93. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/docker/utils.py +0 -0
  94. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/github/__init__.py +0 -0
  95. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/github/api.py +0 -0
  96. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/github/bootstrap.py +0 -0
  97. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/github/cache.py +0 -0
  98. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/github/cli.py +0 -0
  99. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/github/client.py +0 -0
  100. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/github/env.py +0 -0
  101. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/github/inject.py +0 -0
  102. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/inject.py +0 -0
  103. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/requirements.py +0 -0
  104. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/shell.py +0 -0
  105. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ci/utils.py +0 -0
  106. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/classdot.py +0 -0
  107. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cli/__init__.py +0 -0
  108. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cli/__main__.py +0 -0
  109. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cli/_pathhack.py +0 -0
  110. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cli/clicli.py +0 -0
  111. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cli/install.py +0 -0
  112. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cli/main.py +0 -0
  113. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cli/managers.py +0 -0
  114. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cli/types.py +0 -0
  115. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/clipboard/__init__.py +0 -0
  116. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/clipboard/clipboard.py +0 -0
  117. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/clipboard/darwin_cf.py +0 -0
  118. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/clipboard/linux_x11.py +0 -0
  119. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/cmake.py +0 -0
  120. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/dataserver/__init__.py +0 -0
  121. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/dataserver/handlers.py +0 -0
  122. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/dataserver/http.py +0 -0
  123. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/dataserver/routes.py +0 -0
  124. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/dataserver/server.py +0 -0
  125. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/dataserver/targets.py +0 -0
  126. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/findimports.py +0 -0
  127. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/git/__init__.py +0 -0
  128. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/git/revisions.py +0 -0
  129. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/git/shallow.py +0 -0
  130. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/git/status.py +0 -0
  131. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/home/__init__.py +0 -0
  132. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/home/paths.py +0 -0
  133. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/home/secrets.py +0 -0
  134. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/imgur.py +0 -0
  135. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/__init__.py +0 -0
  136. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/__main__.py +0 -0
  137. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/cli.py +0 -0
  138. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/default.py +0 -0
  139. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/inject.py +0 -0
  140. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/inspect.py +0 -0
  141. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/providers/__init__.py +0 -0
  142. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/providers/base.py +0 -0
  143. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/providers/inject.py +0 -0
  144. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/providers/running.py +0 -0
  145. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/providers/standalone.py +0 -0
  146. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/providers/system.py +0 -0
  147. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/pyenv/__init__.py +0 -0
  148. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/pyenv/inject.py +0 -0
  149. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/pyenv/install.py +0 -0
  150. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/pyenv/provider.py +0 -0
  151. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/pyenv/pyenv.py +0 -0
  152. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/resolvers.py +0 -0
  153. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/types.py +0 -0
  154. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/uv/__init__.py +0 -0
  155. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/uv/inject.py +0 -0
  156. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/uv/provider.py +0 -0
  157. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/uv/uv.py +0 -0
  158. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/interp/venvs.py +0 -0
  159. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/magic/__init__.py +0 -0
  160. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/magic/__main__.py +0 -0
  161. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/magic/cli.py +0 -0
  162. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/magic/find.py +0 -0
  163. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/magic/magic.py +0 -0
  164. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/magic/prepare.py +0 -0
  165. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/magic/styles.py +0 -0
  166. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/manifests/__init__.py +0 -0
  167. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/manifests/__main__.py +0 -0
  168. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/manifests/build.py +0 -0
  169. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/manifests/main.py +0 -0
  170. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/mypy/__init__.py +0 -0
  171. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/mypy/debug.py +0 -0
  172. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/oci/__init__.py +0 -0
  173. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/oci/building.py +0 -0
  174. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/oci/compression.py +0 -0
  175. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/oci/data.py +0 -0
  176. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/oci/datarefs.py +0 -0
  177. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/oci/dataserver.py +0 -0
  178. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/oci/loading.py +0 -0
  179. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/oci/media.py +0 -0
  180. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/oci/pack/__init__.py +0 -0
  181. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/oci/pack/packing.py +0 -0
  182. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/oci/pack/repositories.py +0 -0
  183. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/oci/pack/unpacking.py +0 -0
  184. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/oci/repositories.py +0 -0
  185. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/oci/tars.py +0 -0
  186. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/packaging/__init__.py +0 -0
  187. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/packaging/marshal.py +0 -0
  188. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/packaging/names.py +0 -0
  189. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/packaging/requires.py +0 -0
  190. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/packaging/revisions.py +0 -0
  191. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/packaging/specifiers.py +0 -0
  192. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/packaging/versions.py +0 -0
  193. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/packaging/wheelfile.py +0 -0
  194. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pip.py +0 -0
  195. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/precheck/__init__.py +0 -0
  196. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/precheck/__main__.py +0 -0
  197. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/precheck/base.py +0 -0
  198. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/precheck/git.py +0 -0
  199. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/precheck/lite.py +0 -0
  200. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/precheck/main.py +0 -0
  201. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/precheck/manifests.py +0 -0
  202. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/precheck/scripts.py +0 -0
  203. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ptk/__init__.py +0 -0
  204. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ptk/apps/__init__.py +0 -0
  205. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/ptk/apps/ncdu.py +0 -0
  206. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pycharm/__init__.py +0 -0
  207. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pycharm/__main__.py +0 -0
  208. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pycharm/cli.py +0 -0
  209. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pyproject/__init__.py +0 -0
  210. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pyproject/__main__.py +0 -0
  211. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pyproject/cexts.py +0 -0
  212. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pyproject/cli.py +0 -0
  213. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pyproject/configs.py +0 -0
  214. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pyproject/inject.py +0 -0
  215. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pyproject/pkg.py +0 -0
  216. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pyproject/reqs.py +0 -0
  217. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pyproject/resources/__init__.py +0 -0
  218. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pyproject/resources/docker-dev.sh +0 -0
  219. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pyproject/resources/python.sh +0 -0
  220. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/pyproject/venvs.py +0 -0
  221. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/scripts/__init__.py +0 -0
  222. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/scripts/bumpversion.py +0 -0
  223. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/scripts/ci.py +0 -0
  224. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/scripts/execrss.py +0 -0
  225. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/scripts/exectime.py +0 -0
  226. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/scripts/importtrace.py +0 -0
  227. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/scripts/interp.py +0 -0
  228. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/scripts/pyproject.py +0 -0
  229. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/scripts/slowcat.py +0 -0
  230. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/scripts/tmpexec.py +0 -0
  231. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tagstrings.py +0 -0
  232. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tokens/__init__.py +0 -0
  233. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tokens/all.py +0 -0
  234. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tokens/tokenizert.py +0 -0
  235. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tokens/utils.py +0 -0
  236. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/__init__.py +0 -0
  237. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/cloc.py +0 -0
  238. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/doc.py +0 -0
  239. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/docker.py +0 -0
  240. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/git/__init__.py +0 -0
  241. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/git/__main__.py +0 -0
  242. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/importscan.py +0 -0
  243. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/json/__init__.py +0 -0
  244. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/json/__main__.py +0 -0
  245. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/json/cli.py +0 -0
  246. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/json/formats.py +0 -0
  247. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/json/io.py +0 -0
  248. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/json/parsing.py +0 -0
  249. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/json/processing.py +0 -0
  250. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/json/rendering.py +0 -0
  251. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/linehisto.py +0 -0
  252. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/mkenv.py +0 -0
  253. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/mkrelimp.py +0 -0
  254. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/notebook.py +0 -0
  255. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/pawk/__init__.py +0 -0
  256. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/pawk/__main__.py +0 -0
  257. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/pawk/pawk.py +0 -0
  258. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/pip.py +0 -0
  259. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/prof.py +0 -0
  260. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/qr.py +0 -0
  261. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev/tools/sqlrepl.py +0 -0
  262. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev.egg-info/dependency_links.txt +0 -0
  263. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev.egg-info/entry_points.txt +0 -0
  264. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/omdev.egg-info/top_level.txt +0 -0
  265. {omdev-0.0.0.dev236 → omdev-0.0.0.dev237}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: omdev
3
- Version: 0.0.0.dev236
3
+ Version: 0.0.0.dev237
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
12
12
  Classifier: Operating System :: POSIX
13
13
  Requires-Python: >=3.12
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish==0.0.0.dev236
15
+ Requires-Dist: omlish==0.0.0.dev237
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=25.1; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -291,7 +291,7 @@
291
291
  "module": ".tools.git.messages",
292
292
  "attr": "_TIMESTAMP_GIT_MESSAGE_GENERATOR_MANIFEST",
293
293
  "file": "omdev/tools/git/messages.py",
294
- "line": 75,
294
+ "line": 77,
295
295
  "value": {
296
296
  "$.tools.git.messages.GitMessageGeneratorManifest": {
297
297
  "mod_name": "omdev.tools.git.messages",
@@ -431,6 +431,18 @@
431
431
  }
432
432
  }
433
433
  },
434
+ {
435
+ "module": ".tools.shadow",
436
+ "attr": "_CLI_MODULE",
437
+ "file": "omdev/tools/shadow.py",
438
+ "line": 63,
439
+ "value": {
440
+ "$.cli.types.CliModule": {
441
+ "cmd_name": "shadow",
442
+ "mod_name": "omdev.tools.shadow"
443
+ }
444
+ }
445
+ },
434
446
  {
435
447
  "module": ".tools.sqlrepl",
436
448
  "attr": "_CLI_MODULE",
@@ -0,0 +1,13 @@
1
+ import os.path
2
+
3
+ from omlish.configs.shadow import MangledFilesShadowConfigs
4
+ from omlish.configs.shadow import ShadowConfigs
5
+
6
+ from .paths import get_home_dir
7
+
8
+
9
+ def get_shadow_configs() -> ShadowConfigs:
10
+ return MangledFilesShadowConfigs(
11
+ os.path.join(get_home_dir(), 'shadow'),
12
+ create=True,
13
+ )
@@ -13,6 +13,7 @@ from omlish import cached
13
13
  from omlish import check
14
14
  from omlish import lang
15
15
  from omlish.argparse import all as ap
16
+ from omlish.configs.processing.merging import merge_configs
16
17
  from omlish.formats import json
17
18
  from omlish.formats import yaml
18
19
  from omlish.logs import all as logs
@@ -20,7 +21,9 @@ from omlish.subprocesses.sync import subprocesses
20
21
 
21
22
  from ...git.status import GitStatusItem
22
23
  from ...git.status import get_git_status
24
+ from ...home.configs import get_shadow_configs
23
25
  from ...home.paths import get_home_dir
26
+ from . import consts
24
27
  from .messages import GitMessageGenerator
25
28
  from .messages import TimestampGitMessageGenerator
26
29
  from .messages import load_message_generator_manifests
@@ -74,23 +77,42 @@ class Cli(ap.Cli):
74
77
  return os.path.join(get_home_dir(), 'tools', 'git.yml')
75
78
 
76
79
  @cached.function
77
- def load_config(self) -> Config:
80
+ def load_home_config_content(self) -> ta.Any:
78
81
  try:
79
82
  with open(self.config_file_path()) as f:
80
83
  buf = f.read()
81
84
  except FileNotFoundError:
82
85
  return self.Config()
83
86
 
84
- dct = yaml.safe_load(buf)
87
+ return yaml.safe_load(buf) or {}
88
+
89
+ class _NOT_SET(lang.Marker): # noqa
90
+ pass
91
+
92
+ def load_config(self, path: str | type[_NOT_SET] | None = _NOT_SET) -> Config:
93
+ dct = self.load_home_config_content() or {}
94
+
95
+ if path is not self._NOT_SET:
96
+ if path is None:
97
+ path = os.getcwd()
98
+ shadow_cfg = get_shadow_configs().get_shadow_config(check.isinstance(path, str)) or {}
99
+ dct = merge_configs(dct, shadow_cfg.get('git', {}))
100
+
85
101
  return msh.unmarshal(dct, self.Config)
86
102
 
87
- @ap.cmd()
103
+ @ap.cmd(
104
+ ap.arg('dir', nargs='?'),
105
+ )
88
106
  def print_cfg(self) -> None:
89
- cfg = self.load_config()
107
+ cfg = self.load_config(self._args.dir)
90
108
  print(yaml.dump(msh.marshal(cfg)))
91
109
 
92
110
  #
93
111
 
112
+ _time_fmt: str = ap.arg_('--time-fmt', default=consts.DEFAULT_TIME_FMT)
113
+
114
+ # Commands
115
+
94
116
  @ap.cmd()
95
117
  def blob_sizes(self) -> None:
96
118
  # https://stackoverflow.com/a/42544963
@@ -232,10 +254,40 @@ class Cli(ap.Cli):
232
254
 
233
255
  # Lazy helpers
234
256
 
257
+ @ap.cmd(
258
+ ap.arg('-g', '--message-generator', nargs='?'),
259
+ ap.arg('dir', nargs='*'),
260
+ aliases=['gcm'],
261
+ )
262
+ def generate_commit_message(self) -> None:
263
+ def run(cwd: str | None) -> None:
264
+ st = get_git_status(cwd=cwd)
265
+
266
+ if not (st.has_staged or st.has_dirty):
267
+ return
268
+
269
+ mg_cls: type[GitMessageGenerator] = TimestampGitMessageGenerator
270
+ if (mg_name := self.args.message_generator) is None:
271
+ mg_name = self.load_config(cwd).default_message_generator
272
+ if mg_name is not None:
273
+ mg_cls = load_message_generator_manifests_map()[mg_name].load_cls()
274
+ mg = mg_cls()
275
+
276
+ mgr = mg.generate_commit_message(GitMessageGenerator.GenerateCommitMessageArgs(
277
+ cwd=cwd,
278
+ time_fmt=self._time_fmt,
279
+ ))
280
+ print(mgr.msg)
281
+
282
+ if not self.args.dir:
283
+ run(None)
284
+ else:
285
+ for d in self.args.dir:
286
+ run(d)
287
+
235
288
  @ap.cmd(
236
289
  ap.arg('-m', '--message', nargs='?'),
237
290
  ap.arg('-g', '--message-generator', nargs='?'),
238
- ap.arg('--time-fmt', default=GitMessageGenerator.GenerateCommitMessageArgs.DEFAULT_TIME_FMT),
239
291
  ap.arg('--dry-run', action='store_true'),
240
292
  ap.arg('-y', '--no-confirmation', action='store_true'),
241
293
  ap.arg('dir', nargs='*'),
@@ -261,14 +313,14 @@ class Cli(ap.Cli):
261
313
  else:
262
314
  mg_cls: type[GitMessageGenerator] = TimestampGitMessageGenerator
263
315
  if (mg_name := self.args.message_generator) is None:
264
- mg_name = self.load_config().default_message_generator
316
+ mg_name = self.load_config(cwd).default_message_generator
265
317
  if mg_name is not None:
266
318
  mg_cls = load_message_generator_manifests_map()[mg_name].load_cls()
267
319
  mg = mg_cls()
268
320
 
269
321
  mgr = mg.generate_commit_message(GitMessageGenerator.GenerateCommitMessageArgs(
270
322
  cwd=cwd,
271
- time_fmt=self.args.time_fmt,
323
+ time_fmt=self._time_fmt,
272
324
  ))
273
325
  if mgr.confirm and not self._args.no_confirmation:
274
326
  print(mgr.msg)
@@ -0,0 +1 @@
1
+ DEFAULT_TIME_FMT = '%Y-%m-%dT%H:%M:%SZ'
@@ -10,6 +10,8 @@ from omlish.manifests import load as manifest_load
10
10
  from omlish.manifests.base import ModAttrManifest
11
11
  from omlish.manifests.base import NameAliasesManifest
12
12
 
13
+ from . import consts
14
+
13
15
 
14
16
  ##
15
17
 
@@ -19,7 +21,7 @@ class GitMessageGenerator(abc.ABC):
19
21
  class GenerateCommitMessageArgs:
20
22
  cwd: str | None = None
21
23
 
22
- DEFAULT_TIME_FMT: ta.ClassVar[str] = '%Y-%m-%dT%H:%M:%SZ'
24
+ DEFAULT_TIME_FMT: ta.ClassVar[str] = consts.DEFAULT_TIME_FMT
23
25
  time_fmt: str = DEFAULT_TIME_FMT
24
26
 
25
27
  @dc.dataclass(frozen=True, kw_only=True)
@@ -0,0 +1,72 @@
1
+ """
2
+ TODO:
3
+ - 'edit', default cwd - use git's
4
+ - delete?
5
+ - 'purge'?
6
+ - 'validate' - at least formats
7
+ """
8
+ import os.path
9
+ import shutil
10
+
11
+ from omlish import check
12
+ from omlish.argparse import all as ap
13
+ from omlish.configs.shadow import FileShadowConfigs
14
+
15
+ from ..cli.types import CliModule
16
+ from ..home.configs import get_shadow_configs
17
+
18
+
19
+ ##
20
+
21
+
22
+ class ShadowCli(ap.Cli):
23
+ def _get_shadow_file(self, path: str | None = None) -> str:
24
+ if (path := self._args.path) is None:
25
+ path = os.getcwd()
26
+ file_scs = check.isinstance(get_shadow_configs(), FileShadowConfigs)
27
+ shd_file = file_scs.get_shadow_config_file_path(path)
28
+ return shd_file
29
+
30
+ #
31
+
32
+ @ap.cmd(
33
+ ap.arg('path', nargs='?'),
34
+ )
35
+ def edit(self) -> None:
36
+ shd_file = self._get_shadow_file(self._args.path)
37
+ os.makedirs(os.path.dirname(shd_file), exist_ok=True)
38
+ os.execl(check.not_none(shutil.which('vim')), 'vim', shd_file)
39
+
40
+ @ap.cmd(
41
+ ap.arg('path', nargs='?'),
42
+ )
43
+ def show(self) -> None:
44
+ shd_file = self._get_shadow_file(self._args.path)
45
+ try:
46
+ with open(shd_file) as f:
47
+ buf = f.read()
48
+ except FileNotFoundError:
49
+ return
50
+ print(buf)
51
+
52
+ @ap.cmd(
53
+ ap.arg('path', nargs='?'),
54
+ )
55
+ def which(self) -> None:
56
+ shd_file = self._get_shadow_file(self._args.path)
57
+ print(shd_file)
58
+
59
+
60
+ ##
61
+
62
+
63
+ # @omlish-manifest
64
+ _CLI_MODULE = CliModule('shadow', __name__)
65
+
66
+
67
+ def _main() -> None:
68
+ ShadowCli().cli_run_and_exit()
69
+
70
+
71
+ if __name__ == '__main__':
72
+ _main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: omdev
3
- Version: 0.0.0.dev236
3
+ Version: 0.0.0.dev237
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
12
12
  Classifier: Operating System :: POSIX
13
13
  Requires-Python: >=3.12
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish==0.0.0.dev236
15
+ Requires-Dist: omlish==0.0.0.dev237
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=25.1; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -129,6 +129,7 @@ omdev/git/revisions.py
129
129
  omdev/git/shallow.py
130
130
  omdev/git/status.py
131
131
  omdev/home/__init__.py
132
+ omdev/home/configs.py
132
133
  omdev/home/paths.py
133
134
  omdev/home/secrets.py
134
135
  omdev/interp/__init__.py
@@ -242,10 +243,12 @@ omdev/tools/notebook.py
242
243
  omdev/tools/pip.py
243
244
  omdev/tools/prof.py
244
245
  omdev/tools/qr.py
246
+ omdev/tools/shadow.py
245
247
  omdev/tools/sqlrepl.py
246
248
  omdev/tools/git/__init__.py
247
249
  omdev/tools/git/__main__.py
248
250
  omdev/tools/git/cli.py
251
+ omdev/tools/git/consts.py
249
252
  omdev/tools/git/messages.py
250
253
  omdev/tools/json/__init__.py
251
254
  omdev/tools/json/__main__.py
@@ -1,4 +1,4 @@
1
- omlish==0.0.0.dev236
1
+ omlish==0.0.0.dev237
2
2
 
3
3
  [all]
4
4
  black~=25.1
@@ -12,7 +12,7 @@ authors = [
12
12
  urls = {source = 'https://github.com/wrmsr/omlish'}
13
13
  license = {text = 'BSD-3-Clause'}
14
14
  requires-python = '>=3.12'
15
- version = '0.0.0.dev236'
15
+ version = '0.0.0.dev237'
16
16
  classifiers = [
17
17
  'License :: OSI Approved :: BSD License',
18
18
  'Development Status :: 2 - Pre-Alpha',
@@ -22,7 +22,7 @@ classifiers = [
22
22
  ]
23
23
  description = 'omdev'
24
24
  dependencies = [
25
- 'omlish == 0.0.0.dev236',
25
+ 'omlish == 0.0.0.dev237',
26
26
  ]
27
27
 
28
28
  [project.optional-dependencies]
File without changes
File without changes
File without changes