omdev 0.0.0.dev524__tar.gz → 0.0.0.dev525__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 (428) hide show
  1. {omdev-0.0.0.dev524/omdev.egg-info → omdev-0.0.0.dev525}/PKG-INFO +4 -4
  2. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/__about__.py +1 -1
  3. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/gen.py +2 -1
  4. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/resources/docker-dev.sh +5 -1
  5. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/resources/python.sh +1 -1
  6. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/ci.py +157 -12
  7. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/interp.py +149 -8
  8. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/lib/io/streams.py +49 -24
  9. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/lib/logs.py +2 -2
  10. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/pyproject.py +49 -11
  11. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/parsing.py +10 -5
  12. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525/omdev.egg-info}/PKG-INFO +4 -4
  13. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev.egg-info/requires.txt +3 -3
  14. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/pyproject.toml +4 -4
  15. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/LICENSE +0 -0
  16. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/MANIFEST.in +0 -0
  17. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/README.md +0 -0
  18. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/.omlish-manifests.json +0 -0
  19. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/README.md +0 -0
  20. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/__init__.py +0 -0
  21. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/__init__.py +0 -0
  22. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/__main__.py +0 -0
  23. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/cli/__init__.py +0 -0
  24. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/cli/main.py +0 -0
  25. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/__init__.py +0 -0
  26. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/gen.py +0 -0
  27. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/imports.py +0 -0
  28. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/manifests.py +0 -0
  29. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/resources.py +0 -0
  30. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/srcfiles.py +0 -0
  31. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/strip.py +0 -0
  32. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/types.py +0 -0
  33. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/typing.py +0 -0
  34. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/info.py +0 -0
  35. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/sources.py +0 -0
  36. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/__init__.py +0 -0
  37. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/__init__.py +0 -0
  38. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/cache.py +0 -0
  39. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/contexts.py +0 -0
  40. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/currents.py +0 -0
  41. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/fns.py +0 -0
  42. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/resolvers.py +0 -0
  43. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/storage.py +0 -0
  44. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/types.py +0 -0
  45. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/data/__init__.py +0 -0
  46. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/data/actions.py +0 -0
  47. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/data/cache.py +0 -0
  48. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/data/consts.py +0 -0
  49. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/data/defaults.py +0 -0
  50. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/data/manifests.py +0 -0
  51. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/data/specs.py +0 -0
  52. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/__init__.py +0 -0
  53. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/darwin/__init__.py +0 -0
  54. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/darwin/aps.py +0 -0
  55. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/darwin/ax.py +0 -0
  56. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/darwin/cf.py +0 -0
  57. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/darwin/cg.py +0 -0
  58. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/linux/__init__.py +0 -0
  59. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/linux/x11.py +0 -0
  60. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cc/__init__.py +0 -0
  61. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cc/__main__.py +0 -0
  62. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cc/cdeps.py +0 -0
  63. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cc/cdeps.toml +0 -0
  64. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cc/cli.py +0 -0
  65. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cc/srclangs.py +0 -0
  66. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/__init__.py +0 -0
  67. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_boilerplate.cc +0 -0
  68. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/LICENSE +0 -0
  69. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/__init__.py +0 -0
  70. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/build_ext.py +0 -0
  71. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  72. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  73. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/compilers/options.py +0 -0
  74. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  75. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/dir_util.py +0 -0
  76. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/errors.py +0 -0
  77. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/extension.py +0 -0
  78. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/file_util.py +0 -0
  79. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/modified.py +0 -0
  80. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/spawn.py +0 -0
  81. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/sysconfig.py +0 -0
  82. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/util.py +0 -0
  83. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/version.py +0 -0
  84. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/build.py +0 -0
  85. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/cmake.py +0 -0
  86. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/importhook.py +0 -0
  87. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/magic.py +0 -0
  88. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/scan.py +0 -0
  89. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/__init__.py +0 -0
  90. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/__main__.py +0 -0
  91. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/cache.py +0 -0
  92. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/ci.py +0 -0
  93. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/cli.py +0 -0
  94. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/compose.py +0 -0
  95. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/consts.py +0 -0
  96. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/__init__.py +0 -0
  97. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/buildcaching.py +0 -0
  98. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/cache.py +0 -0
  99. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/cacheserved/__init__.py +0 -0
  100. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/cacheserved/cache.py +0 -0
  101. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/cacheserved/manifests.py +0 -0
  102. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/cmds.py +0 -0
  103. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/dataserver.py +0 -0
  104. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/imagepulling.py +0 -0
  105. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/inject.py +0 -0
  106. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/packing.py +0 -0
  107. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/repositories.py +0 -0
  108. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/utils.py +0 -0
  109. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/__init__.py +0 -0
  110. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/__init__.py +0 -0
  111. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/clients.py +0 -0
  112. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/v1/__init__.py +0 -0
  113. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/v1/api.py +0 -0
  114. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/v1/client.py +0 -0
  115. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/v2/__init__.py +0 -0
  116. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/v2/api.py +0 -0
  117. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/v2/azure.py +0 -0
  118. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/v2/client.py +0 -0
  119. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/bootstrap.py +0 -0
  120. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/cache.py +0 -0
  121. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/cli.py +0 -0
  122. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/env.py +0 -0
  123. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/inject.py +0 -0
  124. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/inject.py +0 -0
  125. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/requirements.py +0 -0
  126. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/shell.py +0 -0
  127. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/utils.py +0 -0
  128. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/__init__.py +0 -0
  129. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/__main__.py +0 -0
  130. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/_pathhack.py +0 -0
  131. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/clicli.py +0 -0
  132. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/install.py +0 -0
  133. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/main.py +0 -0
  134. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/managers.py +0 -0
  135. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/types.py +0 -0
  136. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/clipboard/__init__.py +0 -0
  137. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/clipboard/capi/__init__.py +0 -0
  138. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/clipboard/capi/darwin_cf.py +0 -0
  139. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/clipboard/capi/linux_x11.py +0 -0
  140. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/clipboard/commands.py +0 -0
  141. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/clipboard/platform.py +0 -0
  142. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/clipboard/types.py +0 -0
  143. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cmake.py +0 -0
  144. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cmdlog/__init__.py +0 -0
  145. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cmdlog/__main__.py +0 -0
  146. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cmdlog/_cmdlog.py +0 -0
  147. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cmdlog/cli.py +0 -0
  148. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cmdlog/cmdlog.py +0 -0
  149. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataclasses/__init__.py +0 -0
  150. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataclasses/__main__.py +0 -0
  151. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataclasses/_dumping.py +0 -0
  152. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataclasses/_template.py +0 -0
  153. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataclasses/cli.py +0 -0
  154. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataclasses/codegen.py +0 -0
  155. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataclasses/dumping.py +0 -0
  156. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataserver/__init__.py +0 -0
  157. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataserver/handlers.py +0 -0
  158. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataserver/http.py +0 -0
  159. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataserver/routes.py +0 -0
  160. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataserver/server.py +0 -0
  161. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataserver/targets.py +0 -0
  162. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/__init__.py +0 -0
  163. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/content.py +0 -0
  164. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/helpers.py +0 -0
  165. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/ops.py +0 -0
  166. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/rendering.py +0 -0
  167. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/__init__.py +0 -0
  168. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/configs/__init__.py +0 -0
  169. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/depsets/__init__.py +0 -0
  170. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/depsets/python.toml +0 -0
  171. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/depsets/system.toml +0 -0
  172. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/depsets/x11.toml +0 -0
  173. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/__init__.py +0 -0
  174. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/apt.sh +0 -0
  175. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/docker.sh +0 -0
  176. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/firefox.sh +0 -0
  177. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/go.sh +0 -0
  178. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/jdk.sh +0 -0
  179. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/nvm.sh +0 -0
  180. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/pyenv.sh +0 -0
  181. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/rustup.sh +0 -0
  182. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/sshd.sh +0 -0
  183. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/vcpkg.sh +0 -0
  184. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/zig.sh +0 -0
  185. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/xu +0 -0
  186. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/git/__init__.py +0 -0
  187. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/git/magic.py +0 -0
  188. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/git/revisions.py +0 -0
  189. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/git/shallow.py +0 -0
  190. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/git/status.py +0 -0
  191. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/home/__init__.py +0 -0
  192. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/home/paths.py +0 -0
  193. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/home/secrets.py +0 -0
  194. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/home/shadow.py +0 -0
  195. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/imgur.py +0 -0
  196. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/intellij/__init__.py +0 -0
  197. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/intellij/cli.py +0 -0
  198. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/intellij/ides.py +0 -0
  199. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/intellij/open.py +0 -0
  200. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/__init__.py +0 -0
  201. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/__main__.py +0 -0
  202. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/cli.py +0 -0
  203. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/default.py +0 -0
  204. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/inject.py +0 -0
  205. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/inspect.py +0 -0
  206. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/providers/__init__.py +0 -0
  207. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/providers/base.py +0 -0
  208. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/providers/inject.py +0 -0
  209. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/providers/running.py +0 -0
  210. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/providers/standalone.py +0 -0
  211. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/providers/system.py +0 -0
  212. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/pyenv/__init__.py +0 -0
  213. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/pyenv/inject.py +0 -0
  214. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/pyenv/install.py +0 -0
  215. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/pyenv/provider.py +0 -0
  216. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/pyenv/pyenv.py +0 -0
  217. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/resolvers.py +0 -0
  218. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/types.py +0 -0
  219. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/uv/__init__.py +0 -0
  220. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/uv/inject.py +0 -0
  221. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/uv/provider.py +0 -0
  222. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/uv/uv.py +0 -0
  223. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/venvs.py +0 -0
  224. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/__init__.py +0 -0
  225. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/messages/__init__.py +0 -0
  226. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/messages/base.py +0 -0
  227. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/messages/formats.py +0 -0
  228. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/messages/messages.py +0 -0
  229. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/messages/parsing.py +0 -0
  230. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/numerics/__init__.py +0 -0
  231. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/numerics/formats.py +0 -0
  232. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/numerics/numerics.py +0 -0
  233. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/numerics/types.py +0 -0
  234. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/LICENSE +0 -0
  235. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/__init__.py +0 -0
  236. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/consts.py +0 -0
  237. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/errors.py +0 -0
  238. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/message.py +0 -0
  239. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/nuh.py +0 -0
  240. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/parsing.py +0 -0
  241. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/rendering.py +0 -0
  242. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/tags.py +0 -0
  243. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/utils.py +0 -0
  244. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/magic/__init__.py +0 -0
  245. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/magic/__main__.py +0 -0
  246. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/magic/cli.py +0 -0
  247. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/magic/find.py +0 -0
  248. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/magic/magic.py +0 -0
  249. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/magic/prepare.py +0 -0
  250. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/magic/styles.py +0 -0
  251. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/manifests/__init__.py +0 -0
  252. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/manifests/__main__.py +0 -0
  253. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/manifests/_dumping.py +0 -0
  254. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/manifests/building.py +0 -0
  255. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/manifests/dumping.py +0 -0
  256. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/manifests/main.py +0 -0
  257. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/markdown/__init__.py +0 -0
  258. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/markdown/incparse.py +0 -0
  259. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/markdown/tokens.py +0 -0
  260. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/mypy/__init__.py +0 -0
  261. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/mypy/debug.py +0 -0
  262. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/mypy/report.py +0 -0
  263. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/__init__.py +0 -0
  264. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/building.py +0 -0
  265. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/compression.py +0 -0
  266. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/data.py +0 -0
  267. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/datarefs.py +0 -0
  268. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/dataserver.py +0 -0
  269. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/loading.py +0 -0
  270. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/media.py +0 -0
  271. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/pack/__init__.py +0 -0
  272. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/pack/packing.py +0 -0
  273. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/pack/repositories.py +0 -0
  274. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/pack/unpacking.py +0 -0
  275. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/repositories.py +0 -0
  276. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/tars.py +0 -0
  277. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/__init__.py +0 -0
  278. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/marshal.py +0 -0
  279. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/names.py +0 -0
  280. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/requires.py +0 -0
  281. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/revisions.py +0 -0
  282. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/specifiers.py +0 -0
  283. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/versions.py +0 -0
  284. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/wheelfile.py +0 -0
  285. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pip.py +0 -0
  286. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/__init__.py +0 -0
  287. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/__main__.py +0 -0
  288. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/base.py +0 -0
  289. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/blanklines.py +0 -0
  290. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/caches.py +0 -0
  291. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/git.py +0 -0
  292. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/imports.py +0 -0
  293. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/lite.py +0 -0
  294. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/main.py +0 -0
  295. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/manifests.py +0 -0
  296. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/scripts.py +0 -0
  297. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/unicode.py +0 -0
  298. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/__init__.py +0 -0
  299. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/asts/__init__.py +0 -0
  300. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/asts/parents.py +0 -0
  301. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/asts/toplevel.py +0 -0
  302. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/asts/visitors.py +0 -0
  303. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/attrdocs.py +0 -0
  304. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/bracepy.py +0 -0
  305. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/classdot.py +0 -0
  306. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/LICENSE +0 -0
  307. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/__init__.py +0 -0
  308. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/attrdoc.py +0 -0
  309. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/common.py +0 -0
  310. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/epydoc.py +0 -0
  311. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/google.py +0 -0
  312. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/numpydoc.py +0 -0
  313. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/parser.py +0 -0
  314. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/rest.py +0 -0
  315. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/findimports.py +0 -0
  316. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/reprs.py +0 -0
  317. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/scripts/__init__.py +0 -0
  318. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/scripts/bumpversion.py +0 -0
  319. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/scripts/execstat.py +0 -0
  320. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/scripts/importtrace.py +0 -0
  321. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/srcheaders.py +0 -0
  322. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tokens/__init__.py +0 -0
  323. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tokens/all.py +0 -0
  324. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tokens/tokenizert.py +0 -0
  325. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tokens/utils.py +0 -0
  326. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tools/__init__.py +0 -0
  327. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tools/importscan.py +0 -0
  328. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tools/mkrelimp.py +0 -0
  329. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tools/pipdepup.py +0 -0
  330. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/__init__.py +0 -0
  331. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/__main__.py +0 -0
  332. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/cli.py +0 -0
  333. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/configs.py +0 -0
  334. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/inject.py +0 -0
  335. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/pkg.py +0 -0
  336. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/reqs.py +0 -0
  337. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/resources/__init__.py +0 -0
  338. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/tools/__init__.py +0 -0
  339. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/tools/aboutdeps.py +0 -0
  340. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/tools/buildrs.py +0 -0
  341. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/tools/pyversions.py +0 -0
  342. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/venvs.py +0 -0
  343. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/versions.py +0 -0
  344. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/rs/__init__.py +0 -0
  345. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/__init__.py +0 -0
  346. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/lib/__init__.py +0 -0
  347. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/lib/inject.py +0 -0
  348. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/lib/io/__init__.py +0 -0
  349. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/lib/marshal.py +0 -0
  350. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/slowcat.py +0 -0
  351. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/tmpexec.py +0 -0
  352. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tagstrings.py +0 -0
  353. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/__init__.py +0 -0
  354. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/cloc.py +0 -0
  355. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/diff.py +0 -0
  356. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/doc.py +0 -0
  357. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/docker.py +0 -0
  358. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/git/__init__.py +0 -0
  359. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/git/__main__.py +0 -0
  360. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/git/cli.py +0 -0
  361. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/git/cloning.py +0 -0
  362. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/git/consts.py +0 -0
  363. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/git/messages.py +0 -0
  364. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/__init__.py +0 -0
  365. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/__main__.py +0 -0
  366. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/cli.py +0 -0
  367. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/formats.py +0 -0
  368. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/io.py +0 -0
  369. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/processing.py +0 -0
  370. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/rendering.py +0 -0
  371. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/jsonview/__init__.py +0 -0
  372. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/jsonview/__main__.py +0 -0
  373. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/jsonview/cli.py +0 -0
  374. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/jsonview/resources/__init__.py +0 -0
  375. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/jsonview/resources/jsonview.css +0 -0
  376. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/jsonview/resources/jsonview.html.j2 +0 -0
  377. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/jsonview/resources/jsonview.js +0 -0
  378. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/linehisto.py +0 -0
  379. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/mkenv.py +0 -0
  380. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/notebook.py +0 -0
  381. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/pawk/README.md +0 -0
  382. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/pawk/__init__.py +0 -0
  383. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/pawk/__main__.py +0 -0
  384. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/pawk/pawk.py +0 -0
  385. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/pip.py +0 -0
  386. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/prof.py +0 -0
  387. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/qr.py +0 -0
  388. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/shadow.py +0 -0
  389. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/shell.py +0 -0
  390. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/sqlrepl.py +0 -0
  391. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/__init__.py +0 -0
  392. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/__init__.py +0 -0
  393. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/edit/__init__.py +0 -0
  394. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/edit/main.py +0 -0
  395. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/irc/__init__.py +0 -0
  396. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/irc/__main__.py +0 -0
  397. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/irc/app.py +0 -0
  398. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/irc/client.py +0 -0
  399. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/irc/commands.py +0 -0
  400. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/irc/main.py +0 -0
  401. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/markdown/__init__.py +0 -0
  402. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/markdown/__main__.py +0 -0
  403. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/markdown/cli.py +0 -0
  404. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/rich/__init__.py +0 -0
  405. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/rich/console2.py +0 -0
  406. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/rich/markdown2.py +0 -0
  407. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/__init__.py +0 -0
  408. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/app2.py +0 -0
  409. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/autocomplete/LICENSE +0 -0
  410. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/autocomplete/__init__.py +0 -0
  411. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/autocomplete/matching.py +0 -0
  412. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/autocomplete/paths.py +0 -0
  413. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/autocomplete/widget.py +0 -0
  414. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/binding2.py +0 -0
  415. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/clipboard.py +0 -0
  416. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/debug/__init__.py +0 -0
  417. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/debug/dominfo.py +0 -0
  418. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/debug/screen.py +0 -0
  419. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/devtools.py +0 -0
  420. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/drivers2.py +0 -0
  421. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/logging2.py +0 -0
  422. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/screen2.py +0 -0
  423. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/types.py +0 -0
  424. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev.egg-info/SOURCES.txt +0 -0
  425. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev.egg-info/dependency_links.txt +0 -0
  426. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev.egg-info/entry_points.txt +0 -0
  427. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev.egg-info/top_level.txt +0 -0
  428. {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev524
3
+ Version: 0.0.0.dev525
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
- Requires-Dist: omlish==0.0.0.dev524
17
+ Requires-Dist: omlish==0.0.0.dev525
18
18
  Provides-Extra: all
19
19
  Requires-Dist: black~=26.1; extra == "all"
20
20
  Requires-Dist: pycparser~=3.0; extra == "all"
@@ -27,7 +27,7 @@ Requires-Dist: mypy~=1.19; extra == "all"
27
27
  Requires-Dist: gprof2dot~=2025.4; extra == "all"
28
28
  Requires-Dist: segno~=1.6; extra == "all"
29
29
  Requires-Dist: rich~=14.3; extra == "all"
30
- Requires-Dist: textual~=7.5; extra == "all"
30
+ Requires-Dist: textual~=8.0; extra == "all"
31
31
  Requires-Dist: textual-dev~=1.8; extra == "all"
32
32
  Requires-Dist: textual-speedups~=0.2; extra == "all"
33
33
  Provides-Extra: black
@@ -48,7 +48,7 @@ Provides-Extra: qr
48
48
  Requires-Dist: segno~=1.6; extra == "qr"
49
49
  Provides-Extra: tui
50
50
  Requires-Dist: rich~=14.3; extra == "tui"
51
- Requires-Dist: textual~=7.5; extra == "tui"
51
+ Requires-Dist: textual~=8.0; extra == "tui"
52
52
  Requires-Dist: textual-dev~=1.8; extra == "tui"
53
53
  Requires-Dist: textual-speedups~=0.2; extra == "tui"
54
54
  Dynamic: license-file
@@ -44,7 +44,7 @@ class Project(ProjectBase):
44
44
 
45
45
  'tui': [
46
46
  'rich ~= 14.3',
47
- 'textual ~= 7.5', # [syntax]
47
+ 'textual ~= 8.0', # [syntax]
48
48
  'textual-dev ~= 1.8',
49
49
  'textual-speedups ~= 0.2',
50
50
  ],
@@ -38,7 +38,8 @@ JDKS: ta.Sequence[str] = [
38
38
  'zulu25-ca-jdk',
39
39
  ]
40
40
 
41
- GO_VERSION = '1.25.6'
41
+ GO_VERSION = '1.26.0'
42
+
42
43
  ZIG_VERSION = '0.15.2'
43
44
 
44
45
  NVM_VERSIONS: ta.Sequence[str] = [
@@ -7,7 +7,11 @@ else
7
7
  TTY_ENV_ARGS=""
8
8
  fi
9
9
 
10
- SERVICE_NAME="@PROJECT-dev"
10
+ SCRIPT_PATH=$(cd -- "$(dirname -- "$0")" && pwd)
11
+ SCRIPT_PATH="$SCRIPT_PATH/$(basename -- "$0")"
12
+ SCRIPT_DIR=$(dirname "$SCRIPT_PATH")
13
+
14
+ SERVICE_NAME="$(basename "$SCRIPT_DIR")-dev"
11
15
  if ! [ $# -eq 0 ] ; then
12
16
  if [ "$1" = "--amd64" ] ; then
13
17
  SERVICE_NAME="$SERVICE_NAME-amd64"
@@ -2,7 +2,7 @@
2
2
  set -e
3
3
 
4
4
  if [ -z "${VENV}" ] ; then
5
- if [ $(uname) = "Linux" ] && grep -E '^overlay / .*/(docker|desktop-containerd)/' /proc/mounts > /dev/null ; then
5
+ if [ $(uname) = "Linux" ] && grep -E '^overlay / .*/(docker|desktop-containerd|var/lib/containerd)/' /proc/mounts > /dev/null ; then
6
6
  VENV=docker
7
7
  else
8
8
  VENV=default
@@ -107,6 +107,7 @@ def __omlish_amalg__(): # noqa
107
107
  dict(path='../../omlish/lite/objects.py', sha1='9566bbf3530fd71fcc56321485216b592fae21e9'),
108
108
  dict(path='../../omlish/lite/reflect.py', sha1='c4fec44bf144e9d93293c996af06f6c65fc5e63d'),
109
109
  dict(path='../../omlish/lite/strings.py', sha1='89831ecbc34ad80e118a865eceb390ed399dc4d6'),
110
+ dict(path='../../omlish/lite/typing.py', sha1='9d6caabc7b31534109e3f2e249d21f8610c9c079'),
110
111
  dict(path='../../omlish/logs/levels.py', sha1='91405563d082a5eba874da82aac89d83ce7b6152'),
111
112
  dict(path='../../omlish/logs/std/filters.py', sha1='f36aab646d84d31e295b33aaaaa6f8b67ff38b3d'),
112
113
  dict(path='../../omlish/logs/std/proxy.py', sha1='3e7301a2aa351127f9c85f61b2f85dcc3f15aafb'),
@@ -124,11 +125,11 @@ def __omlish_amalg__(): # noqa
124
125
  dict(path='../oci/pack/unpacking.py', sha1='f43dee9a2eee79cbbb90f0721ed234a2bc35daa7'),
125
126
  dict(path='../../omlish/argparse/cli.py', sha1='f4dc3cd353d14386b5da0306768700e396afd2b3'),
126
127
  dict(path='../../omlish/http/coro/io.py', sha1='6ccbbf6a1a6a702ce0f1dc24b4057e8264ef4641'),
127
- dict(path='../../omlish/http/parsing.py', sha1='9beb75dc1f3b5b9c58b5496621db93150d25d428'),
128
+ dict(path='../../omlish/http/parsing.py', sha1='58579597eaf70a8ee409c2814481b3002a6acea1'),
128
129
  dict(path='../../omlish/lite/marshal.py', sha1='96348f5f2a26dc27d842d33cc3927e9da163436b'),
129
130
  dict(path='../../omlish/lite/maybes.py', sha1='04d2fcbea17028a5e6b8e7a7fb742375495ed233'),
130
131
  dict(path='../../omlish/lite/runtime.py', sha1='2e752a27ae2bf89b1bb79b4a2da522a3ec360c70'),
131
- dict(path='../../omlish/lite/timeouts.py', sha1='a0f673033a6943f242e35848d78a41892b9c62a1'),
132
+ dict(path='../../omlish/lite/timeouts.py', sha1='2f19c808e582877f999d7ea7dde0acd6382266a2'),
132
133
  dict(path='../../omlish/logs/infos.py', sha1='4dd104bd468a8c438601dd0bbda619b47d2f1620'),
133
134
  dict(path='../../omlish/logs/metrics/base.py', sha1='95120732c745ceec5333f81553761ab6ff4bb3fb'),
134
135
  dict(path='../../omlish/logs/protocols.py', sha1='05ca4d1d7feb50c4e3b9f22ee371aa7bf4b3dbd1'),
@@ -157,7 +158,7 @@ def __omlish_amalg__(): # noqa
157
158
  dict(path='../oci/pack/packing.py', sha1='7585c3dea6b8a62b6ca63fe78968497db915ea57'),
158
159
  dict(path='../../omlish/http/coro/server/server.py', sha1='7c98ff3073835079b4170c1235332f1c620cbf52'),
159
160
  dict(path='../../omlish/logs/base.py', sha1='eaa2ce213235815e2f86c50df6c41cfe26a43ba2'),
160
- dict(path='../../omlish/logs/std/records.py', sha1='8bbf6ef9eccb3a012c6ca416ddf3969450fd8fc9'),
161
+ dict(path='../../omlish/logs/std/records.py', sha1='67e552537d9268d4df6939b8a92be885fda35238'),
161
162
  dict(path='../../omlish/secrets/tempssl.py', sha1='360d4cd98483357bcf013e156dafd92fd37ed220'),
162
163
  dict(path='../../omlish/sockets/server/server.py', sha1='89204da9ea77577418ff7d2910aea0d593c765f3'),
163
164
  dict(path='../../omlish/sockets/server/ssl.py', sha1='790dfd208f4d267c826d491d4eb5deeda5ebdddc'),
@@ -225,6 +226,11 @@ CheckArgsRenderer = ta.Callable[..., ta.Optional[str]] # ta.TypeAlias
225
226
  ExitStackedT = ta.TypeVar('ExitStackedT', bound='ExitStacked')
226
227
  AsyncExitStackedT = ta.TypeVar('AsyncExitStackedT', bound='AsyncExitStacked')
227
228
 
229
+ # ../../omlish/lite/typing.py
230
+ A0 = ta.TypeVar('A0')
231
+ A1 = ta.TypeVar('A1')
232
+ A2 = ta.TypeVar('A2')
233
+
228
234
  # ../../omlish/logs/levels.py
229
235
  LogLevel = int # ta.TypeAlias
230
236
 
@@ -242,7 +248,7 @@ ArgparseCmdFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
242
248
  U = ta.TypeVar('U')
243
249
 
244
250
  # ../../omlish/lite/timeouts.py
245
- TimeoutLike = ta.Union['Timeout', ta.Type['Timeout.DEFAULT'], ta.Iterable['TimeoutLike'], float, None] # ta.TypeAlias
251
+ TimeoutLike = ta.Union['Timeout', ta.Type['Timeout.DEFAULT'], ta.Iterable['TimeoutLike'], 'CanFloat', float, int, bool, None] # ta.TypeAlias # noqa
246
252
 
247
253
  # ../../omlish/logs/infos.py
248
254
  LoggingMsgFn = ta.Callable[[], ta.Union[str, tuple]] # ta.TypeAlias
@@ -2494,6 +2500,118 @@ def format_num_bytes(num_bytes: int) -> str:
2494
2500
  return f'{num_bytes / 1024 ** (len(FORMAT_NUM_BYTES_SUFFIXES) - 1):.2f}{FORMAT_NUM_BYTES_SUFFIXES[-1]}'
2495
2501
 
2496
2502
 
2503
+ ########################################
2504
+ # ../../../omlish/lite/typing.py
2505
+
2506
+
2507
+ ##
2508
+ # A workaround for typing deficiencies (like `Argument 2 to NewType(...) must be subclassable`).
2509
+ #
2510
+ # Note that this problem doesn't happen at runtime - it happens in mypy:
2511
+ #
2512
+ # mypy <(echo "import typing as ta; MyCallback = ta.NewType('MyCallback', ta.Callable[[], None])")
2513
+ # /dev/fd/11:1:22: error: Argument 2 to NewType(...) must be subclassable (got "Callable[[], None]") [valid-newtype]
2514
+ #
2515
+
2516
+
2517
+ @dc.dataclass(frozen=True)
2518
+ class AnyFunc(ta.Generic[T]):
2519
+ fn: ta.Callable[..., T]
2520
+
2521
+ def __call__(self, *args: ta.Any, **kwargs: ta.Any) -> T:
2522
+ return self.fn(*args, **kwargs)
2523
+
2524
+
2525
+ @dc.dataclass(frozen=True)
2526
+ class Func0(ta.Generic[T]):
2527
+ fn: ta.Callable[[], T]
2528
+
2529
+ def __call__(self) -> T:
2530
+ return self.fn()
2531
+
2532
+
2533
+ @dc.dataclass(frozen=True)
2534
+ class Func1(ta.Generic[A0, T]):
2535
+ fn: ta.Callable[[A0], T]
2536
+
2537
+ def __call__(self, a0: A0) -> T:
2538
+ return self.fn(a0)
2539
+
2540
+
2541
+ @dc.dataclass(frozen=True)
2542
+ class Func2(ta.Generic[A0, A1, T]):
2543
+ fn: ta.Callable[[A0, A1], T]
2544
+
2545
+ def __call__(self, a0: A0, a1: A1) -> T:
2546
+ return self.fn(a0, a1)
2547
+
2548
+
2549
+ @dc.dataclass(frozen=True)
2550
+ class Func3(ta.Generic[A0, A1, A2, T]):
2551
+ fn: ta.Callable[[A0, A1, A2], T]
2552
+
2553
+ def __call__(self, a0: A0, a1: A1, a2: A2) -> T:
2554
+ return self.fn(a0, a1, a2)
2555
+
2556
+
2557
+ ##
2558
+
2559
+
2560
+ @dc.dataclass(frozen=True)
2561
+ class CachedFunc0(ta.Generic[T]):
2562
+ fn: ta.Callable[[], T]
2563
+
2564
+ def __call__(self) -> T:
2565
+ try:
2566
+ return object.__getattribute__(self, '_value')
2567
+ except AttributeError:
2568
+ pass
2569
+
2570
+ value = self.fn()
2571
+ object.__setattr__(self, '_value', value)
2572
+ return value
2573
+
2574
+
2575
+ @dc.dataclass(frozen=True)
2576
+ class AsyncCachedFunc0(ta.Generic[T]):
2577
+ fn: ta.Callable[[], ta.Awaitable[T]]
2578
+
2579
+ async def __call__(self) -> T:
2580
+ try:
2581
+ return object.__getattribute__(self, '_value')
2582
+ except AttributeError:
2583
+ pass
2584
+
2585
+ value = await self.fn()
2586
+ object.__setattr__(self, '_value', value)
2587
+ return value
2588
+
2589
+
2590
+ ##
2591
+
2592
+
2593
+ _TYPING_ANNOTATIONS_ATTR = '__annotate__' if sys.version_info >= (3, 14) else '__annotations__'
2594
+
2595
+
2596
+ def typing_annotations_attr() -> str:
2597
+ return _TYPING_ANNOTATIONS_ATTR
2598
+
2599
+
2600
+ ##
2601
+
2602
+
2603
+ @ta.runtime_checkable
2604
+ class CanInt(ta.Protocol):
2605
+ def __int__(self) -> int:
2606
+ ...
2607
+
2608
+
2609
+ @ta.runtime_checkable
2610
+ class CanFloat(ta.Protocol):
2611
+ def __float__(self) -> float:
2612
+ ...
2613
+
2614
+
2497
2615
  ########################################
2498
2616
  # ../../../omlish/logs/levels.py
2499
2617
 
@@ -4186,12 +4304,16 @@ class ParsedHttpHeaders:
4186
4304
  self._order.append(name)
4187
4305
  self._entries[name].append(value)
4188
4306
 
4307
+ @property
4308
+ def entries(self) -> ta.Mapping[str, ta.Sequence[str]]:
4309
+ return self._entries
4310
+
4189
4311
  def __contains__(self, name: ta.Any) -> bool:
4190
4312
  if not isinstance(name, str):
4191
4313
  return False
4192
4314
  return name.lower() in self._entries
4193
4315
 
4194
- # Headers where duplicate values are comma-combined per RFC 7230 §3.2.2. # Set-Cookie is the notable exception.
4316
+ # Headers where duplicate values are comma-combined per RFC 7230 §3.2.2. Set-Cookie is the notable exception.
4195
4317
  _NO_COMBINE_HEADERS: ta.ClassVar[ta.FrozenSet[str]] = frozenset({
4196
4318
  'set-cookie',
4197
4319
  })
@@ -6940,27 +7062,38 @@ class Timeout(Abstract):
6940
7062
  obj: TimeoutLike,
6941
7063
  default: ta.Union[TimeoutLike, ta.Type[_NOT_SPECIFIED]] = _NOT_SPECIFIED,
6942
7064
  ) -> 'Timeout':
7065
+ if isinstance(obj, bool):
7066
+ if obj:
7067
+ obj = Timeout.DEFAULT
7068
+ else:
7069
+ obj = None
7070
+
6943
7071
  if obj is None:
6944
7072
  return InfiniteTimeout()
6945
7073
 
6946
- elif isinstance(obj, Timeout):
7074
+ if isinstance(obj, Timeout):
6947
7075
  return obj
6948
7076
 
6949
- elif isinstance(obj, (float, int)):
7077
+ if isinstance(obj, (float, int)):
6950
7078
  return DeadlineTimeout(cls._now() + obj)
6951
7079
 
6952
- elif isinstance(obj, ta.Iterable):
7080
+ # if isinstance(obj, CanInt):
7081
+ # return DeadlineTimeout(cls._now() + int(obj))
7082
+
7083
+ if isinstance(obj, CanFloat):
7084
+ return DeadlineTimeout(cls._now() + float(obj))
7085
+
7086
+ if isinstance(obj, ta.Iterable):
6953
7087
  return CompositeTimeout(*[Timeout.of(c) for c in obj])
6954
7088
 
6955
- elif obj is Timeout.DEFAULT:
7089
+ if obj is Timeout.DEFAULT:
6956
7090
  if default is Timeout._NOT_SPECIFIED or default is Timeout.DEFAULT:
6957
7091
  raise RuntimeError('Must specify a default timeout')
6958
7092
 
6959
7093
  else:
6960
7094
  return Timeout.of(default) # type: ignore[arg-type]
6961
7095
 
6962
- else:
6963
- raise TypeError(obj)
7096
+ raise TypeError(obj)
6964
7097
 
6965
7098
  @classmethod
6966
7099
  def of_deadline(cls, deadline: float) -> 'DeadlineTimeout':
@@ -6982,6 +7115,9 @@ class DeadlineTimeout(Timeout):
6982
7115
  self.deadline = deadline
6983
7116
  self.exc = exc
6984
7117
 
7118
+ def __repr__(self) -> str:
7119
+ return f'{type(self).__name__}({self.deadline!r}, {self.exc!r})'
7120
+
6985
7121
  @property
6986
7122
  def can_expire(self) -> bool:
6987
7123
  return True
@@ -7002,6 +7138,9 @@ class DeadlineTimeout(Timeout):
7002
7138
 
7003
7139
 
7004
7140
  class InfiniteTimeout(Timeout):
7141
+ def __repr__(self) -> str:
7142
+ return f'{type(self).__name__}()'
7143
+
7005
7144
  @property
7006
7145
  def can_expire(self) -> bool:
7007
7146
  return False
@@ -7025,6 +7164,9 @@ class CompositeTimeout(Timeout):
7025
7164
 
7026
7165
  self.children = children
7027
7166
 
7167
+ def __repr__(self) -> str:
7168
+ return f'{type(self).__name__}({self.children!r})'
7169
+
7028
7170
  @property
7029
7171
  def can_expire(self) -> bool:
7030
7172
  return any(c.can_expire for c in self.children)
@@ -7055,6 +7197,9 @@ class PredicateTimeout(Timeout):
7055
7197
  self.expired_fn = expired_fn
7056
7198
  self.exc = exc
7057
7199
 
7200
+ def __repr__(self) -> str:
7201
+ return f'{type(self).__name__}({self.expired_fn!r}, {self.exc!r})'
7202
+
7058
7203
  @property
7059
7204
  def can_expire(self) -> bool:
7060
7205
  return True
@@ -12432,7 +12577,7 @@ class LoggingContextInfoRecordAdapters:
12432
12577
  pathname=(str, _UNKNOWN_PATH_NAME),
12433
12578
 
12434
12579
  # Source line number where the logging call was issued (if available). Unmodified by ctor. May default to 0
12435
- # y Logger.findCaller / Logger._log.
12580
+ # by Logger.findCaller / Logger._log.
12436
12581
  lineno=(int, 0),
12437
12582
 
12438
12583
  # Name of function containing the logging call. Set by ctor to `func` arg, unmodified. May default to
@@ -60,6 +60,7 @@ def __omlish_amalg__(): # noqa
60
60
  dict(path='../../omlish/lite/json.py', sha1='57eeddc4d23a17931e00284ffa5cb6e3ce089486'),
61
61
  dict(path='../../omlish/lite/reflect.py', sha1='c4fec44bf144e9d93293c996af06f6c65fc5e63d'),
62
62
  dict(path='../../omlish/lite/strings.py', sha1='89831ecbc34ad80e118a865eceb390ed399dc4d6'),
63
+ dict(path='../../omlish/lite/typing.py', sha1='9d6caabc7b31534109e3f2e249d21f8610c9c079'),
63
64
  dict(path='../../omlish/logs/levels.py', sha1='91405563d082a5eba874da82aac89d83ce7b6152'),
64
65
  dict(path='../../omlish/logs/std/filters.py', sha1='f36aab646d84d31e295b33aaaaa6f8b67ff38b3d'),
65
66
  dict(path='../../omlish/logs/std/proxy.py', sha1='3e7301a2aa351127f9c85f61b2f85dcc3f15aafb'),
@@ -67,7 +68,7 @@ def __omlish_amalg__(): # noqa
67
68
  dict(path='../../omlish/argparse/cli.py', sha1='f4dc3cd353d14386b5da0306768700e396afd2b3'),
68
69
  dict(path='../../omlish/lite/maybes.py', sha1='04d2fcbea17028a5e6b8e7a7fb742375495ed233'),
69
70
  dict(path='../../omlish/lite/runtime.py', sha1='2e752a27ae2bf89b1bb79b4a2da522a3ec360c70'),
70
- dict(path='../../omlish/lite/timeouts.py', sha1='a0f673033a6943f242e35848d78a41892b9c62a1'),
71
+ dict(path='../../omlish/lite/timeouts.py', sha1='2f19c808e582877f999d7ea7dde0acd6382266a2'),
71
72
  dict(path='../../omlish/logs/protocols.py', sha1='05ca4d1d7feb50c4e3b9f22ee371aa7bf4b3dbd1'),
72
73
  dict(path='../../omlish/logs/std/json.py', sha1='2a75553131e4d5331bb0cedde42aa183f403fc3b'),
73
74
  dict(path='types.py', sha1='caf068a6e81fb6e221d777b341ac5777d92b8091'),
@@ -123,6 +124,11 @@ CheckOnRaiseFn = ta.Callable[[Exception], None] # ta.TypeAlias
123
124
  CheckExceptionFactory = ta.Callable[..., Exception] # ta.TypeAlias
124
125
  CheckArgsRenderer = ta.Callable[..., ta.Optional[str]] # ta.TypeAlias
125
126
 
127
+ # ../../omlish/lite/typing.py
128
+ A0 = ta.TypeVar('A0')
129
+ A1 = ta.TypeVar('A1')
130
+ A2 = ta.TypeVar('A2')
131
+
126
132
  # ../../omlish/logs/levels.py
127
133
  LogLevel = int # ta.TypeAlias
128
134
 
@@ -138,7 +144,7 @@ ArgparseCmdFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
138
144
  U = ta.TypeVar('U')
139
145
 
140
146
  # ../../omlish/lite/timeouts.py
141
- TimeoutLike = ta.Union['Timeout', ta.Type['Timeout.DEFAULT'], ta.Iterable['TimeoutLike'], float, None] # ta.TypeAlias
147
+ TimeoutLike = ta.Union['Timeout', ta.Type['Timeout.DEFAULT'], ta.Iterable['TimeoutLike'], 'CanFloat', float, int, bool, None] # ta.TypeAlias # noqa
142
148
 
143
149
  # ../../omlish/asyncs/asyncio/timeouts.py
144
150
  AwaitableT = ta.TypeVar('AwaitableT', bound=ta.Awaitable)
@@ -1600,6 +1606,118 @@ def format_num_bytes(num_bytes: int) -> str:
1600
1606
  return f'{num_bytes / 1024 ** (len(FORMAT_NUM_BYTES_SUFFIXES) - 1):.2f}{FORMAT_NUM_BYTES_SUFFIXES[-1]}'
1601
1607
 
1602
1608
 
1609
+ ########################################
1610
+ # ../../../omlish/lite/typing.py
1611
+
1612
+
1613
+ ##
1614
+ # A workaround for typing deficiencies (like `Argument 2 to NewType(...) must be subclassable`).
1615
+ #
1616
+ # Note that this problem doesn't happen at runtime - it happens in mypy:
1617
+ #
1618
+ # mypy <(echo "import typing as ta; MyCallback = ta.NewType('MyCallback', ta.Callable[[], None])")
1619
+ # /dev/fd/11:1:22: error: Argument 2 to NewType(...) must be subclassable (got "Callable[[], None]") [valid-newtype]
1620
+ #
1621
+
1622
+
1623
+ @dc.dataclass(frozen=True)
1624
+ class AnyFunc(ta.Generic[T]):
1625
+ fn: ta.Callable[..., T]
1626
+
1627
+ def __call__(self, *args: ta.Any, **kwargs: ta.Any) -> T:
1628
+ return self.fn(*args, **kwargs)
1629
+
1630
+
1631
+ @dc.dataclass(frozen=True)
1632
+ class Func0(ta.Generic[T]):
1633
+ fn: ta.Callable[[], T]
1634
+
1635
+ def __call__(self) -> T:
1636
+ return self.fn()
1637
+
1638
+
1639
+ @dc.dataclass(frozen=True)
1640
+ class Func1(ta.Generic[A0, T]):
1641
+ fn: ta.Callable[[A0], T]
1642
+
1643
+ def __call__(self, a0: A0) -> T:
1644
+ return self.fn(a0)
1645
+
1646
+
1647
+ @dc.dataclass(frozen=True)
1648
+ class Func2(ta.Generic[A0, A1, T]):
1649
+ fn: ta.Callable[[A0, A1], T]
1650
+
1651
+ def __call__(self, a0: A0, a1: A1) -> T:
1652
+ return self.fn(a0, a1)
1653
+
1654
+
1655
+ @dc.dataclass(frozen=True)
1656
+ class Func3(ta.Generic[A0, A1, A2, T]):
1657
+ fn: ta.Callable[[A0, A1, A2], T]
1658
+
1659
+ def __call__(self, a0: A0, a1: A1, a2: A2) -> T:
1660
+ return self.fn(a0, a1, a2)
1661
+
1662
+
1663
+ ##
1664
+
1665
+
1666
+ @dc.dataclass(frozen=True)
1667
+ class CachedFunc0(ta.Generic[T]):
1668
+ fn: ta.Callable[[], T]
1669
+
1670
+ def __call__(self) -> T:
1671
+ try:
1672
+ return object.__getattribute__(self, '_value')
1673
+ except AttributeError:
1674
+ pass
1675
+
1676
+ value = self.fn()
1677
+ object.__setattr__(self, '_value', value)
1678
+ return value
1679
+
1680
+
1681
+ @dc.dataclass(frozen=True)
1682
+ class AsyncCachedFunc0(ta.Generic[T]):
1683
+ fn: ta.Callable[[], ta.Awaitable[T]]
1684
+
1685
+ async def __call__(self) -> T:
1686
+ try:
1687
+ return object.__getattribute__(self, '_value')
1688
+ except AttributeError:
1689
+ pass
1690
+
1691
+ value = await self.fn()
1692
+ object.__setattr__(self, '_value', value)
1693
+ return value
1694
+
1695
+
1696
+ ##
1697
+
1698
+
1699
+ _TYPING_ANNOTATIONS_ATTR = '__annotate__' if sys.version_info >= (3, 14) else '__annotations__'
1700
+
1701
+
1702
+ def typing_annotations_attr() -> str:
1703
+ return _TYPING_ANNOTATIONS_ATTR
1704
+
1705
+
1706
+ ##
1707
+
1708
+
1709
+ @ta.runtime_checkable
1710
+ class CanInt(ta.Protocol):
1711
+ def __int__(self) -> int:
1712
+ ...
1713
+
1714
+
1715
+ @ta.runtime_checkable
1716
+ class CanFloat(ta.Protocol):
1717
+ def __float__(self) -> float:
1718
+ ...
1719
+
1720
+
1603
1721
  ########################################
1604
1722
  # ../../../omlish/logs/levels.py
1605
1723
 
@@ -2956,27 +3074,38 @@ class Timeout(Abstract):
2956
3074
  obj: TimeoutLike,
2957
3075
  default: ta.Union[TimeoutLike, ta.Type[_NOT_SPECIFIED]] = _NOT_SPECIFIED,
2958
3076
  ) -> 'Timeout':
3077
+ if isinstance(obj, bool):
3078
+ if obj:
3079
+ obj = Timeout.DEFAULT
3080
+ else:
3081
+ obj = None
3082
+
2959
3083
  if obj is None:
2960
3084
  return InfiniteTimeout()
2961
3085
 
2962
- elif isinstance(obj, Timeout):
3086
+ if isinstance(obj, Timeout):
2963
3087
  return obj
2964
3088
 
2965
- elif isinstance(obj, (float, int)):
3089
+ if isinstance(obj, (float, int)):
2966
3090
  return DeadlineTimeout(cls._now() + obj)
2967
3091
 
2968
- elif isinstance(obj, ta.Iterable):
3092
+ # if isinstance(obj, CanInt):
3093
+ # return DeadlineTimeout(cls._now() + int(obj))
3094
+
3095
+ if isinstance(obj, CanFloat):
3096
+ return DeadlineTimeout(cls._now() + float(obj))
3097
+
3098
+ if isinstance(obj, ta.Iterable):
2969
3099
  return CompositeTimeout(*[Timeout.of(c) for c in obj])
2970
3100
 
2971
- elif obj is Timeout.DEFAULT:
3101
+ if obj is Timeout.DEFAULT:
2972
3102
  if default is Timeout._NOT_SPECIFIED or default is Timeout.DEFAULT:
2973
3103
  raise RuntimeError('Must specify a default timeout')
2974
3104
 
2975
3105
  else:
2976
3106
  return Timeout.of(default) # type: ignore[arg-type]
2977
3107
 
2978
- else:
2979
- raise TypeError(obj)
3108
+ raise TypeError(obj)
2980
3109
 
2981
3110
  @classmethod
2982
3111
  def of_deadline(cls, deadline: float) -> 'DeadlineTimeout':
@@ -2998,6 +3127,9 @@ class DeadlineTimeout(Timeout):
2998
3127
  self.deadline = deadline
2999
3128
  self.exc = exc
3000
3129
 
3130
+ def __repr__(self) -> str:
3131
+ return f'{type(self).__name__}({self.deadline!r}, {self.exc!r})'
3132
+
3001
3133
  @property
3002
3134
  def can_expire(self) -> bool:
3003
3135
  return True
@@ -3018,6 +3150,9 @@ class DeadlineTimeout(Timeout):
3018
3150
 
3019
3151
 
3020
3152
  class InfiniteTimeout(Timeout):
3153
+ def __repr__(self) -> str:
3154
+ return f'{type(self).__name__}()'
3155
+
3021
3156
  @property
3022
3157
  def can_expire(self) -> bool:
3023
3158
  return False
@@ -3041,6 +3176,9 @@ class CompositeTimeout(Timeout):
3041
3176
 
3042
3177
  self.children = children
3043
3178
 
3179
+ def __repr__(self) -> str:
3180
+ return f'{type(self).__name__}({self.children!r})'
3181
+
3044
3182
  @property
3045
3183
  def can_expire(self) -> bool:
3046
3184
  return any(c.can_expire for c in self.children)
@@ -3071,6 +3209,9 @@ class PredicateTimeout(Timeout):
3071
3209
  self.expired_fn = expired_fn
3072
3210
  self.exc = exc
3073
3211
 
3212
+ def __repr__(self) -> str:
3213
+ return f'{type(self).__name__}({self.expired_fn!r}, {self.exc!r})'
3214
+
3074
3215
  @property
3075
3216
  def can_expire(self) -> bool:
3076
3217
  return True