omdev 0.0.0.dev356__tar.gz → 0.0.0.dev358__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 (319) hide show
  1. {omdev-0.0.0.dev356/omdev.egg-info → omdev-0.0.0.dev358}/PKG-INFO +2 -2
  2. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/.manifests.json +1 -1
  3. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/docker/dataserver.py +1 -1
  4. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/docker/repositories.py +1 -1
  5. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cli/clicli.py +47 -10
  6. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/cli.py +3 -0
  7. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/default.py +3 -0
  8. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/inject.py +5 -0
  9. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/inspect.py +3 -0
  10. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/providers/inject.py +3 -0
  11. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/providers/running.py +3 -0
  12. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/providers/standalone.py +3 -0
  13. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/pyenv/inject.py +3 -0
  14. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/pyenv/provider.py +3 -0
  15. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/pyenv/pyenv.py +3 -0
  16. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/resolvers.py +3 -0
  17. omdev-0.0.0.dev358/omdev/interp/uv/inject.py +24 -0
  18. omdev-0.0.0.dev358/omdev/interp/uv/provider.py +40 -0
  19. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/uv/uv.py +3 -0
  20. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/magic/magic.py +3 -0
  21. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/magic/prepare.py +3 -0
  22. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/magic/styles.py +3 -0
  23. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/precheck/git.py +1 -1
  24. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/precheck/imports.py +3 -3
  25. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/precheck/lite.py +1 -1
  26. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/precheck/manifests.py +1 -1
  27. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/precheck/scripts.py +1 -1
  28. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/scripts/ci.py +1 -1
  29. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/scripts/interp.py +143 -11
  30. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/scripts/pyproject.py +151 -11
  31. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/json/cli.py +14 -6
  32. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/json/parsing.py +4 -4
  33. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/json/processing.py +18 -0
  34. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/json/rendering.py +1 -1
  35. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358/omdev.egg-info}/PKG-INFO +2 -2
  36. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev.egg-info/requires.txt +1 -1
  37. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/pyproject.toml +2 -2
  38. omdev-0.0.0.dev356/omdev/interp/uv/inject.py +0 -12
  39. omdev-0.0.0.dev356/omdev/interp/uv/provider.py +0 -21
  40. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/LICENSE +0 -0
  41. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/MANIFEST.in +0 -0
  42. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/README.md +0 -0
  43. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/__about__.py +0 -0
  44. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/__init__.py +0 -0
  45. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/amalg/__init__.py +0 -0
  46. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/amalg/__main__.py +0 -0
  47. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/amalg/gen.py +0 -0
  48. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/amalg/imports.py +0 -0
  49. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/amalg/main.py +0 -0
  50. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/amalg/manifests.py +0 -0
  51. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/amalg/resources.py +0 -0
  52. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/amalg/srcfiles.py +0 -0
  53. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/amalg/strip.py +0 -0
  54. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/amalg/types.py +0 -0
  55. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/amalg/typing.py +0 -0
  56. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/__init__.py +0 -0
  57. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/compute/__init__.py +0 -0
  58. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/compute/cache.py +0 -0
  59. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/compute/contexts.py +0 -0
  60. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/compute/currents.py +0 -0
  61. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/compute/fns.py +0 -0
  62. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/compute/resolvers.py +0 -0
  63. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/compute/storage.py +0 -0
  64. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/compute/types.py +0 -0
  65. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/data/__init__.py +0 -0
  66. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/data/actions.py +0 -0
  67. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/data/cache.py +0 -0
  68. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/data/consts.py +0 -0
  69. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/data/defaults.py +0 -0
  70. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/data/manifests.py +0 -0
  71. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cache/data/specs.py +0 -0
  72. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cc/__init__.py +0 -0
  73. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cc/__main__.py +0 -0
  74. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cc/cdeps.py +0 -0
  75. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cc/cdeps.toml +0 -0
  76. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cc/cli.py +0 -0
  77. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cc/srclangs.py +0 -0
  78. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/__init__.py +0 -0
  79. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_boilerplate.cc +0 -0
  80. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/LICENSE +0 -0
  81. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/__init__.py +0 -0
  82. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/build_ext.py +0 -0
  83. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  84. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  85. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/compilers/options.py +0 -0
  86. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  87. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/dir_util.py +0 -0
  88. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/errors.py +0 -0
  89. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/extension.py +0 -0
  90. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/file_util.py +0 -0
  91. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/modified.py +0 -0
  92. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/spawn.py +0 -0
  93. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/sysconfig.py +0 -0
  94. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/util.py +0 -0
  95. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/_distutils/version.py +0 -0
  96. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/build.py +0 -0
  97. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/cmake.py +0 -0
  98. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/importhook.py +0 -0
  99. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/magic.py +0 -0
  100. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cexts/scan.py +0 -0
  101. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/__init__.py +0 -0
  102. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/__main__.py +0 -0
  103. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/cache.py +0 -0
  104. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/ci.py +0 -0
  105. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/cli.py +0 -0
  106. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/compose.py +0 -0
  107. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/consts.py +0 -0
  108. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/docker/__init__.py +0 -0
  109. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/docker/buildcaching.py +0 -0
  110. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/docker/cache.py +0 -0
  111. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/docker/cacheserved/__init__.py +0 -0
  112. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/docker/cacheserved/cache.py +0 -0
  113. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/docker/cacheserved/manifests.py +0 -0
  114. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/docker/cmds.py +0 -0
  115. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/docker/imagepulling.py +0 -0
  116. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/docker/inject.py +0 -0
  117. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/docker/packing.py +0 -0
  118. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/docker/utils.py +0 -0
  119. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/github/__init__.py +0 -0
  120. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/github/api/__init__.py +0 -0
  121. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/github/api/clients.py +0 -0
  122. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/github/api/v1/__init__.py +0 -0
  123. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/github/api/v1/api.py +0 -0
  124. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/github/api/v1/client.py +0 -0
  125. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/github/api/v2/__init__.py +0 -0
  126. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/github/api/v2/api.py +0 -0
  127. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/github/api/v2/azure.py +0 -0
  128. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/github/api/v2/client.py +0 -0
  129. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/github/bootstrap.py +0 -0
  130. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/github/cache.py +0 -0
  131. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/github/cli.py +0 -0
  132. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/github/env.py +0 -0
  133. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/github/inject.py +0 -0
  134. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/inject.py +0 -0
  135. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/requirements.py +0 -0
  136. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/shell.py +0 -0
  137. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ci/utils.py +0 -0
  138. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cli/__init__.py +0 -0
  139. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cli/__main__.py +0 -0
  140. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cli/_pathhack.py +0 -0
  141. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cli/install.py +0 -0
  142. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cli/main.py +0 -0
  143. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cli/managers.py +0 -0
  144. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cli/types.py +0 -0
  145. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/clipboard/__init__.py +0 -0
  146. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/clipboard/clipboard.py +0 -0
  147. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/clipboard/darwin_cf.py +0 -0
  148. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/clipboard/linux_x11.py +0 -0
  149. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cmake.py +0 -0
  150. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cmdlog/__init__.py +0 -0
  151. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cmdlog/__main__.py +0 -0
  152. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cmdlog/_cmdlog.py +0 -0
  153. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cmdlog/cli.py +0 -0
  154. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/cmdlog/cmdlog.py +0 -0
  155. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/dataserver/__init__.py +0 -0
  156. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/dataserver/handlers.py +0 -0
  157. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/dataserver/http.py +0 -0
  158. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/dataserver/routes.py +0 -0
  159. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/dataserver/server.py +0 -0
  160. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/dataserver/targets.py +0 -0
  161. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/git/__init__.py +0 -0
  162. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/git/magic.py +0 -0
  163. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/git/revisions.py +0 -0
  164. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/git/shallow.py +0 -0
  165. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/git/status.py +0 -0
  166. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/home/__init__.py +0 -0
  167. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/home/paths.py +0 -0
  168. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/home/secrets.py +0 -0
  169. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/home/shadow.py +0 -0
  170. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/imgur.py +0 -0
  171. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/__init__.py +0 -0
  172. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/__main__.py +0 -0
  173. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/providers/__init__.py +0 -0
  174. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/providers/base.py +0 -0
  175. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/providers/system.py +0 -0
  176. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/pyenv/__init__.py +0 -0
  177. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/pyenv/install.py +0 -0
  178. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/types.py +0 -0
  179. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/uv/__init__.py +0 -0
  180. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/interp/venvs.py +0 -0
  181. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/magic/__init__.py +0 -0
  182. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/magic/__main__.py +0 -0
  183. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/magic/cli.py +0 -0
  184. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/magic/find.py +0 -0
  185. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/manifests/__init__.py +0 -0
  186. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/manifests/__main__.py +0 -0
  187. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/manifests/build.py +0 -0
  188. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/manifests/dumping.py +0 -0
  189. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/manifests/main.py +0 -0
  190. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/mypy/__init__.py +0 -0
  191. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/mypy/debug.py +0 -0
  192. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/mypy/report.py +0 -0
  193. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/oci/__init__.py +0 -0
  194. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/oci/building.py +0 -0
  195. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/oci/compression.py +0 -0
  196. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/oci/data.py +0 -0
  197. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/oci/datarefs.py +0 -0
  198. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/oci/dataserver.py +0 -0
  199. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/oci/loading.py +0 -0
  200. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/oci/media.py +0 -0
  201. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/oci/pack/__init__.py +0 -0
  202. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/oci/pack/packing.py +0 -0
  203. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/oci/pack/repositories.py +0 -0
  204. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/oci/pack/unpacking.py +0 -0
  205. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/oci/repositories.py +0 -0
  206. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/oci/tars.py +0 -0
  207. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/packaging/__init__.py +0 -0
  208. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/packaging/marshal.py +0 -0
  209. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/packaging/names.py +0 -0
  210. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/packaging/requires.py +0 -0
  211. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/packaging/revisions.py +0 -0
  212. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/packaging/specifiers.py +0 -0
  213. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/packaging/versions.py +0 -0
  214. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/packaging/wheelfile.py +0 -0
  215. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/pip.py +0 -0
  216. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/precheck/__init__.py +0 -0
  217. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/precheck/__main__.py +0 -0
  218. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/precheck/base.py +0 -0
  219. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/precheck/caches.py +0 -0
  220. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/precheck/main.py +0 -0
  221. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ptk/__init__.py +0 -0
  222. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ptk/apps/__init__.py +0 -0
  223. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ptk/apps/ncdu.py +0 -0
  224. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ptk/confirm.py +0 -0
  225. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ptk/markdown/LICENSE +0 -0
  226. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ptk/markdown/__init__.py +0 -0
  227. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ptk/markdown/__main__.py +0 -0
  228. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ptk/markdown/border.py +0 -0
  229. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ptk/markdown/cli.py +0 -0
  230. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ptk/markdown/markdown.py +0 -0
  231. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ptk/markdown/parser.py +0 -0
  232. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ptk/markdown/styles.py +0 -0
  233. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ptk/markdown/tags.py +0 -0
  234. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/ptk/markdown/utils.py +0 -0
  235. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/__init__.py +0 -0
  236. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/attrdocs.py +0 -0
  237. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/bracepy.py +0 -0
  238. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/classdot.py +0 -0
  239. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/docstrings/LICENSE +0 -0
  240. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/docstrings/__init__.py +0 -0
  241. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/docstrings/attrdoc.py +0 -0
  242. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/docstrings/common.py +0 -0
  243. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/docstrings/epydoc.py +0 -0
  244. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/docstrings/google.py +0 -0
  245. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/docstrings/numpydoc.py +0 -0
  246. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/docstrings/parser.py +0 -0
  247. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/docstrings/rest.py +0 -0
  248. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/findimports.py +0 -0
  249. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/scripts/__init__.py +0 -0
  250. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/scripts/bumpversion.py +0 -0
  251. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/scripts/execstat.py +0 -0
  252. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/scripts/importtrace.py +0 -0
  253. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/srcheaders.py +0 -0
  254. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/tools/__init__.py +0 -0
  255. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/tools/importscan.py +0 -0
  256. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/py/tools/mkrelimp.py +0 -0
  257. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/pyproject/__init__.py +0 -0
  258. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/pyproject/__main__.py +0 -0
  259. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/pyproject/cexts.py +0 -0
  260. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/pyproject/cli.py +0 -0
  261. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/pyproject/configs.py +0 -0
  262. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/pyproject/inject.py +0 -0
  263. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/pyproject/pkg.py +0 -0
  264. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/pyproject/reqs.py +0 -0
  265. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/pyproject/resources/__init__.py +0 -0
  266. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/pyproject/resources/docker-dev.sh +0 -0
  267. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/pyproject/resources/python.sh +0 -0
  268. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/pyproject/venvs.py +0 -0
  269. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/scripts/__init__.py +0 -0
  270. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/scripts/slowcat.py +0 -0
  271. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/scripts/tmpexec.py +0 -0
  272. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tagstrings.py +0 -0
  273. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tokens/__init__.py +0 -0
  274. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tokens/all.py +0 -0
  275. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tokens/tokenizert.py +0 -0
  276. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tokens/utils.py +0 -0
  277. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/__init__.py +0 -0
  278. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/antlr/__init__.py +0 -0
  279. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/antlr/__main__.py +0 -0
  280. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/antlr/cli.py +0 -0
  281. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/antlr/consts.py +0 -0
  282. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/antlr/gen.py +0 -0
  283. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/cloc.py +0 -0
  284. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/diff.py +0 -0
  285. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/doc.py +0 -0
  286. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/docker.py +0 -0
  287. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/git/__init__.py +0 -0
  288. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/git/__main__.py +0 -0
  289. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/git/cli.py +0 -0
  290. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/git/consts.py +0 -0
  291. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/git/messages.py +0 -0
  292. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/intellij.py +0 -0
  293. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/json/__init__.py +0 -0
  294. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/json/__main__.py +0 -0
  295. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/json/formats.py +0 -0
  296. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/json/io.py +0 -0
  297. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/jsonview/__init__.py +0 -0
  298. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/jsonview/__main__.py +0 -0
  299. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/jsonview/cli.py +0 -0
  300. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/jsonview/resources/__init__.py +0 -0
  301. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/jsonview/resources/jsonview.css +0 -0
  302. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/jsonview/resources/jsonview.js +0 -0
  303. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/linehisto.py +0 -0
  304. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/mkenv.py +0 -0
  305. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/notebook.py +0 -0
  306. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/pawk/__init__.py +0 -0
  307. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/pawk/__main__.py +0 -0
  308. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/pawk/pawk.py +0 -0
  309. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/pip.py +0 -0
  310. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/prof.py +0 -0
  311. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/qr.py +0 -0
  312. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/shadow.py +0 -0
  313. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/shell.py +0 -0
  314. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev/tools/sqlrepl.py +0 -0
  315. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev.egg-info/SOURCES.txt +0 -0
  316. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev.egg-info/dependency_links.txt +0 -0
  317. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev.egg-info/entry_points.txt +0 -0
  318. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/omdev.egg-info/top_level.txt +0 -0
  319. {omdev-0.0.0.dev356 → omdev-0.0.0.dev358}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev356
3
+ Version: 0.0.0.dev358
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.13
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish==0.0.0.dev356
15
+ Requires-Dist: omlish==0.0.0.dev358
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=25.1; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -39,7 +39,7 @@
39
39
  "module": ".cli.clicli",
40
40
  "attr": "_CLI_MODULE",
41
41
  "file": "omdev/cli/clicli.py",
42
- "line": 193,
42
+ "line": 230,
43
43
  "value": {
44
44
  "$.cli.types.CliModule": {
45
45
  "cmd_name": "cli",
@@ -1,4 +1,4 @@
1
- # ruff: noqa: UP006 UP007 UP045
1
+ # ruff: noqa: UP006 UP007 UP043 UP045
2
2
  import asyncio
3
3
  import contextlib
4
4
  import logging
@@ -1,4 +1,4 @@
1
- # ruff: noqa: UP006 UP007 UP045
1
+ # ruff: noqa: UP006 UP007 UP043 UP045
2
2
  import abc
3
3
  import contextlib
4
4
  import shlex
@@ -11,6 +11,7 @@ import urllib.request
11
11
  from omlish import __about__
12
12
  from omlish import lang
13
13
  from omlish.argparse import all as ap
14
+ from omlish.os.temp import temp_dir_context
14
15
 
15
16
  from ..pip import get_root_dists
16
17
  from ..pip import lookup_latest_package_version
@@ -90,6 +91,7 @@ class CliCli(ap.Cli):
90
91
  ap.arg('--url', default=DEFAULT_REINSTALL_URL),
91
92
  ap.arg('--local', action='store_true'),
92
93
  ap.arg('--no-deps', action='store_true'),
94
+ ap.arg('--no-uv', action='store_true'),
93
95
  ap.arg('--dry-run', action='store_true'),
94
96
  ap.arg('--version'),
95
97
  ap.arg('extra_deps', nargs='*'),
@@ -114,16 +116,51 @@ class CliCli(ap.Cli):
114
116
 
115
117
  if lang.can_import('pip'):
116
118
  print('Checking pip install')
117
- subprocess.check_call([
118
- sys.executable,
119
- '-m',
120
- 'pip',
121
- 'install',
122
- '--dry-run',
123
- install.DEFAULT_CLI_PKG,
124
- *deps,
125
- ])
126
- print('Pip install check successful')
119
+
120
+ with temp_dir_context() as tmp_dir:
121
+ venv_dir = os.path.join(tmp_dir, 'venv')
122
+ subprocess.check_call([
123
+ sys.executable,
124
+ '-m', 'venv',
125
+ venv_dir,
126
+ ])
127
+ venv_exe = os.path.join(venv_dir, 'bin', 'python')
128
+
129
+ if self.args.no_uv:
130
+ subprocess.check_call([
131
+ venv_exe,
132
+ '-m', 'pip',
133
+ 'install',
134
+ '--upgrade',
135
+ 'pip',
136
+ ])
137
+ pip_cmd = [
138
+ venv_exe,
139
+ '-m', 'pip',
140
+ ]
141
+ else:
142
+ subprocess.check_call([
143
+ venv_exe,
144
+ '-m', 'pip',
145
+ 'install',
146
+ 'uv',
147
+ ])
148
+ pip_cmd = [
149
+ venv_exe,
150
+ '-m', 'uv',
151
+ 'pip',
152
+ ]
153
+
154
+ subprocess.check_call([
155
+ *pip_cmd,
156
+ 'install',
157
+ '--dry-run',
158
+ f'{install.DEFAULT_CLI_PKG}=={target_version}',
159
+ *deps,
160
+ ])
161
+
162
+ print('Pip install check successful')
163
+
127
164
  else:
128
165
  print('Pip not present, cannot check install')
129
166
 
@@ -25,6 +25,9 @@ from .resolvers import InterpResolverProviders
25
25
  from .types import InterpSpecifier
26
26
 
27
27
 
28
+ ##
29
+
30
+
28
31
  class InterpCli(ArgparseCli):
29
32
  @cached_nullary
30
33
  def injector(self) -> Injector:
@@ -5,6 +5,9 @@ from .inject import bind_interp
5
5
  from .resolvers import InterpResolver
6
6
 
7
7
 
8
+ ##
9
+
10
+
8
11
  @cached_nullary
9
12
  def get_default_interp_resolver() -> InterpResolver:
10
13
  return inj.create_injector(bind_interp())[InterpResolver]
@@ -15,6 +15,10 @@ from .pyenv.provider import PyenvInterpProvider
15
15
  from .resolvers import InterpResolver
16
16
  from .resolvers import InterpResolverProviders
17
17
  from .uv.inject import bind_interp_uv
18
+ from .uv.provider import UvInterpProvider
19
+
20
+
21
+ ##
18
22
 
19
23
 
20
24
  def bind_interp() -> InjectorBindings:
@@ -36,6 +40,7 @@ def bind_interp() -> InjectorBindings:
36
40
  injector.provide(c)
37
41
  for c in [
38
42
  PyenvInterpProvider,
43
+ UvInterpProvider,
39
44
  RunningInterpProvider,
40
45
  SystemInterpProvider,
41
46
  ]
@@ -12,6 +12,9 @@ from .types import InterpOpts
12
12
  from .types import InterpVersion
13
13
 
14
14
 
15
+ ##
16
+
17
+
15
18
  @dc.dataclass(frozen=True)
16
19
  class InterpInspection:
17
20
  exe: str
@@ -11,6 +11,9 @@ from .running import RunningInterpProvider
11
11
  from .system import SystemInterpProvider
12
12
 
13
13
 
14
+ ##
15
+
16
+
14
17
  def bind_interp_providers() -> InjectorBindings:
15
18
  lst: ta.List[InjectorBindingOrBindings] = [
16
19
  inj.bind_array(InterpProvider),
@@ -10,6 +10,9 @@ from ..types import InterpVersion
10
10
  from .base import InterpProvider
11
11
 
12
12
 
13
+ ##
14
+
15
+
13
16
  class RunningInterpProvider(InterpProvider):
14
17
  @cached_nullary
15
18
  def version(self) -> InterpVersion:
@@ -36,6 +36,9 @@ from omlish.lite.check import check
36
36
  from omlish.lite.logs import log
37
37
 
38
38
 
39
+ ##
40
+
41
+
39
42
  class StandalonePythons:
40
43
  LAST_TAG_FOR_I686_LINUX = '118809599' # tag name: "20230826"
41
44
 
@@ -10,6 +10,9 @@ from .provider import PyenvInterpProvider
10
10
  from .pyenv import Pyenv
11
11
 
12
12
 
13
+ ##
14
+
15
+
13
16
  def bind_interp_pyenv() -> InjectorBindings:
14
17
  lst: ta.List[InjectorBindingOrBindings] = [
15
18
  inj.bind(Pyenv, singleton=True),
@@ -17,6 +17,9 @@ from .install import PyenvVersionInstaller
17
17
  from .pyenv import Pyenv
18
18
 
19
19
 
20
+ ##
21
+
22
+
20
23
  class PyenvInterpProvider(InterpProvider):
21
24
  @dc.dataclass(frozen=True)
22
25
  class Options:
@@ -19,6 +19,9 @@ from omlish.lite.cached import async_cached_nullary
19
19
  from omlish.lite.check import check
20
20
 
21
21
 
22
+ ##
23
+
24
+
22
25
  class Pyenv:
23
26
  def __init__(
24
27
  self,
@@ -9,6 +9,9 @@ from .types import InterpSpecifier
9
9
  from .types import InterpVersion
10
10
 
11
11
 
12
+ ##
13
+
14
+
12
15
  @dc.dataclass(frozen=True)
13
16
  class InterpResolverProviders:
14
17
  providers: ta.Sequence[ta.Tuple[str, InterpProvider]]
@@ -0,0 +1,24 @@
1
+ # ruff: noqa: UP006 UP007 UP045
2
+ import typing as ta
3
+
4
+ from omlish.lite.inject import InjectorBindingOrBindings
5
+ from omlish.lite.inject import InjectorBindings
6
+ from omlish.lite.inject import inj
7
+
8
+ from ..providers.base import InterpProvider
9
+ from .provider import UvInterpProvider
10
+ from .uv import Uv
11
+
12
+
13
+ ##
14
+
15
+
16
+ def bind_interp_uv() -> InjectorBindings:
17
+ lst: ta.List[InjectorBindingOrBindings] = [
18
+ inj.bind(Uv, singleton=True),
19
+
20
+ inj.bind(UvInterpProvider, singleton=True),
21
+ inj.bind(InterpProvider, to_key=UvInterpProvider, array=True),
22
+ ]
23
+
24
+ return inj.as_bindings(*lst)
@@ -0,0 +1,40 @@
1
+ # ruff: noqa: UP006 UP007 UP045
2
+ """
3
+ uv run pip
4
+ uv run --python 3.11.6 pip
5
+ uv venv --python 3.11.6 --seed barf
6
+ python3 -m venv barf && barf/bin/pip install uv && barf/bin/uv venv --python 3.11.6 --seed barf2
7
+ """
8
+ import logging
9
+ import typing as ta
10
+
11
+ from ..inspect import InterpInspector
12
+ from ..providers.base import InterpProvider
13
+ from ..types import Interp
14
+ from ..types import InterpSpecifier
15
+ from ..types import InterpVersion
16
+ from .uv import Uv
17
+
18
+
19
+ ##
20
+
21
+
22
+ class UvInterpProvider(InterpProvider):
23
+ def __init__(
24
+ self,
25
+ *,
26
+ pyenv: Uv,
27
+ inspector: InterpInspector,
28
+ log: ta.Optional[logging.Logger] = None,
29
+ ) -> None:
30
+ super().__init__()
31
+
32
+ self._pyenv = pyenv
33
+ self._inspector = inspector
34
+ self._log = log
35
+
36
+ async def get_installed_versions(self, spec: InterpSpecifier) -> ta.Sequence[InterpVersion]:
37
+ return []
38
+
39
+ async def get_installed_version(self, version: InterpVersion) -> Interp:
40
+ raise NotImplementedError
@@ -12,6 +12,9 @@ from omlish.lite.cached import async_cached_nullary
12
12
  from omlish.lite.check import check
13
13
 
14
14
 
15
+ ##
16
+
17
+
15
18
  @dc.dataclass(frozen=True)
16
19
  class UvConfig:
17
20
  ignore_path: bool = False
@@ -3,6 +3,9 @@ import dataclasses as dc
3
3
  import typing as ta
4
4
 
5
5
 
6
+ ##
7
+
8
+
6
9
  @dc.dataclass(frozen=True)
7
10
  class Magic:
8
11
  key: str
@@ -2,6 +2,9 @@ import json
2
2
  import typing as ta
3
3
 
4
4
 
5
+ ##
6
+
7
+
5
8
  class MagicPrepareError(Exception):
6
9
  pass
7
10
 
@@ -3,6 +3,9 @@ import dataclasses as dc
3
3
  import typing as ta
4
4
 
5
5
 
6
+ ##
7
+
8
+
6
9
  MAGIC_KEY_PREFIX = '@omlish-'
7
10
 
8
11
 
@@ -25,7 +25,7 @@ class GitBlacklistPrecheck(Precheck['GitBlacklistPrecheck.Config']):
25
25
  def __init__(self, config: Config = Config()) -> None:
26
26
  super().__init__(config)
27
27
 
28
- async def run(self) -> ta.AsyncGenerator[Precheck.Violation, None]:
28
+ async def run(self) -> ta.AsyncGenerator[Precheck.Violation]:
29
29
  for f in self._config.files:
30
30
  proc = await asyncio.create_subprocess_exec('git', 'status', '-s', f)
31
31
  await proc.communicate()
@@ -35,7 +35,7 @@ class RootRelativeImportPrecheck(Precheck['RootRelativeImportPrecheck.Config']):
35
35
  self._headers_cache = headers_cache
36
36
  self._ast_cache = ast_cache
37
37
 
38
- async def _run_py_file(self, py_file: str, src_root: str) -> ta.AsyncGenerator[Precheck.Violation, None]:
38
+ async def _run_py_file(self, py_file: str, src_root: str) -> ta.AsyncGenerator[Precheck.Violation]:
39
39
  if isinstance(header_lines := self._headers_cache.get_file_headers(py_file), Exception):
40
40
  return
41
41
  if any(hl.src.strip() == '# ruff: noqa' for hl in header_lines):
@@ -58,7 +58,7 @@ class RootRelativeImportPrecheck(Precheck['RootRelativeImportPrecheck.Config']):
58
58
 
59
59
  return
60
60
 
61
- async def _run_src_root(self, src_root: str) -> ta.AsyncGenerator[Precheck.Violation, None]:
61
+ async def _run_src_root(self, src_root: str) -> ta.AsyncGenerator[Precheck.Violation]:
62
62
  py_files = [
63
63
  os.path.join(e.root, f)
64
64
  for e in self._dir_walk_cache.list_dir(src_root)
@@ -70,7 +70,7 @@ class RootRelativeImportPrecheck(Precheck['RootRelativeImportPrecheck.Config']):
70
70
  async for v in self._run_py_file(py_file, src_root):
71
71
  yield v
72
72
 
73
- async def run(self) -> ta.AsyncGenerator[Precheck.Violation, None]:
73
+ async def run(self) -> ta.AsyncGenerator[Precheck.Violation]:
74
74
  for src_root in self._context.src_roots:
75
75
  async for v in self._run_src_root(src_root):
76
76
  yield v
@@ -157,7 +157,7 @@ class LitePython8Precheck(Precheck['LitePython8Precheck.Config']):
157
157
  else:
158
158
  raise RuntimeError(f'Unknown target kind: {tgt.kind}')
159
159
 
160
- async def run(self) -> ta.AsyncGenerator[Precheck.Violation, None]:
160
+ async def run(self) -> ta.AsyncGenerator[Precheck.Violation]:
161
161
  tgts = await self._collect_targets()
162
162
 
163
163
  sem = asyncio.Semaphore(self._config.concurrency)
@@ -20,7 +20,7 @@ class ManifestsPrecheck(Precheck['ManifestsPrecheck.Config']):
20
20
 
21
21
  self._context = context
22
22
 
23
- async def run(self) -> ta.AsyncGenerator[Precheck.Violation, None]:
23
+ async def run(self) -> ta.AsyncGenerator[Precheck.Violation]:
24
24
  for src_root in self._context.src_roots:
25
25
  try:
26
26
  MANIFEST_LOADER.load(src_root)
@@ -26,7 +26,7 @@ class ScriptDepsPrecheck(Precheck['ScriptDepsPrecheck.Config']):
26
26
 
27
27
  self._context = context
28
28
 
29
- async def run(self) -> ta.AsyncGenerator[Precheck.Violation, None]:
29
+ async def run(self) -> ta.AsyncGenerator[Precheck.Violation]:
30
30
  for fp in magic.find_magic_files(
31
31
  magic.PY_MAGIC_STYLE,
32
32
  self._context.src_roots,
@@ -5,7 +5,7 @@
5
5
  # @omlish-generated
6
6
  # @omlish-amalg-output ../ci/cli.py
7
7
  # @omlish-git-diff-omit
8
- # ruff: noqa: N802 TC003 UP006 UP007 UP036 UP045
8
+ # ruff: noqa: N802 TC003 UP006 UP007 UP036 UP043 UP045
9
9
  """
10
10
  Inputs:
11
11
  - requirements.txt