omdev 0.0.0.dev225__tar.gz → 0.0.0.dev227__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (257) hide show
  1. {omdev-0.0.0.dev225/omdev.egg-info → omdev-0.0.0.dev227}/PKG-INFO +2 -2
  2. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/scripts/ci.py +280 -29
  3. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/scripts/interp.py +274 -28
  4. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/scripts/pyproject.py +280 -29
  5. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227/omdev.egg-info}/PKG-INFO +2 -2
  6. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev.egg-info/requires.txt +1 -1
  7. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/pyproject.toml +2 -2
  8. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/LICENSE +0 -0
  9. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/MANIFEST.in +0 -0
  10. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/README.rst +0 -0
  11. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/.manifests.json +0 -0
  12. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/__about__.py +0 -0
  13. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/__init__.py +0 -0
  14. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/amalg/__init__.py +0 -0
  15. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/amalg/__main__.py +0 -0
  16. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/amalg/gen.py +0 -0
  17. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/amalg/imports.py +0 -0
  18. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/amalg/main.py +0 -0
  19. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/amalg/manifests.py +0 -0
  20. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/amalg/resources.py +0 -0
  21. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/amalg/srcfiles.py +0 -0
  22. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/amalg/strip.py +0 -0
  23. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/amalg/types.py +0 -0
  24. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/amalg/typing.py +0 -0
  25. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/antlr/__init__.py +0 -0
  26. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/antlr/consts.py +0 -0
  27. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/antlr/gen.py +0 -0
  28. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/bracepy.py +0 -0
  29. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/__init__.py +0 -0
  30. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/compute/__init__.py +0 -0
  31. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/compute/cache.py +0 -0
  32. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/compute/contexts.py +0 -0
  33. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/compute/currents.py +0 -0
  34. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/compute/fns.py +0 -0
  35. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/compute/resolvers.py +0 -0
  36. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/compute/storage.py +0 -0
  37. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/compute/types.py +0 -0
  38. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/data/__init__.py +0 -0
  39. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/data/actions.py +0 -0
  40. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/data/cache.py +0 -0
  41. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/data/consts.py +0 -0
  42. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/data/defaults.py +0 -0
  43. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/data/manifests.py +0 -0
  44. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cache/data/specs.py +0 -0
  45. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cc/__init__.py +0 -0
  46. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cc/__main__.py +0 -0
  47. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cc/cdeps.py +0 -0
  48. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cc/cdeps.toml +0 -0
  49. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cc/cli.py +0 -0
  50. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/__init__.py +0 -0
  51. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_boilerplate.cc +0 -0
  52. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/LICENSE +0 -0
  53. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/__init__.py +0 -0
  54. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/build_ext.py +0 -0
  55. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  56. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  57. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/compilers/options.py +0 -0
  58. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  59. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/dir_util.py +0 -0
  60. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/errors.py +0 -0
  61. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/extension.py +0 -0
  62. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/file_util.py +0 -0
  63. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/modified.py +0 -0
  64. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/spawn.py +0 -0
  65. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/sysconfig.py +0 -0
  66. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/util.py +0 -0
  67. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/_distutils/version.py +0 -0
  68. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/build.py +0 -0
  69. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/cmake.py +0 -0
  70. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/importhook.py +0 -0
  71. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/magic.py +0 -0
  72. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cexts/scan.py +0 -0
  73. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/__init__.py +0 -0
  74. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/__main__.py +0 -0
  75. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/cache.py +0 -0
  76. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/ci.py +0 -0
  77. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/cli.py +0 -0
  78. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/compose.py +0 -0
  79. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/consts.py +0 -0
  80. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/docker/__init__.py +0 -0
  81. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/docker/buildcaching.py +0 -0
  82. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/docker/cache.py +0 -0
  83. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/docker/cacheserved.py +0 -0
  84. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/docker/cmds.py +0 -0
  85. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/docker/dataserver.py +0 -0
  86. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/docker/imagepulling.py +0 -0
  87. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/docker/inject.py +0 -0
  88. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/docker/packing.py +0 -0
  89. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/docker/repositories.py +0 -0
  90. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/docker/utils.py +0 -0
  91. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/github/__init__.py +0 -0
  92. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/github/api.py +0 -0
  93. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/github/bootstrap.py +0 -0
  94. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/github/cache.py +0 -0
  95. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/github/cli.py +0 -0
  96. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/github/client.py +0 -0
  97. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/github/env.py +0 -0
  98. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/github/inject.py +0 -0
  99. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/inject.py +0 -0
  100. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/requirements.py +0 -0
  101. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/shell.py +0 -0
  102. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ci/utils.py +0 -0
  103. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/classdot.py +0 -0
  104. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cli/__init__.py +0 -0
  105. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cli/__main__.py +0 -0
  106. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cli/_pathhack.py +0 -0
  107. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cli/clicli.py +0 -0
  108. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cli/install.py +0 -0
  109. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cli/main.py +0 -0
  110. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cli/managers.py +0 -0
  111. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cli/types.py +0 -0
  112. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/clipboard/__init__.py +0 -0
  113. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/clipboard/clipboard.py +0 -0
  114. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/clipboard/darwin_cf.py +0 -0
  115. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/clipboard/linux_x11.py +0 -0
  116. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/cmake.py +0 -0
  117. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/dataserver/__init__.py +0 -0
  118. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/dataserver/handlers.py +0 -0
  119. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/dataserver/http.py +0 -0
  120. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/dataserver/routes.py +0 -0
  121. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/dataserver/server.py +0 -0
  122. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/dataserver/targets.py +0 -0
  123. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/findimports.py +0 -0
  124. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/git/__init__.py +0 -0
  125. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/git/revisions.py +0 -0
  126. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/git/shallow.py +0 -0
  127. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/git/status.py +0 -0
  128. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/imgur.py +0 -0
  129. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/__init__.py +0 -0
  130. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/__main__.py +0 -0
  131. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/cli.py +0 -0
  132. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/default.py +0 -0
  133. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/inject.py +0 -0
  134. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/inspect.py +0 -0
  135. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/providers/__init__.py +0 -0
  136. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/providers/base.py +0 -0
  137. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/providers/inject.py +0 -0
  138. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/providers/running.py +0 -0
  139. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/providers/standalone.py +0 -0
  140. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/providers/system.py +0 -0
  141. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/pyenv/__init__.py +0 -0
  142. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/pyenv/inject.py +0 -0
  143. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/pyenv/install.py +0 -0
  144. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/pyenv/provider.py +0 -0
  145. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/pyenv/pyenv.py +0 -0
  146. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/resolvers.py +0 -0
  147. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/types.py +0 -0
  148. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/uv/__init__.py +0 -0
  149. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/uv/inject.py +0 -0
  150. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/uv/provider.py +0 -0
  151. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/uv/uv.py +0 -0
  152. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/interp/venvs.py +0 -0
  153. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/magic/__init__.py +0 -0
  154. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/magic/__main__.py +0 -0
  155. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/magic/cli.py +0 -0
  156. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/magic/find.py +0 -0
  157. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/magic/magic.py +0 -0
  158. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/magic/prepare.py +0 -0
  159. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/magic/styles.py +0 -0
  160. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/manifests/__init__.py +0 -0
  161. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/manifests/__main__.py +0 -0
  162. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/manifests/build.py +0 -0
  163. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/manifests/main.py +0 -0
  164. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/mypy/__init__.py +0 -0
  165. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/mypy/debug.py +0 -0
  166. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/oci/__init__.py +0 -0
  167. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/oci/building.py +0 -0
  168. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/oci/compression.py +0 -0
  169. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/oci/data.py +0 -0
  170. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/oci/datarefs.py +0 -0
  171. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/oci/dataserver.py +0 -0
  172. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/oci/loading.py +0 -0
  173. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/oci/media.py +0 -0
  174. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/oci/pack/__init__.py +0 -0
  175. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/oci/pack/packing.py +0 -0
  176. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/oci/pack/repositories.py +0 -0
  177. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/oci/pack/unpacking.py +0 -0
  178. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/oci/repositories.py +0 -0
  179. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/oci/tars.py +0 -0
  180. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/packaging/__init__.py +0 -0
  181. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/packaging/marshal.py +0 -0
  182. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/packaging/names.py +0 -0
  183. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/packaging/requires.py +0 -0
  184. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/packaging/specifiers.py +0 -0
  185. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/packaging/versions.py +0 -0
  186. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pip.py +0 -0
  187. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/precheck/__init__.py +0 -0
  188. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/precheck/__main__.py +0 -0
  189. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/precheck/base.py +0 -0
  190. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/precheck/git.py +0 -0
  191. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/precheck/lite.py +0 -0
  192. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/precheck/main.py +0 -0
  193. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/precheck/manifests.py +0 -0
  194. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/precheck/scripts.py +0 -0
  195. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ptk/__init__.py +0 -0
  196. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ptk/apps/__init__.py +0 -0
  197. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/ptk/apps/ncdu.py +0 -0
  198. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pycharm/__init__.py +0 -0
  199. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pycharm/__main__.py +0 -0
  200. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pycharm/cli.py +0 -0
  201. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pyproject/__init__.py +0 -0
  202. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pyproject/__main__.py +0 -0
  203. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pyproject/cexts.py +0 -0
  204. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pyproject/cli.py +0 -0
  205. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pyproject/configs.py +0 -0
  206. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pyproject/inject.py +0 -0
  207. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pyproject/pkg.py +0 -0
  208. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pyproject/reqs.py +0 -0
  209. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pyproject/resources/__init__.py +0 -0
  210. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pyproject/resources/docker-dev.sh +0 -0
  211. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pyproject/resources/python.sh +0 -0
  212. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/pyproject/venvs.py +0 -0
  213. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/revisions.py +0 -0
  214. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/scripts/__init__.py +0 -0
  215. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/scripts/bumpversion.py +0 -0
  216. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/scripts/execrss.py +0 -0
  217. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/scripts/exectime.py +0 -0
  218. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/scripts/importtrace.py +0 -0
  219. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/scripts/slowcat.py +0 -0
  220. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/scripts/tmpexec.py +0 -0
  221. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/secrets.py +0 -0
  222. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tagstrings.py +0 -0
  223. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tokens/__init__.py +0 -0
  224. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tokens/all.py +0 -0
  225. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tokens/tokenizert.py +0 -0
  226. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tokens/utils.py +0 -0
  227. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/__init__.py +0 -0
  228. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/cloc.py +0 -0
  229. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/doc.py +0 -0
  230. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/docker.py +0 -0
  231. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/git.py +0 -0
  232. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/importscan.py +0 -0
  233. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/json/__init__.py +0 -0
  234. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/json/__main__.py +0 -0
  235. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/json/cli.py +0 -0
  236. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/json/formats.py +0 -0
  237. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/json/io.py +0 -0
  238. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/json/parsing.py +0 -0
  239. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/json/processing.py +0 -0
  240. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/json/rendering.py +0 -0
  241. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/linehisto.py +0 -0
  242. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/mkenv.py +0 -0
  243. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/mkrelimp.py +0 -0
  244. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/notebook.py +0 -0
  245. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/pawk/__init__.py +0 -0
  246. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/pawk/__main__.py +0 -0
  247. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/pawk/pawk.py +0 -0
  248. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/pip.py +0 -0
  249. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/prof.py +0 -0
  250. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/qr.py +0 -0
  251. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/tools/sqlrepl.py +0 -0
  252. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev/wheelfile.py +0 -0
  253. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev.egg-info/SOURCES.txt +0 -0
  254. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev.egg-info/dependency_links.txt +0 -0
  255. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev.egg-info/entry_points.txt +0 -0
  256. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/omdev.egg-info/top_level.txt +0 -0
  257. {omdev-0.0.0.dev225 → omdev-0.0.0.dev227}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: omdev
3
- Version: 0.0.0.dev225
3
+ Version: 0.0.0.dev227
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.dev225
15
+ Requires-Dist: omlish==0.0.0.dev227
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=24.10; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -64,9 +64,6 @@ T = ta.TypeVar('T')
64
64
  # ../../omlish/asyncs/asyncio/asyncio.py
65
65
  CallableT = ta.TypeVar('CallableT', bound=ta.Callable)
66
66
 
67
- # ../../omlish/asyncs/asyncio/timeouts.py
68
- AwaitableT = ta.TypeVar('AwaitableT', bound=ta.Awaitable)
69
-
70
67
  # ../../omlish/lite/check.py
71
68
  SizedT = ta.TypeVar('SizedT', bound=ta.Sized)
72
69
  CheckMessage = ta.Union[str, ta.Callable[..., ta.Optional[str]], None] # ta.TypeAlias
@@ -75,9 +72,15 @@ CheckOnRaiseFn = ta.Callable[[Exception], None] # ta.TypeAlias
75
72
  CheckExceptionFactory = ta.Callable[..., Exception] # ta.TypeAlias
76
73
  CheckArgsRenderer = ta.Callable[..., ta.Optional[str]] # ta.TypeAlias
77
74
 
75
+ # ../../omlish/lite/timeouts.py
76
+ TimeoutLike = ta.Union['Timeout', 'Timeout.Default', ta.Iterable['TimeoutLike'], float] # ta.TypeAlias
77
+
78
78
  # ../../omlish/argparse/cli.py
79
79
  ArgparseCmdFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
80
80
 
81
+ # ../../omlish/asyncs/asyncio/timeouts.py
82
+ AwaitableT = ta.TypeVar('AwaitableT', bound=ta.Awaitable)
83
+
81
84
  # ../../omlish/lite/contextmanagers.py
82
85
  ExitStackedT = ta.TypeVar('ExitStackedT', bound='ExitStacked')
83
86
  AsyncExitStackedT = ta.TypeVar('AsyncExitStackedT', bound='AsyncExitStacked')
@@ -245,19 +248,6 @@ async def asyncio_wait_concurrent(
245
248
  return [task.result() for task in done]
246
249
 
247
250
 
248
- ########################################
249
- # ../../../omlish/asyncs/asyncio/timeouts.py
250
-
251
-
252
- def asyncio_maybe_timeout(
253
- fut: AwaitableT,
254
- timeout: ta.Optional[float] = None,
255
- ) -> AwaitableT:
256
- if timeout is not None:
257
- fut = asyncio.wait_for(fut, timeout) # type: ignore
258
- return fut
259
-
260
-
261
251
  ########################################
262
252
  # ../../../omlish/lite/cached.py
263
253
 
@@ -1057,6 +1047,205 @@ def format_num_bytes(num_bytes: int) -> str:
1057
1047
  return f'{num_bytes / 1024 ** (len(FORMAT_NUM_BYTES_SUFFIXES) - 1):.2f}{FORMAT_NUM_BYTES_SUFFIXES[-1]}'
1058
1048
 
1059
1049
 
1050
+ ########################################
1051
+ # ../../../omlish/lite/timeouts.py
1052
+ """
1053
+ TODO:
1054
+ - Event (/ Predicate)
1055
+ """
1056
+
1057
+
1058
+ ##
1059
+
1060
+
1061
+ class Timeout(abc.ABC):
1062
+ @property
1063
+ @abc.abstractmethod
1064
+ def can_expire(self) -> bool:
1065
+ """Indicates whether or not this timeout will ever expire."""
1066
+
1067
+ raise NotImplementedError
1068
+
1069
+ @abc.abstractmethod
1070
+ def expired(self) -> bool:
1071
+ """Return whether or not this timeout has expired."""
1072
+
1073
+ raise NotImplementedError
1074
+
1075
+ @abc.abstractmethod
1076
+ def remaining(self) -> float:
1077
+ """Returns the time (in seconds) remaining until the timeout expires. May be negative and/or infinite."""
1078
+
1079
+ raise NotImplementedError
1080
+
1081
+ @abc.abstractmethod
1082
+ def __call__(self) -> float:
1083
+ """Returns the time (in seconds) remaining until the timeout expires, or raises if the timeout has expired."""
1084
+
1085
+ raise NotImplementedError
1086
+
1087
+ @abc.abstractmethod
1088
+ def or_(self, o: ta.Any) -> ta.Any:
1089
+ """Evaluates time remaining via remaining() if this timeout can expire, otherwise returns `o`."""
1090
+
1091
+ raise NotImplementedError
1092
+
1093
+ #
1094
+
1095
+ @classmethod
1096
+ def _now(cls) -> float:
1097
+ return time.time()
1098
+
1099
+ #
1100
+
1101
+ class Default:
1102
+ def __new__(cls, *args, **kwargs): # noqa
1103
+ raise TypeError
1104
+
1105
+ class _NOT_SPECIFIED: # noqa
1106
+ def __new__(cls, *args, **kwargs): # noqa
1107
+ raise TypeError
1108
+
1109
+ @classmethod
1110
+ def of(
1111
+ cls,
1112
+ obj: ta.Optional[TimeoutLike],
1113
+ default: ta.Union[TimeoutLike, ta.Type[_NOT_SPECIFIED]] = _NOT_SPECIFIED,
1114
+ ) -> 'Timeout':
1115
+ if obj is None:
1116
+ return InfiniteTimeout()
1117
+
1118
+ elif isinstance(obj, Timeout):
1119
+ return obj
1120
+
1121
+ elif isinstance(obj, (float, int)):
1122
+ return DeadlineTimeout(cls._now() + obj)
1123
+
1124
+ elif isinstance(obj, ta.Iterable):
1125
+ return CompositeTimeout(*[Timeout.of(c) for c in obj])
1126
+
1127
+ elif obj is Timeout.Default:
1128
+ if default is Timeout._NOT_SPECIFIED or default is Timeout.Default:
1129
+ raise RuntimeError('Must specify a default timeout')
1130
+
1131
+ else:
1132
+ return Timeout.of(default) # type: ignore[arg-type]
1133
+
1134
+ else:
1135
+ raise TypeError(obj)
1136
+
1137
+ @classmethod
1138
+ def of_deadline(cls, deadline: float) -> 'DeadlineTimeout':
1139
+ return DeadlineTimeout(deadline)
1140
+
1141
+ @classmethod
1142
+ def of_predicate(cls, expired_fn: ta.Callable[[], bool]) -> 'PredicateTimeout':
1143
+ return PredicateTimeout(expired_fn)
1144
+
1145
+
1146
+ class DeadlineTimeout(Timeout):
1147
+ def __init__(
1148
+ self,
1149
+ deadline: float,
1150
+ exc: ta.Union[ta.Type[BaseException], BaseException] = TimeoutError,
1151
+ ) -> None:
1152
+ super().__init__()
1153
+
1154
+ self.deadline = deadline
1155
+ self.exc = exc
1156
+
1157
+ @property
1158
+ def can_expire(self) -> bool:
1159
+ return True
1160
+
1161
+ def expired(self) -> bool:
1162
+ return not (self.remaining() > 0)
1163
+
1164
+ def remaining(self) -> float:
1165
+ return self.deadline - self._now()
1166
+
1167
+ def __call__(self) -> float:
1168
+ if (rem := self.remaining()) > 0:
1169
+ return rem
1170
+ raise self.exc
1171
+
1172
+ def or_(self, o: ta.Any) -> ta.Any:
1173
+ return self()
1174
+
1175
+
1176
+ class InfiniteTimeout(Timeout):
1177
+ @property
1178
+ def can_expire(self) -> bool:
1179
+ return False
1180
+
1181
+ def expired(self) -> bool:
1182
+ return False
1183
+
1184
+ def remaining(self) -> float:
1185
+ return float('inf')
1186
+
1187
+ def __call__(self) -> float:
1188
+ return float('inf')
1189
+
1190
+ def or_(self, o: ta.Any) -> ta.Any:
1191
+ return o
1192
+
1193
+
1194
+ class CompositeTimeout(Timeout):
1195
+ def __init__(self, *children: Timeout) -> None:
1196
+ super().__init__()
1197
+
1198
+ self.children = children
1199
+
1200
+ @property
1201
+ def can_expire(self) -> bool:
1202
+ return any(c.can_expire for c in self.children)
1203
+
1204
+ def expired(self) -> bool:
1205
+ return any(c.expired() for c in self.children)
1206
+
1207
+ def remaining(self) -> float:
1208
+ return min(c.remaining() for c in self.children)
1209
+
1210
+ def __call__(self) -> float:
1211
+ return min(c() for c in self.children)
1212
+
1213
+ def or_(self, o: ta.Any) -> ta.Any:
1214
+ if self.can_expire:
1215
+ return self()
1216
+ return o
1217
+
1218
+
1219
+ class PredicateTimeout(Timeout):
1220
+ def __init__(
1221
+ self,
1222
+ expired_fn: ta.Callable[[], bool],
1223
+ exc: ta.Union[ta.Type[BaseException], BaseException] = TimeoutError,
1224
+ ) -> None:
1225
+ super().__init__()
1226
+
1227
+ self.expired_fn = expired_fn
1228
+ self.exc = exc
1229
+
1230
+ @property
1231
+ def can_expire(self) -> bool:
1232
+ return True
1233
+
1234
+ def expired(self) -> bool:
1235
+ return self.expired_fn()
1236
+
1237
+ def remaining(self) -> float:
1238
+ return float('inf')
1239
+
1240
+ def __call__(self) -> float:
1241
+ if not self.expired_fn():
1242
+ return float('inf')
1243
+ raise self.exc
1244
+
1245
+ def or_(self, o: ta.Any) -> ta.Any:
1246
+ return self()
1247
+
1248
+
1060
1249
  ########################################
1061
1250
  # ../../../omlish/logs/filters.py
1062
1251
 
@@ -1814,6 +2003,19 @@ class ArgparseCli:
1814
2003
  return fn()
1815
2004
 
1816
2005
 
2006
+ ########################################
2007
+ # ../../../omlish/asyncs/asyncio/timeouts.py
2008
+
2009
+
2010
+ def asyncio_maybe_timeout(
2011
+ fut: AwaitableT,
2012
+ timeout: ta.Optional[TimeoutLike] = None,
2013
+ ) -> AwaitableT:
2014
+ if timeout is not None:
2015
+ fut = asyncio.wait_for(fut, Timeout.of(timeout)()) # type: ignore
2016
+ return fut
2017
+
2018
+
1817
2019
  ########################################
1818
2020
  # ../../../omlish/lite/contextmanagers.py
1819
2021
 
@@ -3147,17 +3349,43 @@ class SubprocessRunOutput(ta.Generic[T]):
3147
3349
  class SubprocessRun:
3148
3350
  cmd: ta.Sequence[str]
3149
3351
  input: ta.Any = None
3150
- timeout: ta.Optional[float] = None
3352
+ timeout: ta.Optional[TimeoutLike] = None
3151
3353
  check: bool = False
3152
3354
  capture_output: ta.Optional[bool] = None
3153
3355
  kwargs: ta.Optional[ta.Mapping[str, ta.Any]] = None
3154
3356
 
3357
+ #
3358
+
3359
+ _FIELD_NAMES: ta.ClassVar[ta.FrozenSet[str]]
3360
+
3361
+ def replace(self, **kwargs: ta.Any) -> 'SubprocessRun':
3362
+ if not kwargs:
3363
+ return self
3364
+
3365
+ field_kws = {}
3366
+ extra_kws = {}
3367
+ for k, v in kwargs.items():
3368
+ if k in self._FIELD_NAMES:
3369
+ field_kws[k] = v
3370
+ else:
3371
+ extra_kws[k] = v
3372
+
3373
+ return dc.replace(self, **{
3374
+ **dict(kwargs={
3375
+ **(self.kwargs or {}),
3376
+ **extra_kws,
3377
+ }),
3378
+ **field_kws, # passing a kwarg named 'kwargs' intentionally clobbers
3379
+ })
3380
+
3381
+ #
3382
+
3155
3383
  @classmethod
3156
3384
  def of(
3157
3385
  cls,
3158
3386
  *cmd: str,
3159
3387
  input: ta.Any = None, # noqa
3160
- timeout: ta.Optional[float] = None,
3388
+ timeout: ta.Optional[TimeoutLike] = None,
3161
3389
  check: bool = False, # noqa
3162
3390
  capture_output: ta.Optional[bool] = None,
3163
3391
  **kwargs: ta.Any,
@@ -3178,20 +3406,25 @@ class SubprocessRun:
3178
3406
  def run(
3179
3407
  self,
3180
3408
  subprocesses: ta.Optional[ta.Any] = None, # AbstractSubprocesses
3409
+ **kwargs: ta.Any,
3181
3410
  ) -> SubprocessRunOutput:
3182
3411
  if subprocesses is None:
3183
3412
  subprocesses = self._DEFAULT_SUBPROCESSES
3184
- return check.not_none(subprocesses).run_(self) # type: ignore[attr-defined]
3413
+ return check.not_none(subprocesses).run_(self.replace(**kwargs)) # type: ignore[attr-defined]
3185
3414
 
3186
3415
  _DEFAULT_ASYNC_SUBPROCESSES: ta.ClassVar[ta.Optional[ta.Any]] = None # AbstractAsyncSubprocesses
3187
3416
 
3188
3417
  async def async_run(
3189
3418
  self,
3190
3419
  async_subprocesses: ta.Optional[ta.Any] = None, # AbstractAsyncSubprocesses
3420
+ **kwargs: ta.Any,
3191
3421
  ) -> SubprocessRunOutput:
3192
3422
  if async_subprocesses is None:
3193
3423
  async_subprocesses = self._DEFAULT_ASYNC_SUBPROCESSES
3194
- return await check.not_none(async_subprocesses).run_(self) # type: ignore[attr-defined]
3424
+ return await check.not_none(async_subprocesses).run_(self.replace(**kwargs)) # type: ignore[attr-defined]
3425
+
3426
+
3427
+ SubprocessRun._FIELD_NAMES = frozenset(fld.name for fld in dc.fields(SubprocessRun)) # noqa
3195
3428
 
3196
3429
 
3197
3430
  ##
@@ -3208,11 +3441,19 @@ class SubprocessRunnable(abc.ABC, ta.Generic[T]):
3208
3441
 
3209
3442
  #
3210
3443
 
3211
- def run(self, subprocesses: ta.Optional[ta.Any] = None) -> T: # AbstractSubprocesses
3212
- return self.handle_run_output(self.make_run().run(subprocesses))
3444
+ def run(
3445
+ self,
3446
+ subprocesses: ta.Optional[ta.Any] = None, # AbstractSubprocesses
3447
+ **kwargs: ta.Any,
3448
+ ) -> T:
3449
+ return self.handle_run_output(self.make_run().run(subprocesses, **kwargs))
3213
3450
 
3214
- async def async_run(self, async_subprocesses: ta.Optional[ta.Any] = None) -> T: # AbstractAsyncSubprocesses
3215
- return self.handle_run_output(await self.make_run().async_run(async_subprocesses))
3451
+ async def async_run(
3452
+ self,
3453
+ async_subprocesses: ta.Optional[ta.Any] = None, # AbstractAsyncSubprocesses
3454
+ **kwargs: ta.Any,
3455
+ ) -> T:
3456
+ return self.handle_run_output(await self.make_run().async_run(async_subprocesses, **kwargs))
3216
3457
 
3217
3458
 
3218
3459
  ########################################
@@ -4320,6 +4561,11 @@ class BaseSubprocesses(abc.ABC): # noqa
4320
4561
 
4321
4562
  #
4322
4563
 
4564
+ if 'timeout' in kwargs:
4565
+ kwargs['timeout'] = Timeout.of(kwargs['timeout']).or_(None)
4566
+
4567
+ #
4568
+
4323
4569
  return cmd, dict(
4324
4570
  env=env,
4325
4571
  shell=shell,
@@ -4465,7 +4711,7 @@ class AbstractAsyncSubprocesses(BaseSubprocesses):
4465
4711
  self,
4466
4712
  *cmd: str,
4467
4713
  input: ta.Any = None, # noqa
4468
- timeout: ta.Optional[float] = None,
4714
+ timeout: ta.Optional[TimeoutLike] = None,
4469
4715
  check: bool = False,
4470
4716
  capture_output: ta.Optional[bool] = None,
4471
4717
  **kwargs: ta.Any,
@@ -4542,6 +4788,11 @@ class AbstractAsyncSubprocesses(BaseSubprocesses):
4542
4788
 
4543
4789
  ########################################
4544
4790
  # ../../../omlish/subprocesses/sync.py
4791
+ """
4792
+ TODO:
4793
+ - popen
4794
+ - route check_calls through run_?
4795
+ """
4545
4796
 
4546
4797
 
4547
4798
  ##
@@ -4556,7 +4807,7 @@ class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
4556
4807
  self,
4557
4808
  *cmd: str,
4558
4809
  input: ta.Any = None, # noqa
4559
- timeout: ta.Optional[float] = None,
4810
+ timeout: ta.Optional[TimeoutLike] = None,
4560
4811
  check: bool = False,
4561
4812
  capture_output: ta.Optional[bool] = None,
4562
4813
  **kwargs: ta.Any,
@@ -4867,7 +5118,7 @@ class AsyncioProcessCommunicator:
4867
5118
  async def communicate(
4868
5119
  self,
4869
5120
  input: ta.Any = None, # noqa
4870
- timeout: ta.Optional[float] = None,
5121
+ timeout: ta.Optional[TimeoutLike] = None,
4871
5122
  ) -> Communication:
4872
5123
  return await asyncio_maybe_timeout(self._communicate(input), timeout)
4873
5124
 
@@ -4880,7 +5131,7 @@ class AsyncioSubprocesses(AbstractAsyncSubprocesses):
4880
5131
  self,
4881
5132
  proc: asyncio.subprocess.Process,
4882
5133
  input: ta.Any = None, # noqa
4883
- timeout: ta.Optional[float] = None,
5134
+ timeout: ta.Optional[TimeoutLike] = None,
4884
5135
  ) -> ta.Tuple[ta.Optional[bytes], ta.Optional[bytes]]:
4885
5136
  return await AsyncioProcessCommunicator(proc).communicate(input, timeout) # noqa
4886
5137
 
@@ -4891,7 +5142,7 @@ class AsyncioSubprocesses(AbstractAsyncSubprocesses):
4891
5142
  self,
4892
5143
  *cmd: str,
4893
5144
  shell: bool = False,
4894
- timeout: ta.Optional[float] = None,
5145
+ timeout: ta.Optional[TimeoutLike] = None,
4895
5146
  **kwargs: ta.Any,
4896
5147
  ) -> ta.AsyncGenerator[asyncio.subprocess.Process, None]:
4897
5148
  with self.prepare_and_wrap( *cmd, shell=shell, **kwargs) as (cmd, kwargs): # noqa