omdev 0.0.0.dev529__tar.gz → 0.0.0.dev531__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 (442) hide show
  1. {omdev-0.0.0.dev529/omdev.egg-info → omdev-0.0.0.dev531}/PKG-INFO +2 -2
  2. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/gen.py +2 -0
  3. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/fragments/jdk.sh +1 -1
  4. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/fragments/nvm.sh +1 -1
  5. omdev-0.0.0.dev531/omdev/dockerdev/resources/fragments/uv.sh +3 -0
  6. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/scripts/ci.py +19 -2
  7. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/scripts/lib/io/streams.py +45 -26
  8. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/apps/irc/app.py +2 -1
  9. omdev-0.0.0.dev531/omdev/tui/apps/irc/main.py +84 -0
  10. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531/omdev.egg-info}/PKG-INFO +2 -2
  11. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev.egg-info/SOURCES.txt +1 -0
  12. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev.egg-info/requires.txt +1 -1
  13. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/pyproject.toml +2 -2
  14. omdev-0.0.0.dev529/omdev/tui/apps/irc/main.py +0 -26
  15. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/LICENSE +0 -0
  16. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/MANIFEST.in +0 -0
  17. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/README.md +0 -0
  18. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/.omlish-manifests.json +0 -0
  19. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/README.md +0 -0
  20. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/__about__.py +0 -0
  21. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/__init__.py +0 -0
  22. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/amalg/__init__.py +0 -0
  23. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/amalg/__main__.py +0 -0
  24. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/amalg/cli/__init__.py +0 -0
  25. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/amalg/cli/main.py +0 -0
  26. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/amalg/gen/__init__.py +0 -0
  27. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/amalg/gen/gen.py +0 -0
  28. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/amalg/gen/imports.py +0 -0
  29. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/amalg/gen/manifests.py +0 -0
  30. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/amalg/gen/resources.py +0 -0
  31. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/amalg/gen/srcfiles.py +0 -0
  32. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/amalg/gen/strip.py +0 -0
  33. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/amalg/gen/types.py +0 -0
  34. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/amalg/gen/typing.py +0 -0
  35. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/amalg/info.py +0 -0
  36. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/amalg/sources.py +0 -0
  37. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/__init__.py +0 -0
  38. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/compute/__init__.py +0 -0
  39. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/compute/cache.py +0 -0
  40. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/compute/contexts.py +0 -0
  41. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/compute/currents.py +0 -0
  42. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/compute/fns.py +0 -0
  43. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/compute/resolvers.py +0 -0
  44. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/compute/storage.py +0 -0
  45. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/compute/types.py +0 -0
  46. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/data/__init__.py +0 -0
  47. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/data/actions.py +0 -0
  48. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/data/cache.py +0 -0
  49. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/data/consts.py +0 -0
  50. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/data/defaults.py +0 -0
  51. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/data/manifests.py +0 -0
  52. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cache/data/specs.py +0 -0
  53. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/capi/__init__.py +0 -0
  54. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/capi/darwin/__init__.py +0 -0
  55. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/capi/darwin/aps.py +0 -0
  56. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/capi/darwin/ax.py +0 -0
  57. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/capi/darwin/cf.py +0 -0
  58. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/capi/darwin/cg.py +0 -0
  59. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/capi/linux/__init__.py +0 -0
  60. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/capi/linux/x11.py +0 -0
  61. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cc/__init__.py +0 -0
  62. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cc/__main__.py +0 -0
  63. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cc/cdeps.py +0 -0
  64. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cc/cdeps.toml +0 -0
  65. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cc/cli.py +0 -0
  66. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cc/srclangs.py +0 -0
  67. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/__init__.py +0 -0
  68. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_boilerplate.cc +0 -0
  69. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/LICENSE +0 -0
  70. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/__init__.py +0 -0
  71. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/build_ext.py +0 -0
  72. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  73. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  74. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/compilers/options.py +0 -0
  75. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  76. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/dir_util.py +0 -0
  77. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/errors.py +0 -0
  78. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/extension.py +0 -0
  79. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/file_util.py +0 -0
  80. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/modified.py +0 -0
  81. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/spawn.py +0 -0
  82. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/sysconfig.py +0 -0
  83. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/util.py +0 -0
  84. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/_distutils/version.py +0 -0
  85. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/build.py +0 -0
  86. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/cmake.py +0 -0
  87. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/importhook.py +0 -0
  88. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/magic.py +0 -0
  89. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cexts/scan.py +0 -0
  90. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/__init__.py +0 -0
  91. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/__main__.py +0 -0
  92. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/cache.py +0 -0
  93. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/ci.py +0 -0
  94. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/cli.py +0 -0
  95. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/compose.py +0 -0
  96. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/consts.py +0 -0
  97. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/docker/__init__.py +0 -0
  98. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/docker/buildcaching.py +0 -0
  99. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/docker/cache.py +0 -0
  100. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/docker/cacheserved/__init__.py +0 -0
  101. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/docker/cacheserved/cache.py +0 -0
  102. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/docker/cacheserved/manifests.py +0 -0
  103. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/docker/cmds.py +0 -0
  104. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/docker/dataserver.py +0 -0
  105. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/docker/imagepulling.py +0 -0
  106. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/docker/inject.py +0 -0
  107. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/docker/packing.py +0 -0
  108. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/docker/repositories.py +0 -0
  109. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/docker/utils.py +0 -0
  110. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/github/__init__.py +0 -0
  111. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/github/api/__init__.py +0 -0
  112. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/github/api/clients.py +0 -0
  113. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/github/api/v1/__init__.py +0 -0
  114. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/github/api/v1/api.py +0 -0
  115. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/github/api/v1/client.py +0 -0
  116. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/github/api/v2/__init__.py +0 -0
  117. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/github/api/v2/api.py +0 -0
  118. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/github/api/v2/azure.py +0 -0
  119. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/github/api/v2/client.py +0 -0
  120. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/github/bootstrap.py +0 -0
  121. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/github/cache.py +0 -0
  122. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/github/cli.py +0 -0
  123. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/github/env.py +0 -0
  124. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/github/inject.py +0 -0
  125. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/inject.py +0 -0
  126. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/requirements.py +0 -0
  127. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/shell.py +0 -0
  128. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/ci/utils.py +0 -0
  129. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cli/__init__.py +0 -0
  130. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cli/__main__.py +0 -0
  131. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cli/_pathhack.py +0 -0
  132. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cli/clicli.py +0 -0
  133. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cli/install.py +0 -0
  134. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cli/main.py +0 -0
  135. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cli/managers.py +0 -0
  136. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cli/types.py +0 -0
  137. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/clipboard/__init__.py +0 -0
  138. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/clipboard/capi/__init__.py +0 -0
  139. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/clipboard/capi/darwin_cf.py +0 -0
  140. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/clipboard/capi/linux_x11.py +0 -0
  141. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/clipboard/commands.py +0 -0
  142. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/clipboard/platform.py +0 -0
  143. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/clipboard/types.py +0 -0
  144. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cmake.py +0 -0
  145. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cmdlog/__init__.py +0 -0
  146. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cmdlog/__main__.py +0 -0
  147. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cmdlog/_cmdlog.py +0 -0
  148. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cmdlog/cli.py +0 -0
  149. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/cmdlog/cmdlog.py +0 -0
  150. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dataclasses/__init__.py +0 -0
  151. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dataclasses/__main__.py +0 -0
  152. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dataclasses/_dumping.py +0 -0
  153. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dataclasses/_template.py +0 -0
  154. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dataclasses/cli.py +0 -0
  155. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dataclasses/codegen.py +0 -0
  156. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dataclasses/dumping.py +0 -0
  157. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dataserver/__init__.py +0 -0
  158. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dataserver/handlers.py +0 -0
  159. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dataserver/http.py +0 -0
  160. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dataserver/routes.py +0 -0
  161. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dataserver/server.py +0 -0
  162. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dataserver/targets.py +0 -0
  163. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/__init__.py +0 -0
  164. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/config.toml +0 -0
  165. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/content.py +0 -0
  166. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/helpers.py +0 -0
  167. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/ops.py +0 -0
  168. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/rendering.py +0 -0
  169. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/.pkgdata +0 -0
  170. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/.python-versions.json +0 -0
  171. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/__init__.py +0 -0
  172. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/configs/.gdbinit +0 -0
  173. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/configs/.pkgdata +0 -0
  174. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/configs/.tmux.conf +0 -0
  175. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/configs/.vimrc +0 -0
  176. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/configs/__init__.py +0 -0
  177. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/depsets/__init__.py +0 -0
  178. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/depsets/python.toml +0 -0
  179. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/depsets/system.toml +0 -0
  180. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/depsets/x11.toml +0 -0
  181. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/fragments/__init__.py +0 -0
  182. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/fragments/apt.sh +0 -0
  183. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/fragments/docker.sh +0 -0
  184. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/fragments/firefox.sh +0 -0
  185. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/fragments/go.sh +0 -0
  186. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/fragments/pyenv.sh +0 -0
  187. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/fragments/rust.sh +0 -0
  188. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/fragments/sshd.sh +0 -0
  189. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/fragments/vcpkg.sh +0 -0
  190. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/fragments/zig.sh +0 -0
  191. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/dockerdev/resources/xu +0 -0
  192. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/git/__init__.py +0 -0
  193. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/git/magic.py +0 -0
  194. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/git/revisions.py +0 -0
  195. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/git/shallow.py +0 -0
  196. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/git/status.py +0 -0
  197. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/home/__init__.py +0 -0
  198. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/home/paths.py +0 -0
  199. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/home/secrets.py +0 -0
  200. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/home/shadow.py +0 -0
  201. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/imgur.py +0 -0
  202. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/intellij/__init__.py +0 -0
  203. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/intellij/cli.py +0 -0
  204. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/intellij/ides.py +0 -0
  205. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/intellij/open.py +0 -0
  206. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/__init__.py +0 -0
  207. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/__main__.py +0 -0
  208. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/cli.py +0 -0
  209. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/default.py +0 -0
  210. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/inject.py +0 -0
  211. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/inspect.py +0 -0
  212. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/providers/__init__.py +0 -0
  213. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/providers/base.py +0 -0
  214. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/providers/inject.py +0 -0
  215. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/providers/running.py +0 -0
  216. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/providers/standalone.py +0 -0
  217. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/providers/system.py +0 -0
  218. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/pyenv/__init__.py +0 -0
  219. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/pyenv/inject.py +0 -0
  220. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/pyenv/install.py +0 -0
  221. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/pyenv/provider.py +0 -0
  222. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/pyenv/pyenv.py +0 -0
  223. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/resolvers.py +0 -0
  224. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/types.py +0 -0
  225. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/uv/__init__.py +0 -0
  226. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/uv/inject.py +0 -0
  227. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/uv/provider.py +0 -0
  228. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/uv/uv.py +0 -0
  229. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/interp/venvs.py +0 -0
  230. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/__init__.py +0 -0
  231. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/messages/__init__.py +0 -0
  232. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/messages/base.py +0 -0
  233. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/messages/formats.py +0 -0
  234. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/messages/messages.py +0 -0
  235. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/messages/parsing.py +0 -0
  236. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/numerics/__init__.py +0 -0
  237. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/numerics/formats.py +0 -0
  238. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/numerics/numerics.py +0 -0
  239. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/numerics/types.py +0 -0
  240. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/protocol/LICENSE +0 -0
  241. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/protocol/__init__.py +0 -0
  242. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/protocol/consts.py +0 -0
  243. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/protocol/errors.py +0 -0
  244. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/protocol/message.py +0 -0
  245. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/protocol/nuh.py +0 -0
  246. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/protocol/parsing.py +0 -0
  247. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/protocol/rendering.py +0 -0
  248. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/protocol/tags.py +0 -0
  249. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/irc/protocol/utils.py +0 -0
  250. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/java/__init__.py +0 -0
  251. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/java/__main__.py +0 -0
  252. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/java/cli.py +0 -0
  253. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/java/pomgen.py +0 -0
  254. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/java/xml.py +0 -0
  255. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/magic/__init__.py +0 -0
  256. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/magic/__main__.py +0 -0
  257. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/magic/cli.py +0 -0
  258. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/magic/find.py +0 -0
  259. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/magic/magic.py +0 -0
  260. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/magic/prepare.py +0 -0
  261. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/magic/styles.py +0 -0
  262. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/manifests/__init__.py +0 -0
  263. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/manifests/__main__.py +0 -0
  264. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/manifests/_dumping.py +0 -0
  265. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/manifests/building.py +0 -0
  266. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/manifests/dumping.py +0 -0
  267. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/manifests/main.py +0 -0
  268. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/markdown/__init__.py +0 -0
  269. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/markdown/incparse.py +0 -0
  270. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/markdown/tokens.py +0 -0
  271. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/mypy/__init__.py +0 -0
  272. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/mypy/debug.py +0 -0
  273. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/mypy/report.py +0 -0
  274. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/oci/__init__.py +0 -0
  275. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/oci/building.py +0 -0
  276. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/oci/compression.py +0 -0
  277. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/oci/data.py +0 -0
  278. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/oci/datarefs.py +0 -0
  279. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/oci/dataserver.py +0 -0
  280. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/oci/loading.py +0 -0
  281. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/oci/media.py +0 -0
  282. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/oci/pack/__init__.py +0 -0
  283. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/oci/pack/packing.py +0 -0
  284. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/oci/pack/repositories.py +0 -0
  285. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/oci/pack/unpacking.py +0 -0
  286. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/oci/repositories.py +0 -0
  287. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/oci/tars.py +0 -0
  288. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/packaging/__init__.py +0 -0
  289. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/packaging/marshal.py +0 -0
  290. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/packaging/names.py +0 -0
  291. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/packaging/requires.py +0 -0
  292. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/packaging/revisions.py +0 -0
  293. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/packaging/specifiers.py +0 -0
  294. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/packaging/versions.py +0 -0
  295. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/packaging/wheelfile.py +0 -0
  296. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pip.py +0 -0
  297. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/precheck/__init__.py +0 -0
  298. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/precheck/__main__.py +0 -0
  299. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/precheck/base.py +0 -0
  300. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/precheck/blanklines.py +0 -0
  301. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/precheck/caches.py +0 -0
  302. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/precheck/git.py +0 -0
  303. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/precheck/imports.py +0 -0
  304. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/precheck/lite.py +0 -0
  305. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/precheck/main.py +0 -0
  306. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/precheck/manifests.py +0 -0
  307. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/precheck/scripts.py +0 -0
  308. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/precheck/unicode.py +0 -0
  309. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/__init__.py +0 -0
  310. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/asts/__init__.py +0 -0
  311. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/asts/parents.py +0 -0
  312. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/asts/toplevel.py +0 -0
  313. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/asts/visitors.py +0 -0
  314. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/attrdocs.py +0 -0
  315. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/bracepy.py +0 -0
  316. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/classdot.py +0 -0
  317. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/docstrings/LICENSE +0 -0
  318. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/docstrings/__init__.py +0 -0
  319. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/docstrings/attrdoc.py +0 -0
  320. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/docstrings/common.py +0 -0
  321. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/docstrings/epydoc.py +0 -0
  322. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/docstrings/google.py +0 -0
  323. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/docstrings/numpydoc.py +0 -0
  324. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/docstrings/parser.py +0 -0
  325. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/docstrings/rest.py +0 -0
  326. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/findimports.py +0 -0
  327. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/reprs.py +0 -0
  328. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/scripts/__init__.py +0 -0
  329. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/scripts/bumpversion.py +0 -0
  330. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/scripts/execstat.py +0 -0
  331. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/scripts/importtrace.py +0 -0
  332. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/srcheaders.py +0 -0
  333. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/tokens/__init__.py +0 -0
  334. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/tokens/all.py +0 -0
  335. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/tokens/tokenizert.py +0 -0
  336. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/tokens/utils.py +0 -0
  337. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/tools/__init__.py +0 -0
  338. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/tools/importscan.py +0 -0
  339. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/tools/mkrelimp.py +0 -0
  340. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/py/tools/pipdepup.py +0 -0
  341. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/__init__.py +0 -0
  342. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/__main__.py +0 -0
  343. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/cli.py +0 -0
  344. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/configs.py +0 -0
  345. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/inject.py +0 -0
  346. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/pkg.py +0 -0
  347. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/reqs.py +0 -0
  348. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/resources/__init__.py +0 -0
  349. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/resources/docker-dev.sh +0 -0
  350. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/resources/python.sh +0 -0
  351. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/tools/__init__.py +0 -0
  352. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/tools/aboutdeps.py +0 -0
  353. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/tools/buildrs.py +0 -0
  354. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/tools/pyversions.py +0 -0
  355. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/venvs.py +0 -0
  356. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/pyproject/versions.py +0 -0
  357. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/rs/__init__.py +0 -0
  358. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/scripts/__init__.py +0 -0
  359. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/scripts/interp.py +0 -0
  360. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/scripts/lib/__init__.py +0 -0
  361. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/scripts/lib/inject.py +0 -0
  362. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/scripts/lib/io/__init__.py +0 -0
  363. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/scripts/lib/logs.py +0 -0
  364. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/scripts/lib/marshal.py +0 -0
  365. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/scripts/pyproject.py +0 -0
  366. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/scripts/slowcat.py +0 -0
  367. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/scripts/tmpexec.py +0 -0
  368. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tagstrings.py +0 -0
  369. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/__init__.py +0 -0
  370. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/cloc.py +0 -0
  371. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/diff.py +0 -0
  372. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/doc.py +0 -0
  373. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/docker.py +0 -0
  374. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/git/__init__.py +0 -0
  375. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/git/__main__.py +0 -0
  376. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/git/cli.py +0 -0
  377. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/git/cloning.py +0 -0
  378. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/git/consts.py +0 -0
  379. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/git/messages.py +0 -0
  380. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/json/__init__.py +0 -0
  381. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/json/__main__.py +0 -0
  382. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/json/cli.py +0 -0
  383. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/json/formats.py +0 -0
  384. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/json/io.py +0 -0
  385. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/json/parsing.py +0 -0
  386. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/json/processing.py +0 -0
  387. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/json/rendering.py +0 -0
  388. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/jsonview/__init__.py +0 -0
  389. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/jsonview/__main__.py +0 -0
  390. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/jsonview/cli.py +0 -0
  391. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/jsonview/resources/__init__.py +0 -0
  392. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/jsonview/resources/jsonview.css +0 -0
  393. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/jsonview/resources/jsonview.html.j2 +0 -0
  394. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/jsonview/resources/jsonview.js +0 -0
  395. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/linehisto.py +0 -0
  396. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/mkenv.py +0 -0
  397. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/notebook.py +0 -0
  398. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/pawk/README.md +0 -0
  399. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/pawk/__init__.py +0 -0
  400. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/pawk/__main__.py +0 -0
  401. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/pawk/pawk.py +0 -0
  402. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/pip.py +0 -0
  403. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/prof.py +0 -0
  404. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/qr.py +0 -0
  405. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/shadow.py +0 -0
  406. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/shell.py +0 -0
  407. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tools/sqlrepl.py +0 -0
  408. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/__init__.py +0 -0
  409. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/apps/__init__.py +0 -0
  410. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/apps/edit/__init__.py +0 -0
  411. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/apps/edit/main.py +0 -0
  412. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/apps/irc/__init__.py +0 -0
  413. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/apps/irc/__main__.py +0 -0
  414. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/apps/irc/client.py +0 -0
  415. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/apps/irc/commands.py +0 -0
  416. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/apps/markdown/__init__.py +0 -0
  417. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/apps/markdown/__main__.py +0 -0
  418. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/apps/markdown/cli.py +0 -0
  419. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/rich/__init__.py +0 -0
  420. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/rich/console2.py +0 -0
  421. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/rich/markdown2.py +0 -0
  422. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/__init__.py +0 -0
  423. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/app2.py +0 -0
  424. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/autocomplete/LICENSE +0 -0
  425. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/autocomplete/__init__.py +0 -0
  426. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/autocomplete/matching.py +0 -0
  427. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/autocomplete/paths.py +0 -0
  428. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/autocomplete/widget.py +0 -0
  429. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/binding2.py +0 -0
  430. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/clipboard.py +0 -0
  431. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/debug/__init__.py +0 -0
  432. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/debug/dominfo.py +0 -0
  433. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/debug/screen.py +0 -0
  434. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/devtools.py +0 -0
  435. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/drivers2.py +0 -0
  436. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/logging2.py +0 -0
  437. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/screen2.py +0 -0
  438. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev/tui/textual/types.py +0 -0
  439. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev.egg-info/dependency_links.txt +0 -0
  440. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev.egg-info/entry_points.txt +0 -0
  441. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/omdev.egg-info/top_level.txt +0 -0
  442. {omdev-0.0.0.dev529 → omdev-0.0.0.dev531}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev529
3
+ Version: 0.0.0.dev531
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.dev529
17
+ Requires-Dist: omlish==0.0.0.dev531
18
18
  Provides-Extra: all
19
19
  Requires-Dist: black~=26.1; extra == "all"
20
20
  Requires-Dist: pycparser~=3.0; extra == "all"
@@ -127,6 +127,8 @@ def gen_ops(cfg: Config) -> ta.Sequence[Op]:
127
127
  static_env={'NVM_VERSIONS': cfg.nvm_versions},
128
128
  ))
129
129
 
130
+ ops.append(fragment_section('uv'))
131
+
130
132
  if cfg.pyenv_version_keys:
131
133
  ops.append(fragment_section(
132
134
  'pyenv',
@@ -1,7 +1,7 @@
1
1
  set -ex ;
2
2
 
3
3
  sudo apt install gnupg ca-certificates curl ;
4
- curl -s https://repos.azul.com/azul-repo.key | sudo gpg --dearmor -o /usr/share/keyrings/azul.gpg ;
4
+ curl -s 'https://repos.azul.com/azul-repo.key' | sudo gpg --dearmor -o /usr/share/keyrings/azul.gpg ;
5
5
  echo "deb [signed-by=/usr/share/keyrings/azul.gpg] https://repos.azul.com/zulu/deb stable main" | sudo tee /etc/apt/sources.list.d/zulu.list ;
6
6
 
7
7
  apt-get update ;
@@ -1,6 +1,6 @@
1
1
  set -ex ;
2
2
 
3
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash ;
3
+ curl -o- 'https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh' | bash ;
4
4
 
5
5
  export NVM_DIR="$HOME/.nvm" ;
6
6
  [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" ;
@@ -0,0 +1,3 @@
1
+ set -ex ;
2
+
3
+ curl -LsSf 'https://astral.sh/uv/install.sh' | sh ;
@@ -95,7 +95,7 @@ def __omlish_amalg__(): # noqa
95
95
  dict(path='../../omlish/asyncs/asyncio/utils.py', sha1='34691d4d0e5bab68f14e193a6200df040cfd0136'),
96
96
  dict(path='../../omlish/docker/ports.py', sha1='a3202c69b85bc4f1034479df3400fddc86130e5c'),
97
97
  dict(path='../../omlish/http/urllib.py', sha1='25431c5bdc7dd5cbecfcb8c0bdffaabf8c1691b9'),
98
- dict(path='../../omlish/http/versions.py', sha1='dbd6ee1941150b1143096eac2b02eb29c0396d30'),
98
+ dict(path='../../omlish/http/versions.py', sha1='5b1659b81eb197c6880fbe78684a1348595ec804'),
99
99
  dict(path='../../omlish/io/pushback.py', sha1='783fe8a40fa9f2febf035f4553c53c73b9bd58e1'),
100
100
  dict(path='../../omlish/lite/abstract.py', sha1='a2fc3f3697fa8de5247761e9d554e70176f37aac'),
101
101
  dict(path='../../omlish/lite/asyncs.py', sha1='b3f2251c56617ce548abf9c333ac996b63edb23e'),
@@ -125,7 +125,7 @@ def __omlish_amalg__(): # noqa
125
125
  dict(path='../oci/pack/unpacking.py', sha1='f43dee9a2eee79cbbb90f0721ed234a2bc35daa7'),
126
126
  dict(path='../../omlish/argparse/cli.py', sha1='f4dc3cd353d14386b5da0306768700e396afd2b3'),
127
127
  dict(path='../../omlish/http/coro/io.py', sha1='6ccbbf6a1a6a702ce0f1dc24b4057e8264ef4641'),
128
- dict(path='../../omlish/http/parsing.py', sha1='58579597eaf70a8ee409c2814481b3002a6acea1'),
128
+ dict(path='../../omlish/http/parsing.py', sha1='2ee187993274e697332c7df7b46a98382f4cee2a'),
129
129
  dict(path='../../omlish/lite/marshal.py', sha1='96348f5f2a26dc27d842d33cc3927e9da163436b'),
130
130
  dict(path='../../omlish/lite/maybes.py', sha1='04d2fcbea17028a5e6b8e7a7fb742375495ed233'),
131
131
  dict(path='../../omlish/lite/runtime.py', sha1='2e752a27ae2bf89b1bb79b4a2da522a3ec360c70'),
@@ -622,6 +622,9 @@ class HttpVersion:
622
622
  self._str = f'HTTP/{major}.{minor}'
623
623
  self._short_str = f'{major}.{minor}'
624
624
 
625
+ def __repr__(self) -> str:
626
+ return f'{self.__class__.__name__}({self.major}, {self.minor})'
627
+
625
628
  def __hash__(self) -> int:
626
629
  return self._hash
627
630
 
@@ -4417,12 +4420,26 @@ class PreparedParsedHttpHeaders:
4417
4420
 
4418
4421
  authorization: ta.Optional[AuthorizationValue] = None
4419
4422
 
4423
+ def __repr__(self) -> str:
4424
+ return ''.join([
4425
+ f'{self.__class__.__name__}(',
4426
+ ', '.join([
4427
+ f'{f.name}={v!r}'
4428
+ for f in dc.fields(self)
4429
+ if (v := getattr(self, f.name) is not None)
4430
+ ]),
4431
+ ')',
4432
+ ])
4433
+
4420
4434
 
4421
4435
  @dc.dataclass(frozen=True)
4422
4436
  class RawParsedHttpHeader:
4423
4437
  name: bytes
4424
4438
  value: bytes
4425
4439
 
4440
+ def __repr__(self) -> str:
4441
+ return f'{self.__class__.__name__}({self.name!r}, {self.value!r})'
4442
+
4426
4443
 
4427
4444
  @dc.dataclass()
4428
4445
  class ParsedHttpMessage:
@@ -26,16 +26,16 @@ def __omlish_amalg__(): # noqa
26
26
  dict(path='errors.py', sha1='67ca85fd8741b5bfefe76c872ce1c30c18fab06f'),
27
27
  dict(path='../../lite/abstract.py', sha1='a2fc3f3697fa8de5247761e9d554e70176f37aac'),
28
28
  dict(path='../../lite/namespaces.py', sha1='27b12b6592403c010fb8b2a0af7c24238490d3a1'),
29
- dict(path='types.py', sha1='8a12dc29f6e483dd8df5336c0d9b58a00b64e7ed'),
30
- dict(path='base.py', sha1='67ae88ffabae21210b5452fe49c9a3e01ca164c5'),
29
+ dict(path='types.py', sha1='ab72e5d4a1e648ef79577be7d8c45853b1c5917d'),
30
+ dict(path='base.py', sha1='bdeaff419684dec34fd0dc59808a9686131992bc'),
31
31
  dict(path='framing.py', sha1='dc2d7f638b042619fd3d95789c71532a29fd5fe4'),
32
32
  dict(path='reading.py', sha1='7631635c46ab4b40bcaeb7c506cf15cb2d529a40'),
33
33
  dict(path='utils.py', sha1='476363dfce81e3177a66f066892ed3fcf773ead8'),
34
34
  dict(path='direct.py', sha1='83c33460e9490a77a00ae66251617ba98128b56b'),
35
- dict(path='scanning.py', sha1='4c0323e0b11cd506f7b6b4cf28ea4d7c6064b9d3'),
36
- dict(path='adapters.py', sha1='865338413829b97be23883f713d50eb7cb62617a'),
37
- dict(path='linear.py', sha1='e1669b97cf16184d479fd4589862380730236737'),
38
- dict(path='segmented.py', sha1='f855d67d88ed71bbe2bbeee09321534f0ef18e24'),
35
+ dict(path='scanning.py', sha1='6ab39887d0d2d3002201b786c4715e64804c66c8'),
36
+ dict(path='adapters.py', sha1='ce4fc01bd81bb6b3402dc71e46c37849a80e476d'),
37
+ dict(path='linear.py', sha1='b2d82224c6a3001eb8230d6a9c4de7cb3afe7d1c'),
38
+ dict(path='segmented.py', sha1='4aeb1c22b7b5994132f0b5906d70b3e53201776b'),
39
39
  dict(path='_amalg.py', sha1='9c88a055447d7b37da1b356e6a1e00b7c4a9a3cb'),
40
40
  ],
41
41
  )
@@ -492,6 +492,11 @@ class MutableByteStreamBuffer(ByteStreamBuffer, Abstract):
492
492
  Implementations may be linear (single `bytearray` + indices), segmented (multiple chunks), or adaptive.
493
493
  """
494
494
 
495
+ @property
496
+ @abc.abstractmethod
497
+ def max_size(self) -> ta.Optional[int]:
498
+ raise NotImplementedError
499
+
495
500
  @abc.abstractmethod
496
501
  def write(self, data: BytesLikeOrMemoryview, /) -> None:
497
502
  """
@@ -550,9 +555,7 @@ class MutableByteStreamBuffer(ByteStreamBuffer, Abstract):
550
555
  class BaseByteStreamBufferLike(ByteStreamBufferLike, Abstract):
551
556
  def _norm_slice(self, start: int, end: ta.Optional[int]) -> ta.Tuple[int, int]:
552
557
  s, e, _ = slice(start, end, 1).indices(len(self))
553
- if e < s:
554
- e = s
555
- return s, e
558
+ return (s, s) if e < s else (s, e)
556
559
 
557
560
 
558
561
  ########################################
@@ -1385,6 +1388,10 @@ class ScanningByteStreamBuffer(BaseByteStreamBufferLike, MutableByteStreamBuffer
1385
1388
  self._buf = buf
1386
1389
  self._scan_from_by_sub: dict[bytes, int] = {}
1387
1390
 
1391
+ @property
1392
+ def max_size(self) -> ta.Optional[int]:
1393
+ return self._buf.max_size
1394
+
1388
1395
  #
1389
1396
 
1390
1397
  def __len__(self) -> int:
@@ -1649,6 +1656,10 @@ class BytesIoByteStreamBuffer(MutableByteStreamBuffer):
1649
1656
  self._resv: ta.Optional[bytearray] = None
1650
1657
  self._resv_len = 0
1651
1658
 
1659
+ @property
1660
+ def max_size(self) -> ta.Optional[int]:
1661
+ return None
1662
+
1652
1663
  def __len__(self) -> int:
1653
1664
  return self._bio.getbuffer().nbytes - self._rpos
1654
1665
 
@@ -1782,18 +1793,18 @@ class LinearByteStreamBuffer(BaseByteStreamBufferLike, MutableByteStreamBuffer):
1782
1793
  def __init__(
1783
1794
  self,
1784
1795
  *,
1785
- max_bytes: ta.Optional[int] = None,
1796
+ max_size: ta.Optional[int] = None,
1786
1797
  initial_capacity: int = 0,
1787
1798
  compact_threshold: int = 0x10000,
1788
1799
  ) -> None:
1789
1800
  super().__init__()
1790
1801
 
1791
- self._max_bytes = None if max_bytes is None else int(max_bytes)
1802
+ self._max_size = None if max_size is None else int(max_size)
1792
1803
 
1793
1804
  if initial_capacity < 0:
1794
1805
  raise ValueError(initial_capacity)
1795
- if self._max_bytes is not None and initial_capacity > self._max_bytes:
1796
- raise BufferTooLargeByteStreamBufferError('buffer exceeded max_bytes')
1806
+ if self._max_size is not None and initial_capacity > self._max_size:
1807
+ raise BufferTooLargeByteStreamBufferError('buffer exceeded max_size')
1797
1808
 
1798
1809
  if compact_threshold < 0:
1799
1810
  raise ValueError(compact_threshold)
@@ -1812,6 +1823,10 @@ class LinearByteStreamBuffer(BaseByteStreamBufferLike, MutableByteStreamBuffer):
1812
1823
  else:
1813
1824
  self._ba = bytearray()
1814
1825
 
1826
+ @property
1827
+ def max_size(self) -> ta.Optional[int]:
1828
+ return self._max_size
1829
+
1815
1830
  _rpos = 0
1816
1831
  _wpos = 0
1817
1832
 
@@ -1847,8 +1862,8 @@ class LinearByteStreamBuffer(BaseByteStreamBufferLike, MutableByteStreamBuffer):
1847
1862
 
1848
1863
  bl = len(data)
1849
1864
 
1850
- if self._max_bytes is not None and len(self) + bl > self._max_bytes:
1851
- raise BufferTooLargeByteStreamBufferError('buffer exceeded max_bytes')
1865
+ if self._max_size is not None and len(self) + bl > self._max_size:
1866
+ raise BufferTooLargeByteStreamBufferError('buffer exceeded max_size')
1852
1867
 
1853
1868
  # If buffer is logically empty but backing store might still be large (e.g. compaction skipped),
1854
1869
  # keep indices reset and just append.
@@ -1892,8 +1907,8 @@ class LinearByteStreamBuffer(BaseByteStreamBufferLike, MutableByteStreamBuffer):
1892
1907
  if not n:
1893
1908
  return
1894
1909
 
1895
- if self._max_bytes is not None and len(self) + n > self._max_bytes:
1896
- raise BufferTooLargeByteStreamBufferError('buffer exceeded max_bytes')
1910
+ if self._max_size is not None and len(self) + n > self._max_size:
1911
+ raise BufferTooLargeByteStreamBufferError('buffer exceeded max_size')
1897
1912
 
1898
1913
  # Append only what was written.
1899
1914
  self.write(memoryview(b)[:n])
@@ -2115,7 +2130,7 @@ class SegmentedByteStreamBuffer(BaseByteStreamBufferLike, MutableByteStreamBuffe
2115
2130
  def __init__(
2116
2131
  self,
2117
2132
  *,
2118
- max_bytes: ta.Optional[int] = None,
2133
+ max_size: ta.Optional[int] = None,
2119
2134
  chunk_size: int = 0,
2120
2135
  chunk_compact_threshold: float = .25,
2121
2136
  ) -> None:
@@ -2123,7 +2138,7 @@ class SegmentedByteStreamBuffer(BaseByteStreamBufferLike, MutableByteStreamBuffe
2123
2138
 
2124
2139
  self._segs: ta.List[ta.Union[bytes, bytearray]] = []
2125
2140
 
2126
- self._max_bytes = None if max_bytes is None else int(max_bytes)
2141
+ self._max_size = None if max_size is None else int(max_size)
2127
2142
 
2128
2143
  if chunk_size < 0:
2129
2144
  raise ValueError(chunk_size)
@@ -2136,6 +2151,10 @@ class SegmentedByteStreamBuffer(BaseByteStreamBufferLike, MutableByteStreamBuffe
2136
2151
  self._active: ta.Optional[bytearray] = None
2137
2152
  self._active_used = 0
2138
2153
 
2154
+ @property
2155
+ def max_size(self) -> ta.Optional[int]:
2156
+ return self._max_size
2157
+
2139
2158
  _head_off = 0
2140
2159
  _len = 0
2141
2160
 
@@ -2206,7 +2225,7 @@ class SegmentedByteStreamBuffer(BaseByteStreamBufferLike, MutableByteStreamBuffe
2206
2225
  if len(mv):
2207
2226
  out.append(mv)
2208
2227
 
2209
- return tuple(out)
2228
+ return out
2210
2229
 
2211
2230
  #
2212
2231
 
@@ -2268,8 +2287,8 @@ class SegmentedByteStreamBuffer(BaseByteStreamBufferLike, MutableByteStreamBuffe
2268
2287
 
2269
2288
  dl = len(data)
2270
2289
 
2271
- if self._max_bytes is not None and self._len + dl > self._max_bytes:
2272
- raise BufferTooLargeByteStreamBufferError('buffer exceeded max_bytes')
2290
+ if self._max_size is not None and self._len + dl > self._max_size:
2291
+ raise BufferTooLargeByteStreamBufferError('buffer exceeded max_size')
2273
2292
 
2274
2293
  if self._chunk_size <= 0:
2275
2294
  self._segs.append(data)
@@ -2341,8 +2360,8 @@ class SegmentedByteStreamBuffer(BaseByteStreamBufferLike, MutableByteStreamBuffe
2341
2360
  self._reserved_len = 0
2342
2361
  self._reserved_in_active = False
2343
2362
 
2344
- if self._max_bytes is not None and self._len + n > self._max_bytes:
2345
- raise BufferTooLargeByteStreamBufferError('buffer exceeded max_bytes')
2363
+ if self._max_size is not None and self._len + n > self._max_size:
2364
+ raise BufferTooLargeByteStreamBufferError('buffer exceeded max_size')
2346
2365
 
2347
2366
  if n:
2348
2367
  self._active_used += n
@@ -2357,8 +2376,8 @@ class SegmentedByteStreamBuffer(BaseByteStreamBufferLike, MutableByteStreamBuffe
2357
2376
  self._reserved_len = 0
2358
2377
  self._reserved_in_active = False
2359
2378
 
2360
- if self._max_bytes is not None and self._len + n > self._max_bytes:
2361
- raise BufferTooLargeByteStreamBufferError('buffer exceeded max_bytes')
2379
+ if self._max_size is not None and self._len + n > self._max_size:
2380
+ raise BufferTooLargeByteStreamBufferError('buffer exceeded max_size')
2362
2381
 
2363
2382
  if not n:
2364
2383
  return
@@ -10,6 +10,7 @@ TODO:
10
10
  import shlex
11
11
  import typing as ta
12
12
 
13
+ from omlish import check
13
14
  from omlish import lang
14
15
 
15
16
  from ... import textual as tx
@@ -90,7 +91,7 @@ class IrcApp(tx.App):
90
91
  self._window_order: list[str] = ['system']
91
92
  self._current_window_idx: int = 0
92
93
  self._current_channel: str | None = None
93
- self._startup_commands: ta.Sequence[str] = startup_commands or []
94
+ self._startup_commands: ta.Sequence[str] = check.not_isinstance(startup_commands or [], str)
94
95
 
95
96
  @property
96
97
  def client(self) -> IrcClient | None:
@@ -0,0 +1,84 @@
1
+ import os.path
2
+ import tomllib
3
+ import typing as ta
4
+
5
+ from omlish import check
6
+ from omlish import dataclasses as dc
7
+ from omlish import marshal as msh
8
+ from omlish.argparse import all as argparse
9
+
10
+ from ....home.paths import get_home_paths
11
+ from .app import IrcApp
12
+
13
+
14
+ ##
15
+
16
+
17
+ @dc.dataclass(frozen=True)
18
+ class Config:
19
+ autoexec: ta.Sequence[str] | None = None
20
+
21
+
22
+ def load_config(cfg_file: str | None = None) -> Config | None:
23
+ if cfg_file is not None:
24
+ check.state(os.path.exists(cfg_file), 'Config file does not exist')
25
+
26
+ else:
27
+ cfg_file = os.path.join(get_home_paths().config_dir, 'irc.toml')
28
+ if not os.path.exists(cfg_file):
29
+ return None
30
+
31
+ with open(cfg_file) as f:
32
+ cfg_src = f.read()
33
+
34
+ cfg_dct = tomllib.loads(cfg_src)
35
+ return msh.unmarshal(cfg_dct, Config)
36
+
37
+
38
+ ##
39
+
40
+
41
+ def _main() -> None:
42
+ parser = argparse.ArgumentParser(description='Simple IRC client using Textual')
43
+
44
+ parser.add_argument(
45
+ '-x',
46
+ action='append',
47
+ dest='commands',
48
+ help='Execute slash command on startup (can be specified multiple times)',
49
+ )
50
+
51
+ parser.add_argument('-c', '--config', help='Specify config file')
52
+ parser.add_argument('-C', '--no-config', action='store_true', help='Disable config file')
53
+
54
+ args = parser.parse_args()
55
+
56
+ #
57
+
58
+ cfg: Config | None = None
59
+ if not args.no_config:
60
+ cfg = load_config(args.config)
61
+
62
+ #
63
+
64
+ autoexec: list[str] = []
65
+
66
+ if cfg is not None:
67
+ if isinstance(cfg.autoexec, str):
68
+ autoexec.append(cfg.autoexec)
69
+ elif cfg.autoexec:
70
+ autoexec.extend(cfg.autoexec)
71
+
72
+ if args.commands:
73
+ autoexec.extend(args.commands)
74
+
75
+ #
76
+
77
+ app = IrcApp(
78
+ startup_commands=autoexec,
79
+ )
80
+ app.run()
81
+
82
+
83
+ if __name__ == '__main__':
84
+ _main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev529
3
+ Version: 0.0.0.dev531
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.dev529
17
+ Requires-Dist: omlish==0.0.0.dev531
18
18
  Provides-Extra: all
19
19
  Requires-Dist: black~=26.1; extra == "all"
20
20
  Requires-Dist: pycparser~=3.0; extra == "all"
@@ -186,6 +186,7 @@ omdev/dockerdev/resources/fragments/nvm.sh
186
186
  omdev/dockerdev/resources/fragments/pyenv.sh
187
187
  omdev/dockerdev/resources/fragments/rust.sh
188
188
  omdev/dockerdev/resources/fragments/sshd.sh
189
+ omdev/dockerdev/resources/fragments/uv.sh
189
190
  omdev/dockerdev/resources/fragments/vcpkg.sh
190
191
  omdev/dockerdev/resources/fragments/zig.sh
191
192
  omdev/git/__init__.py
@@ -1,4 +1,4 @@
1
- omlish==0.0.0.dev529
1
+ omlish==0.0.0.dev531
2
2
 
3
3
  [all]
4
4
  black~=26.1
@@ -13,7 +13,7 @@ urls = {source = 'https://github.com/wrmsr/omlish'}
13
13
  license = 'BSD-3-Clause'
14
14
  readme = 'README.md'
15
15
  requires-python = '>=3.13'
16
- version = '0.0.0.dev529'
16
+ version = '0.0.0.dev531'
17
17
  classifiers = [
18
18
  'Development Status :: 2 - Pre-Alpha',
19
19
  'Intended Audience :: Developers',
@@ -24,7 +24,7 @@ classifiers = [
24
24
  ]
25
25
  description = 'omdev'
26
26
  dependencies = [
27
- 'omlish == 0.0.0.dev529',
27
+ 'omlish == 0.0.0.dev531',
28
28
  ]
29
29
 
30
30
  [project.optional-dependencies]
@@ -1,26 +0,0 @@
1
- from omlish.argparse import all as argparse
2
-
3
- from .app import IrcApp
4
-
5
-
6
- ##
7
-
8
-
9
- def _main() -> None:
10
- parser = argparse.ArgumentParser(description='Simple IRC client using Textual')
11
- parser.add_argument(
12
- '-x',
13
- action='append',
14
- dest='commands',
15
- help='Execute slash command on startup (can be specified multiple times)',
16
- )
17
- args = parser.parse_args()
18
-
19
- app = IrcApp(
20
- startup_commands=args.commands,
21
- )
22
- app.run()
23
-
24
-
25
- if __name__ == '__main__':
26
- _main()
File without changes
File without changes
File without changes