ominfra 0.0.0.dev472__tar.gz → 0.0.0.dev473__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 (170) hide show
  1. {ominfra-0.0.0.dev472/ominfra.egg-info → ominfra-0.0.0.dev473}/PKG-INFO +3 -3
  2. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/scripts/journald2aws.py +145 -4
  3. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/scripts/manage.py +4 -4
  4. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/scripts/supervisor.py +141 -0
  5. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473/ominfra.egg-info}/PKG-INFO +3 -3
  6. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra.egg-info/requires.txt +2 -2
  7. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/pyproject.toml +3 -3
  8. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/LICENSE +0 -0
  9. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/MANIFEST.in +0 -0
  10. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/README.md +0 -0
  11. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/.omlish-manifests.json +0 -0
  12. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/__about__.py +0 -0
  13. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/__init__.py +0 -0
  14. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/__init__.py +0 -0
  15. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/__init__.py +0 -0
  16. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/__main__.py +0 -0
  17. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/auth.py +0 -0
  18. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/cli.py +0 -0
  19. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/dataclasses.py +0 -0
  20. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/instancetypes/__init__.py +0 -0
  21. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/instancetypes/__main__.py +0 -0
  22. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/instancetypes/cache.json.gz +0 -0
  23. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/instancetypes/cache.py +0 -0
  24. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/instancetypes/cli.py +0 -0
  25. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/journald2aws/__init__.py +0 -0
  26. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/journald2aws/__main__.py +0 -0
  27. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/journald2aws/cursor.py +0 -0
  28. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/journald2aws/driver.py +0 -0
  29. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/journald2aws/main.py +0 -0
  30. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/journald2aws/poster.py +0 -0
  31. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/logs.py +0 -0
  32. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/metadata.py +0 -0
  33. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/models/__init__.py +0 -0
  34. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/models/base.py +0 -0
  35. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/models/gen/__init__.py +0 -0
  36. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/models/gen/__main__.py +0 -0
  37. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/models/gen/cli.py +0 -0
  38. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/models/gen/gen.py +0 -0
  39. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/models/services/__init__.py +0 -0
  40. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/models/services/ec2.py +0 -0
  41. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/models/services/lambda_.py +0 -0
  42. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/models/services/rds.py +0 -0
  43. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/models/services/s3.py +0 -0
  44. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/aws/models/services/services.toml +0 -0
  45. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/gcp/__init__.py +0 -0
  46. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/gcp/api.py +0 -0
  47. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/clouds/gcp/auth.py +0 -0
  48. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/commands/__init__.py +0 -0
  49. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/commands/runners.py +0 -0
  50. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/commands/ssh.py +0 -0
  51. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/journald/__init__.py +0 -0
  52. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/journald/fields.py +0 -0
  53. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/journald/genmessages.py +0 -0
  54. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/journald/messages.py +0 -0
  55. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/journald/tailer.py +0 -0
  56. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/__init__.py +0 -0
  57. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/__main__.py +0 -0
  58. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/bootstrap.py +0 -0
  59. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/bootstrap_.py +0 -0
  60. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/commands/__init__.py +0 -0
  61. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/commands/base.py +0 -0
  62. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/commands/inject.py +0 -0
  63. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/commands/injection.py +0 -0
  64. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/commands/local.py +0 -0
  65. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/commands/marshal.py +0 -0
  66. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/commands/ping.py +0 -0
  67. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/commands/subprocess.py +0 -0
  68. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/commands/types.py +0 -0
  69. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/config.py +0 -0
  70. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/__init__.py +0 -0
  71. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/apps.py +0 -0
  72. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/commands.py +0 -0
  73. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/conf/__init__.py +0 -0
  74. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/conf/inject.py +0 -0
  75. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/conf/manager.py +0 -0
  76. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/conf/specs.py +0 -0
  77. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/config.py +0 -0
  78. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/deploy.py +0 -0
  79. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/git.py +0 -0
  80. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/inject.py +0 -0
  81. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/injection.py +0 -0
  82. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/interp.py +0 -0
  83. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/nginx.py +0 -0
  84. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/paths/__init__.py +0 -0
  85. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/paths/inject.py +0 -0
  86. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/paths/manager.py +0 -0
  87. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/paths/owners.py +0 -0
  88. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/paths/paths.py +0 -0
  89. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/paths/specs.py +0 -0
  90. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/paths/types.py +0 -0
  91. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/specs.py +0 -0
  92. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/systemd.py +0 -0
  93. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/tags.py +0 -0
  94. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/tmp.py +0 -0
  95. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/types.py +0 -0
  96. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/deploy/venvs.py +0 -0
  97. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/inject.py +0 -0
  98. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/main.py +0 -0
  99. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/marshal.py +0 -0
  100. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/remote/__init__.py +0 -0
  101. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/remote/_main.py +0 -0
  102. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/remote/channel.py +0 -0
  103. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/remote/config.py +0 -0
  104. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/remote/connection.py +0 -0
  105. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/remote/execution.py +0 -0
  106. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/remote/inject.py +0 -0
  107. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/remote/payload.py +0 -0
  108. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/remote/spawning.py +0 -0
  109. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/system/__init__.py +0 -0
  110. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/system/commands.py +0 -0
  111. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/system/config.py +0 -0
  112. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/system/inject.py +0 -0
  113. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/system/packages.py +0 -0
  114. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/system/platforms.py +0 -0
  115. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/targets/__init__.py +0 -0
  116. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/targets/bestpython.py +0 -0
  117. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/targets/bestpython.sh +0 -0
  118. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/targets/connection.py +0 -0
  119. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/targets/inject.py +0 -0
  120. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/manage/targets/targets.py +0 -0
  121. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/pyremote.py +0 -0
  122. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/scripts/__init__.py +0 -0
  123. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/LICENSE.txt +0 -0
  124. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/__init__.py +0 -0
  125. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/__main__.py +0 -0
  126. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/configs.py +0 -0
  127. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/dispatchers.py +0 -0
  128. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/dispatchersimpl.py +0 -0
  129. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/errors.py +0 -0
  130. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/events.py +0 -0
  131. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/groups.py +0 -0
  132. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/groupsimpl.py +0 -0
  133. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/http.py +0 -0
  134. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/inject.py +0 -0
  135. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/io.py +0 -0
  136. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/main.py +0 -0
  137. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/pipes.py +0 -0
  138. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/privileges.py +0 -0
  139. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/process.py +0 -0
  140. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/processimpl.py +0 -0
  141. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/setup.py +0 -0
  142. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/setupimpl.py +0 -0
  143. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/signals.py +0 -0
  144. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/spawning.py +0 -0
  145. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/spawningimpl.py +0 -0
  146. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/states.py +0 -0
  147. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/supervisor.py +0 -0
  148. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/types.py +0 -0
  149. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/utils/__init__.py +0 -0
  150. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/utils/collections.py +0 -0
  151. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/utils/diag.py +0 -0
  152. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/utils/fds.py +0 -0
  153. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/utils/fs.py +0 -0
  154. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/utils/os.py +0 -0
  155. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/utils/ostypes.py +0 -0
  156. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/utils/signals.py +0 -0
  157. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/utils/strings.py +0 -0
  158. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/supervisor/utils/users.py +0 -0
  159. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/systemd.py +0 -0
  160. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/tailscale/__init__.py +0 -0
  161. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/tailscale/api.py +0 -0
  162. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/tailscale/cli.py +0 -0
  163. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/threadworkers.py +0 -0
  164. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/tools/__init__.py +0 -0
  165. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra/tools/listresources.py +0 -0
  166. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra.egg-info/SOURCES.txt +0 -0
  167. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra.egg-info/dependency_links.txt +0 -0
  168. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra.egg-info/entry_points.txt +0 -0
  169. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/ominfra.egg-info/top_level.txt +0 -0
  170. {ominfra-0.0.0.dev472 → ominfra-0.0.0.dev473}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ominfra
3
- Version: 0.0.0.dev472
3
+ Version: 0.0.0.dev473
4
4
  Summary: ominfra
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,8 +14,8 @@ 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: omdev==0.0.0.dev472
18
- Requires-Dist: omlish==0.0.0.dev472
17
+ Requires-Dist: omdev==0.0.0.dev473
18
+ Requires-Dist: omlish==0.0.0.dev473
19
19
  Provides-Extra: all
20
20
  Requires-Dist: paramiko~=4.0; extra == "all"
21
21
  Requires-Dist: asyncssh~=2.21; extra == "all"
@@ -1200,6 +1200,36 @@ class TomlWriter:
1200
1200
  return out.getvalue()
1201
1201
 
1202
1202
 
1203
+ ########################################
1204
+ # ../../../../../omlish/io/readers.py
1205
+
1206
+
1207
+ ##
1208
+
1209
+
1210
+ class RawBytesReader(ta.Protocol):
1211
+ def read1(self, /, n: int = -1) -> bytes: ...
1212
+
1213
+
1214
+ class BufferedBytesReader(RawBytesReader, ta.Protocol):
1215
+ def read(self, /, n: int = -1) -> bytes: ...
1216
+
1217
+ def readall(self) -> bytes: ...
1218
+
1219
+
1220
+ #
1221
+
1222
+
1223
+ class AsyncRawBytesReader(ta.Protocol):
1224
+ def read1(self, /, n: int = -1) -> ta.Awaitable[bytes]: ...
1225
+
1226
+
1227
+ class AsyncBufferedBytesReader(AsyncRawBytesReader, ta.Protocol):
1228
+ def read(self, /, n: int = -1) -> ta.Awaitable[bytes]: ...
1229
+
1230
+ def readall(self) -> ta.Awaitable[bytes]: ...
1231
+
1232
+
1203
1233
  ########################################
1204
1234
  # ../../../../../omlish/lite/abstract.py
1205
1235
 
@@ -2411,7 +2441,7 @@ class ExitStacked:
2411
2441
  es.__enter__()
2412
2442
  try:
2413
2443
  self._enter_contexts()
2414
- except Exception: # noqa
2444
+ except BaseException: # noqa
2415
2445
  es.__exit__(*sys.exc_info())
2416
2446
  raise
2417
2447
  return self
@@ -2422,7 +2452,7 @@ class ExitStacked:
2422
2452
  return None
2423
2453
  try:
2424
2454
  self._exit_contexts()
2425
- except Exception: # noqa
2455
+ except BaseException: # noqa
2426
2456
  es.__exit__(*sys.exc_info())
2427
2457
  raise
2428
2458
  return es.__exit__(exc_type, exc_val, exc_tb)
@@ -2470,7 +2500,7 @@ class AsyncExitStacked:
2470
2500
  await es.__aenter__()
2471
2501
  try:
2472
2502
  await self._async_enter_contexts()
2473
- except Exception: # noqa
2503
+ except BaseException: # noqa
2474
2504
  await es.__aexit__(*sys.exc_info())
2475
2505
  raise
2476
2506
  return self
@@ -2481,7 +2511,7 @@ class AsyncExitStacked:
2481
2511
  return None
2482
2512
  try:
2483
2513
  await self._async_exit_contexts()
2484
- except Exception: # noqa
2514
+ except BaseException: # noqa
2485
2515
  await es.__aexit__(*sys.exc_info())
2486
2516
  raise
2487
2517
  return await es.__aexit__(exc_type, exc_val, exc_tb)
@@ -3908,6 +3938,10 @@ DEFAULT_CONFIG_RENDERER = SwitchedConfigRenderer(DEFAULT_CONFIG_RENDERERS)
3908
3938
 
3909
3939
  ########################################
3910
3940
  # ../../../../../omlish/io/buffers.py
3941
+ """
3942
+ TODO:
3943
+ - overhaul and just coro-ify pyio?
3944
+ """
3911
3945
 
3912
3946
 
3913
3947
  ##
@@ -4086,6 +4120,9 @@ class ReadableListBuffer:
4086
4120
 
4087
4121
  self._lst: list[bytes] = []
4088
4122
 
4123
+ def __bool__(self) -> ta.NoReturn:
4124
+ raise TypeError("Use 'buf is not None' or 'len(buf)'.")
4125
+
4089
4126
  def __len__(self) -> int:
4090
4127
  return sum(map(len, self._lst))
4091
4128
 
@@ -4152,6 +4189,110 @@ class ReadableListBuffer:
4152
4189
  r = self.read_until_(delim)
4153
4190
  return r if isinstance(r, bytes) else None
4154
4191
 
4192
+ #
4193
+
4194
+ DEFAULT_BUFFERED_READER_CHUNK_SIZE: ta.ClassVar[int] = -1
4195
+
4196
+ @ta.final
4197
+ class _BufferedBytesReader(BufferedBytesReader):
4198
+ def __init__(
4199
+ self,
4200
+ raw: RawBytesReader,
4201
+ buf: 'ReadableListBuffer',
4202
+ *,
4203
+ chunk_size: ta.Optional[int] = None,
4204
+ ) -> None:
4205
+ self._raw = raw
4206
+ self._buf = buf
4207
+ self._chunk_size = chunk_size or ReadableListBuffer.DEFAULT_BUFFERED_READER_CHUNK_SIZE
4208
+
4209
+ def read1(self, /, n: int = -1) -> bytes:
4210
+ if n < 0:
4211
+ n = self._chunk_size
4212
+ if not n:
4213
+ return b''
4214
+ if 0 < n <= len(self._buf):
4215
+ return self._buf.read(n) or b''
4216
+ return self._raw.read1(n)
4217
+
4218
+ def read(self, /, n: int = -1) -> bytes:
4219
+ if n < 0:
4220
+ return self.readall()
4221
+ while len(self._buf) < n:
4222
+ if not (b := self._raw.read1(n)):
4223
+ break
4224
+ self._buf.feed(b)
4225
+ return self._buf.read(n) or b''
4226
+
4227
+ def readall(self) -> bytes:
4228
+ buf = io.BytesIO()
4229
+ buf.write(self._buf.read() or b'')
4230
+ while (b := self._raw.read1(self._chunk_size)):
4231
+ buf.write(b)
4232
+ return buf.getvalue()
4233
+
4234
+ def new_buffered_reader(
4235
+ self,
4236
+ raw: RawBytesReader,
4237
+ *,
4238
+ chunk_size: ta.Optional[int] = None,
4239
+ ) -> BufferedBytesReader:
4240
+ return self._BufferedBytesReader(
4241
+ raw,
4242
+ self,
4243
+ chunk_size=chunk_size,
4244
+ )
4245
+
4246
+ @ta.final
4247
+ class _AsyncBufferedBytesReader(AsyncBufferedBytesReader):
4248
+ def __init__(
4249
+ self,
4250
+ raw: AsyncRawBytesReader,
4251
+ buf: 'ReadableListBuffer',
4252
+ *,
4253
+ chunk_size: ta.Optional[int] = None,
4254
+ ) -> None:
4255
+ self._raw = raw
4256
+ self._buf = buf
4257
+ self._chunk_size = chunk_size or ReadableListBuffer.DEFAULT_BUFFERED_READER_CHUNK_SIZE
4258
+
4259
+ async def read1(self, /, n: int = -1) -> bytes:
4260
+ if n < 0:
4261
+ n = self._chunk_size
4262
+ if not n:
4263
+ return b''
4264
+ if 0 < n <= len(self._buf):
4265
+ return self._buf.read(n) or b''
4266
+ return await self._raw.read1(n)
4267
+
4268
+ async def read(self, /, n: int = -1) -> bytes:
4269
+ if n < 0:
4270
+ return await self.readall()
4271
+ while len(self._buf) < n:
4272
+ if not (b := await self._raw.read1(n)):
4273
+ break
4274
+ self._buf.feed(b)
4275
+ return self._buf.read(n) or b''
4276
+
4277
+ async def readall(self) -> bytes:
4278
+ buf = io.BytesIO()
4279
+ buf.write(self._buf.read() or b'')
4280
+ while b := await self._raw.read1(self._chunk_size):
4281
+ buf.write(b)
4282
+ return buf.getvalue()
4283
+
4284
+ def new_async_buffered_reader(
4285
+ self,
4286
+ raw: AsyncRawBytesReader,
4287
+ *,
4288
+ chunk_size: ta.Optional[int] = None,
4289
+ ) -> AsyncBufferedBytesReader:
4290
+ return self._AsyncBufferedBytesReader(
4291
+ raw,
4292
+ self,
4293
+ chunk_size=chunk_size,
4294
+ )
4295
+
4155
4296
 
4156
4297
  ##
4157
4298
 
@@ -3591,7 +3591,7 @@ class ExitStacked:
3591
3591
  es.__enter__()
3592
3592
  try:
3593
3593
  self._enter_contexts()
3594
- except Exception: # noqa
3594
+ except BaseException: # noqa
3595
3595
  es.__exit__(*sys.exc_info())
3596
3596
  raise
3597
3597
  return self
@@ -3602,7 +3602,7 @@ class ExitStacked:
3602
3602
  return None
3603
3603
  try:
3604
3604
  self._exit_contexts()
3605
- except Exception: # noqa
3605
+ except BaseException: # noqa
3606
3606
  es.__exit__(*sys.exc_info())
3607
3607
  raise
3608
3608
  return es.__exit__(exc_type, exc_val, exc_tb)
@@ -3650,7 +3650,7 @@ class AsyncExitStacked:
3650
3650
  await es.__aenter__()
3651
3651
  try:
3652
3652
  await self._async_enter_contexts()
3653
- except Exception: # noqa
3653
+ except BaseException: # noqa
3654
3654
  await es.__aexit__(*sys.exc_info())
3655
3655
  raise
3656
3656
  return self
@@ -3661,7 +3661,7 @@ class AsyncExitStacked:
3661
3661
  return None
3662
3662
  try:
3663
3663
  await self._async_exit_contexts()
3664
- except Exception: # noqa
3664
+ except BaseException: # noqa
3665
3665
  await es.__aexit__(*sys.exc_info())
3666
3666
  raise
3667
3667
  return await es.__aexit__(exc_type, exc_val, exc_tb)
@@ -1726,6 +1726,36 @@ class HttpProtocolVersions:
1726
1726
  HTTP_2_0 = HttpProtocolVersion(2, 0)
1727
1727
 
1728
1728
 
1729
+ ########################################
1730
+ # ../../../omlish/io/readers.py
1731
+
1732
+
1733
+ ##
1734
+
1735
+
1736
+ class RawBytesReader(ta.Protocol):
1737
+ def read1(self, /, n: int = -1) -> bytes: ...
1738
+
1739
+
1740
+ class BufferedBytesReader(RawBytesReader, ta.Protocol):
1741
+ def read(self, /, n: int = -1) -> bytes: ...
1742
+
1743
+ def readall(self) -> bytes: ...
1744
+
1745
+
1746
+ #
1747
+
1748
+
1749
+ class AsyncRawBytesReader(ta.Protocol):
1750
+ def read1(self, /, n: int = -1) -> ta.Awaitable[bytes]: ...
1751
+
1752
+
1753
+ class AsyncBufferedBytesReader(AsyncRawBytesReader, ta.Protocol):
1754
+ def read(self, /, n: int = -1) -> ta.Awaitable[bytes]: ...
1755
+
1756
+ def readall(self) -> ta.Awaitable[bytes]: ...
1757
+
1758
+
1729
1759
  ########################################
1730
1760
  # ../../../omlish/lite/abstract.py
1731
1761
 
@@ -4763,6 +4793,10 @@ class HttpRequestParser:
4763
4793
 
4764
4794
  ########################################
4765
4795
  # ../../../omlish/io/buffers.py
4796
+ """
4797
+ TODO:
4798
+ - overhaul and just coro-ify pyio?
4799
+ """
4766
4800
 
4767
4801
 
4768
4802
  ##
@@ -4941,6 +4975,9 @@ class ReadableListBuffer:
4941
4975
 
4942
4976
  self._lst: list[bytes] = []
4943
4977
 
4978
+ def __bool__(self) -> ta.NoReturn:
4979
+ raise TypeError("Use 'buf is not None' or 'len(buf)'.")
4980
+
4944
4981
  def __len__(self) -> int:
4945
4982
  return sum(map(len, self._lst))
4946
4983
 
@@ -5007,6 +5044,110 @@ class ReadableListBuffer:
5007
5044
  r = self.read_until_(delim)
5008
5045
  return r if isinstance(r, bytes) else None
5009
5046
 
5047
+ #
5048
+
5049
+ DEFAULT_BUFFERED_READER_CHUNK_SIZE: ta.ClassVar[int] = -1
5050
+
5051
+ @ta.final
5052
+ class _BufferedBytesReader(BufferedBytesReader):
5053
+ def __init__(
5054
+ self,
5055
+ raw: RawBytesReader,
5056
+ buf: 'ReadableListBuffer',
5057
+ *,
5058
+ chunk_size: ta.Optional[int] = None,
5059
+ ) -> None:
5060
+ self._raw = raw
5061
+ self._buf = buf
5062
+ self._chunk_size = chunk_size or ReadableListBuffer.DEFAULT_BUFFERED_READER_CHUNK_SIZE
5063
+
5064
+ def read1(self, /, n: int = -1) -> bytes:
5065
+ if n < 0:
5066
+ n = self._chunk_size
5067
+ if not n:
5068
+ return b''
5069
+ if 0 < n <= len(self._buf):
5070
+ return self._buf.read(n) or b''
5071
+ return self._raw.read1(n)
5072
+
5073
+ def read(self, /, n: int = -1) -> bytes:
5074
+ if n < 0:
5075
+ return self.readall()
5076
+ while len(self._buf) < n:
5077
+ if not (b := self._raw.read1(n)):
5078
+ break
5079
+ self._buf.feed(b)
5080
+ return self._buf.read(n) or b''
5081
+
5082
+ def readall(self) -> bytes:
5083
+ buf = io.BytesIO()
5084
+ buf.write(self._buf.read() or b'')
5085
+ while (b := self._raw.read1(self._chunk_size)):
5086
+ buf.write(b)
5087
+ return buf.getvalue()
5088
+
5089
+ def new_buffered_reader(
5090
+ self,
5091
+ raw: RawBytesReader,
5092
+ *,
5093
+ chunk_size: ta.Optional[int] = None,
5094
+ ) -> BufferedBytesReader:
5095
+ return self._BufferedBytesReader(
5096
+ raw,
5097
+ self,
5098
+ chunk_size=chunk_size,
5099
+ )
5100
+
5101
+ @ta.final
5102
+ class _AsyncBufferedBytesReader(AsyncBufferedBytesReader):
5103
+ def __init__(
5104
+ self,
5105
+ raw: AsyncRawBytesReader,
5106
+ buf: 'ReadableListBuffer',
5107
+ *,
5108
+ chunk_size: ta.Optional[int] = None,
5109
+ ) -> None:
5110
+ self._raw = raw
5111
+ self._buf = buf
5112
+ self._chunk_size = chunk_size or ReadableListBuffer.DEFAULT_BUFFERED_READER_CHUNK_SIZE
5113
+
5114
+ async def read1(self, /, n: int = -1) -> bytes:
5115
+ if n < 0:
5116
+ n = self._chunk_size
5117
+ if not n:
5118
+ return b''
5119
+ if 0 < n <= len(self._buf):
5120
+ return self._buf.read(n) or b''
5121
+ return await self._raw.read1(n)
5122
+
5123
+ async def read(self, /, n: int = -1) -> bytes:
5124
+ if n < 0:
5125
+ return await self.readall()
5126
+ while len(self._buf) < n:
5127
+ if not (b := await self._raw.read1(n)):
5128
+ break
5129
+ self._buf.feed(b)
5130
+ return self._buf.read(n) or b''
5131
+
5132
+ async def readall(self) -> bytes:
5133
+ buf = io.BytesIO()
5134
+ buf.write(self._buf.read() or b'')
5135
+ while b := await self._raw.read1(self._chunk_size):
5136
+ buf.write(b)
5137
+ return buf.getvalue()
5138
+
5139
+ def new_async_buffered_reader(
5140
+ self,
5141
+ raw: AsyncRawBytesReader,
5142
+ *,
5143
+ chunk_size: ta.Optional[int] = None,
5144
+ ) -> AsyncBufferedBytesReader:
5145
+ return self._AsyncBufferedBytesReader(
5146
+ raw,
5147
+ self,
5148
+ chunk_size=chunk_size,
5149
+ )
5150
+
5010
5151
 
5011
5152
  ##
5012
5153
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ominfra
3
- Version: 0.0.0.dev472
3
+ Version: 0.0.0.dev473
4
4
  Summary: ominfra
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,8 +14,8 @@ 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: omdev==0.0.0.dev472
18
- Requires-Dist: omlish==0.0.0.dev472
17
+ Requires-Dist: omdev==0.0.0.dev473
18
+ Requires-Dist: omlish==0.0.0.dev473
19
19
  Provides-Extra: all
20
20
  Requires-Dist: paramiko~=4.0; extra == "all"
21
21
  Requires-Dist: asyncssh~=2.21; extra == "all"
@@ -1,5 +1,5 @@
1
- omdev==0.0.0.dev472
2
- omlish==0.0.0.dev472
1
+ omdev==0.0.0.dev473
2
+ omlish==0.0.0.dev473
3
3
 
4
4
  [all]
5
5
  paramiko~=4.0
@@ -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.dev472'
16
+ version = '0.0.0.dev473'
17
17
  classifiers = [
18
18
  'Development Status :: 2 - Pre-Alpha',
19
19
  'Intended Audience :: Developers',
@@ -24,8 +24,8 @@ classifiers = [
24
24
  ]
25
25
  description = 'ominfra'
26
26
  dependencies = [
27
- 'omdev == 0.0.0.dev472',
28
- 'omlish == 0.0.0.dev472',
27
+ 'omdev == 0.0.0.dev473',
28
+ 'omlish == 0.0.0.dev473',
29
29
  ]
30
30
 
31
31
  [project.optional-dependencies]
File without changes
File without changes
File without changes