ominfra 0.0.0.dev218__tar.gz → 0.0.0.dev220__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.dev218/ominfra.egg-info → ominfra-0.0.0.dev220}/PKG-INFO +3 -3
  2. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/instancetypes/cli.py +1 -1
  3. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/scripts/supervisor.py +101 -48
  4. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/tools/listresources.py +1 -1
  5. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220/ominfra.egg-info}/PKG-INFO +3 -3
  6. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra.egg-info/requires.txt +2 -2
  7. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/pyproject.toml +3 -3
  8. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/LICENSE +0 -0
  9. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/MANIFEST.in +0 -0
  10. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/README.rst +0 -0
  11. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/.manifests.json +0 -0
  12. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/__about__.py +0 -0
  13. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/__init__.py +0 -0
  14. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/__init__.py +0 -0
  15. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/__init__.py +0 -0
  16. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/__main__.py +0 -0
  17. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/auth.py +0 -0
  18. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/cli.py +0 -0
  19. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/dataclasses.py +0 -0
  20. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/instancetypes/__init__.py +0 -0
  21. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/instancetypes/__main__.py +0 -0
  22. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/instancetypes/cache.json.gz +0 -0
  23. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/instancetypes/cache.py +0 -0
  24. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/journald2aws/__init__.py +0 -0
  25. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/journald2aws/__main__.py +0 -0
  26. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/journald2aws/cursor.py +0 -0
  27. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/journald2aws/driver.py +0 -0
  28. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/journald2aws/main.py +0 -0
  29. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/journald2aws/poster.py +0 -0
  30. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/logs.py +0 -0
  31. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/metadata.py +0 -0
  32. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/__init__.py +0 -0
  33. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/base.py +0 -0
  34. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/gen/__init__.py +0 -0
  35. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/gen/__main__.py +0 -0
  36. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/gen/cli.py +0 -0
  37. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/gen/gen.py +0 -0
  38. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/services/__init__.py +0 -0
  39. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/services/ec2.py +0 -0
  40. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/services/lambda_.py +0 -0
  41. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/services/rds.py +0 -0
  42. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/services/s3.py +0 -0
  43. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/services/services.toml +0 -0
  44. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/gcp/__init__.py +0 -0
  45. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/gcp/api.py +0 -0
  46. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/clouds/gcp/auth.py +0 -0
  47. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/commands/__init__.py +0 -0
  48. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/commands/runners.py +0 -0
  49. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/commands/ssh.py +0 -0
  50. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/journald/__init__.py +0 -0
  51. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/journald/fields.py +0 -0
  52. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/journald/genmessages.py +0 -0
  53. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/journald/messages.py +0 -0
  54. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/journald/tailer.py +0 -0
  55. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/__init__.py +0 -0
  56. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/__main__.py +0 -0
  57. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/bootstrap.py +0 -0
  58. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/bootstrap_.py +0 -0
  59. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/commands/__init__.py +0 -0
  60. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/commands/base.py +0 -0
  61. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/commands/inject.py +0 -0
  62. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/commands/injection.py +0 -0
  63. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/commands/local.py +0 -0
  64. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/commands/marshal.py +0 -0
  65. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/commands/ping.py +0 -0
  66. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/commands/subprocess.py +0 -0
  67. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/commands/types.py +0 -0
  68. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/config.py +0 -0
  69. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/__init__.py +0 -0
  70. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/apps.py +0 -0
  71. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/commands.py +0 -0
  72. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/conf/__init__.py +0 -0
  73. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/conf/inject.py +0 -0
  74. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/conf/manager.py +0 -0
  75. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/conf/specs.py +0 -0
  76. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/config.py +0 -0
  77. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/deploy.py +0 -0
  78. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/git.py +0 -0
  79. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/inject.py +0 -0
  80. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/injection.py +0 -0
  81. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/interp.py +0 -0
  82. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/nginx.py +0 -0
  83. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/paths/__init__.py +0 -0
  84. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/paths/inject.py +0 -0
  85. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/paths/manager.py +0 -0
  86. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/paths/owners.py +0 -0
  87. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/paths/paths.py +0 -0
  88. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/paths/specs.py +0 -0
  89. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/paths/types.py +0 -0
  90. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/specs.py +0 -0
  91. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/systemd.py +0 -0
  92. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/tags.py +0 -0
  93. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/tmp.py +0 -0
  94. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/types.py +0 -0
  95. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/venvs.py +0 -0
  96. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/inject.py +0 -0
  97. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/main.py +0 -0
  98. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/marshal.py +0 -0
  99. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/remote/__init__.py +0 -0
  100. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/remote/_main.py +0 -0
  101. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/remote/channel.py +0 -0
  102. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/remote/config.py +0 -0
  103. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/remote/connection.py +0 -0
  104. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/remote/execution.py +0 -0
  105. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/remote/inject.py +0 -0
  106. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/remote/payload.py +0 -0
  107. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/remote/spawning.py +0 -0
  108. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/system/__init__.py +0 -0
  109. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/system/commands.py +0 -0
  110. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/system/config.py +0 -0
  111. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/system/inject.py +0 -0
  112. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/system/packages.py +0 -0
  113. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/system/platforms.py +0 -0
  114. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/targets/__init__.py +0 -0
  115. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/targets/bestpython.py +0 -0
  116. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/targets/bestpython.sh +0 -0
  117. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/targets/connection.py +0 -0
  118. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/targets/inject.py +0 -0
  119. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/manage/targets/targets.py +0 -0
  120. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/pyremote.py +0 -0
  121. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/scripts/__init__.py +0 -0
  122. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/scripts/journald2aws.py +0 -0
  123. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/scripts/manage.py +0 -0
  124. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/LICENSE.txt +0 -0
  125. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/__init__.py +0 -0
  126. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/__main__.py +0 -0
  127. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/configs.py +0 -0
  128. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/dispatchers.py +0 -0
  129. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/dispatchersimpl.py +0 -0
  130. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/events.py +0 -0
  131. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/exceptions.py +0 -0
  132. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/groups.py +0 -0
  133. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/groupsimpl.py +0 -0
  134. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/http.py +0 -0
  135. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/inject.py +0 -0
  136. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/io.py +0 -0
  137. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/main.py +0 -0
  138. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/pipes.py +0 -0
  139. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/privileges.py +0 -0
  140. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/process.py +0 -0
  141. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/processimpl.py +0 -0
  142. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/setup.py +0 -0
  143. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/setupimpl.py +0 -0
  144. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/signals.py +0 -0
  145. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/spawning.py +0 -0
  146. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/spawningimpl.py +0 -0
  147. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/states.py +0 -0
  148. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/supervisor.py +0 -0
  149. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/types.py +0 -0
  150. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/__init__.py +0 -0
  151. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/collections.py +0 -0
  152. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/diag.py +0 -0
  153. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/fds.py +0 -0
  154. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/fs.py +0 -0
  155. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/os.py +0 -0
  156. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/ostypes.py +0 -0
  157. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/signals.py +0 -0
  158. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/strings.py +0 -0
  159. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/users.py +0 -0
  160. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/systemd.py +0 -0
  161. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/tailscale/__init__.py +0 -0
  162. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/tailscale/api.py +0 -0
  163. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/tailscale/cli.py +0 -0
  164. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/threadworkers.py +0 -0
  165. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra/tools/__init__.py +0 -0
  166. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra.egg-info/SOURCES.txt +0 -0
  167. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra.egg-info/dependency_links.txt +0 -0
  168. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra.egg-info/entry_points.txt +0 -0
  169. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/ominfra.egg-info/top_level.txt +0 -0
  170. {ominfra-0.0.0.dev218 → ominfra-0.0.0.dev220}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ominfra
3
- Version: 0.0.0.dev218
3
+ Version: 0.0.0.dev220
4
4
  Summary: ominfra
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,8 +12,8 @@ Classifier: Operating System :: OS Independent
12
12
  Classifier: Operating System :: POSIX
13
13
  Requires-Python: >=3.12
14
14
  License-File: LICENSE
15
- Requires-Dist: omdev==0.0.0.dev218
16
- Requires-Dist: omlish==0.0.0.dev218
15
+ Requires-Dist: omdev==0.0.0.dev220
16
+ Requires-Dist: omlish==0.0.0.dev220
17
17
  Provides-Extra: all
18
18
  Requires-Dist: paramiko~=3.5; extra == "all"
19
19
  Requires-Dist: asyncssh~=2.18; extra == "all"
@@ -5,9 +5,9 @@ import typing as ta
5
5
 
6
6
  from omdev.secrets import load_secrets
7
7
  from omlish import lang
8
- from omlish import secrets as sec
9
8
  from omlish.argparse import all as ap
10
9
  from omlish.formats import json
10
+ from omlish.secrets import all as sec
11
11
 
12
12
  from .cache import load_instance_types
13
13
 
@@ -71,6 +71,7 @@ import select
71
71
  import shlex
72
72
  import signal
73
73
  import socket
74
+ import socket as socket_
74
75
  import stat
75
76
  import string
76
77
  import sys
@@ -2820,15 +2821,15 @@ TODO:
2820
2821
  class SocketAddressInfoArgs:
2821
2822
  host: ta.Optional[str]
2822
2823
  port: ta.Union[str, int, None]
2823
- family: socket.AddressFamily = socket.AddressFamily.AF_UNSPEC
2824
+ family: socket_.AddressFamily = socket_.AddressFamily.AF_UNSPEC
2824
2825
  type: int = 0
2825
2826
  proto: int = 0
2826
- flags: socket.AddressInfo = socket.AddressInfo(0)
2827
+ flags: socket_.AddressInfo = socket_.AddressInfo(0)
2827
2828
 
2828
2829
 
2829
2830
  @dc.dataclass(frozen=True)
2830
2831
  class SocketAddressInfo:
2831
- family: socket.AddressFamily
2832
+ family: socket_.AddressFamily
2832
2833
  type: int
2833
2834
  proto: int
2834
2835
  canonname: ta.Optional[str]
@@ -2836,32 +2837,44 @@ class SocketAddressInfo:
2836
2837
 
2837
2838
 
2838
2839
  class SocketFamilyAndAddress(ta.NamedTuple):
2839
- family: socket.AddressFamily
2840
+ family: socket_.AddressFamily
2840
2841
  address: SocketAddress
2841
2842
 
2842
2843
 
2843
2844
  def get_best_socket_family(
2844
2845
  host: ta.Optional[str],
2845
2846
  port: ta.Union[str, int, None],
2846
- family: ta.Union[int, socket.AddressFamily] = socket.AddressFamily.AF_UNSPEC,
2847
+ family: ta.Union[int, socket_.AddressFamily] = socket_.AddressFamily.AF_UNSPEC,
2847
2848
  ) -> SocketFamilyAndAddress:
2848
2849
  """https://github.com/python/cpython/commit/f289084c83190cc72db4a70c58f007ec62e75247"""
2849
2850
 
2850
- infos = socket.getaddrinfo(
2851
+ infos = socket_.getaddrinfo(
2851
2852
  host,
2852
2853
  port,
2853
2854
  family,
2854
- type=socket.SOCK_STREAM,
2855
- flags=socket.AI_PASSIVE,
2855
+ type=socket_.SOCK_STREAM,
2856
+ flags=socket_.AI_PASSIVE,
2856
2857
  )
2857
2858
  ai = SocketAddressInfo(*next(iter(infos)))
2858
2859
  return SocketFamilyAndAddress(ai.family, ai.sockaddr)
2859
2860
 
2860
2861
 
2861
2862
  class SocketAndAddress(ta.NamedTuple):
2862
- socket: socket.socket
2863
+ socket: socket_.socket
2863
2864
  address: SocketAddress
2864
2865
 
2866
+ def wrap_socket(self, fn: ta.Callable[[socket_.socket], socket_.socket]):
2867
+ return self._replace(socket=fn(self.socket))
2868
+
2869
+ @classmethod
2870
+ def socket_wrapper(
2871
+ cls,
2872
+ fn: ta.Callable[[socket_.socket], socket_.socket],
2873
+ ) -> ta.Callable[['SocketAndAddress'], 'SocketAndAddress']:
2874
+ def inner(conn):
2875
+ return conn.wrap_socket(fn)
2876
+ return inner
2877
+
2865
2878
 
2866
2879
  ########################################
2867
2880
  # ../../../omlish/sockets/io.py
@@ -6391,6 +6404,12 @@ def journald_log_handler_factory(
6391
6404
  ##
6392
6405
 
6393
6406
 
6407
+ class SocketHandler_(abc.ABC): # noqa
6408
+ @abc.abstractmethod
6409
+ def __call__(self, addr: SocketAddress, f: SocketIoPair) -> None:
6410
+ raise NotImplementedError
6411
+
6412
+
6394
6413
  ########################################
6395
6414
  # ../configs.py
6396
6415
 
@@ -6831,12 +6850,20 @@ class HttpHandlerResponse:
6831
6850
  data: ta.Optional[HttpHandlerResponseData] = None
6832
6851
  close_connection: ta.Optional[bool] = None
6833
6852
 
6853
+ def close(self) -> None:
6854
+ if isinstance(d := self.data, HttpHandlerResponseStreamedData):
6855
+ d.close()
6856
+
6834
6857
 
6835
6858
  @dc.dataclass(frozen=True)
6836
6859
  class HttpHandlerResponseStreamedData:
6837
6860
  iter: ta.Iterable[bytes]
6838
6861
  length: ta.Optional[int] = None
6839
6862
 
6863
+ def close(self) -> None:
6864
+ if hasattr(d := self.iter, 'close'):
6865
+ d.close() # noqa
6866
+
6840
6867
 
6841
6868
  class HttpHandlerError(Exception):
6842
6869
  pass
@@ -6846,6 +6873,12 @@ class UnsupportedMethodHttpHandlerError(Exception):
6846
6873
  pass
6847
6874
 
6848
6875
 
6876
+ class HttpHandler_(abc.ABC): # noqa
6877
+ @abc.abstractmethod
6878
+ def __call__(self, req: HttpHandlerRequest) -> HttpHandlerResponse:
6879
+ raise NotImplementedError
6880
+
6881
+
6849
6882
  ########################################
6850
6883
  # ../../../omlish/lite/configs.py
6851
6884
 
@@ -7358,6 +7391,10 @@ class CoroHttpServer:
7358
7391
  return h
7359
7392
  return None
7360
7393
 
7394
+ def close(self) -> None:
7395
+ if isinstance(d := self.data, HttpHandlerResponseStreamedData):
7396
+ d.close()
7397
+
7361
7398
  #
7362
7399
 
7363
7400
  def _build_response_head_bytes(self, a: _Response) -> bytes:
@@ -7573,35 +7610,45 @@ class CoroHttpServer:
7573
7610
  while True:
7574
7611
  gen = self.coro_handle_one()
7575
7612
 
7576
- o = next(gen)
7577
7613
  i: ta.Optional[bytes]
7614
+ o: ta.Any = next(gen)
7578
7615
  while True:
7579
- if isinstance(o, self.AnyLogIo):
7580
- i = None
7581
- yield o
7616
+ try:
7617
+ if isinstance(o, self.AnyLogIo):
7618
+ i = None
7619
+ yield o
7582
7620
 
7583
- elif isinstance(o, self.AnyReadIo):
7584
- i = check.isinstance((yield o), bytes)
7621
+ elif isinstance(o, self.AnyReadIo):
7622
+ i = check.isinstance((yield o), bytes)
7585
7623
 
7586
- elif isinstance(o, self._Response):
7587
- i = None
7624
+ elif isinstance(o, self._Response):
7625
+ i = None
7588
7626
 
7589
- r = self._preprocess_response(o)
7590
- hb = self._build_response_head_bytes(r)
7591
- check.none((yield self.WriteIo(hb)))
7627
+ r = self._preprocess_response(o)
7628
+ hb = self._build_response_head_bytes(r)
7629
+ check.none((yield self.WriteIo(hb)))
7592
7630
 
7593
- for b in self._yield_response_data(r):
7594
- yield self.WriteIo(b)
7631
+ for b in self._yield_response_data(r):
7632
+ yield self.WriteIo(b)
7595
7633
 
7596
- else:
7597
- raise TypeError(o)
7634
+ o.close()
7635
+ o = None
7598
7636
 
7599
- try:
7600
- o = gen.send(i)
7601
- except EOFError:
7602
- return
7603
- except StopIteration:
7604
- break
7637
+ else:
7638
+ raise TypeError(o) # noqa
7639
+
7640
+ try:
7641
+ o = gen.send(i)
7642
+ except EOFError:
7643
+ return
7644
+ except StopIteration:
7645
+ break
7646
+
7647
+ except Exception: # noqa
7648
+ if hasattr(o, 'close'):
7649
+ o.close()
7650
+
7651
+ raise
7605
7652
 
7606
7653
  def coro_handle_one(self) -> ta.Generator[
7607
7654
  ta.Union[AnyLogIo, AnyReadIo, _Response],
@@ -7683,34 +7730,40 @@ class CoroHttpServer:
7683
7730
  yield self._build_error_response(err)
7684
7731
  return
7685
7732
 
7686
- # Build internal response
7733
+ try:
7734
+ # Build internal response
7687
7735
 
7688
- response_headers = handler_response.headers or {}
7689
- response_data = handler_response.data
7736
+ response_headers = handler_response.headers or {}
7737
+ response_data = handler_response.data
7690
7738
 
7691
- headers: ta.List[CoroHttpServer._Header] = [
7692
- *self._make_default_headers(),
7693
- ]
7739
+ headers: ta.List[CoroHttpServer._Header] = [
7740
+ *self._make_default_headers(),
7741
+ ]
7694
7742
 
7695
- for k, v in response_headers.items():
7696
- headers.append(self._Header(k, v))
7743
+ for k, v in response_headers.items():
7744
+ headers.append(self._Header(k, v))
7697
7745
 
7698
- if handler_response.close_connection and 'Connection' not in headers:
7699
- headers.append(self._Header('Connection', 'close'))
7746
+ if handler_response.close_connection and 'Connection' not in headers:
7747
+ headers.append(self._Header('Connection', 'close'))
7700
7748
 
7701
- yield self._Response(
7702
- version=parsed.version,
7703
- code=http.HTTPStatus(handler_response.status),
7704
- headers=headers,
7705
- data=response_data,
7706
- close_connection=handler_response.close_connection,
7707
- )
7749
+ yield self._Response(
7750
+ version=parsed.version,
7751
+ code=http.HTTPStatus(handler_response.status),
7752
+ headers=headers,
7753
+ data=response_data,
7754
+ close_connection=handler_response.close_connection,
7755
+ )
7756
+
7757
+ except Exception: # noqa
7758
+ handler_response.close()
7759
+
7760
+ raise
7708
7761
 
7709
7762
 
7710
7763
  ##
7711
7764
 
7712
7765
 
7713
- class CoroHttpServerSocketHandler: # SocketHandler
7766
+ class CoroHttpServerSocketHandler(SocketHandler_):
7714
7767
  def __init__(
7715
7768
  self,
7716
7769
  server_factory: CoroHttpServerFactory,
@@ -19,7 +19,7 @@ from omdev.secrets import load_secrets
19
19
  from omlish import check
20
20
  from omlish import dataclasses as dc
21
21
  from omlish import lang
22
- from omlish import secrets as sec
22
+ from omlish.secrets import all as sec
23
23
 
24
24
 
25
25
  ##
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ominfra
3
- Version: 0.0.0.dev218
3
+ Version: 0.0.0.dev220
4
4
  Summary: ominfra
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,8 +12,8 @@ Classifier: Operating System :: OS Independent
12
12
  Classifier: Operating System :: POSIX
13
13
  Requires-Python: >=3.12
14
14
  License-File: LICENSE
15
- Requires-Dist: omdev==0.0.0.dev218
16
- Requires-Dist: omlish==0.0.0.dev218
15
+ Requires-Dist: omdev==0.0.0.dev220
16
+ Requires-Dist: omlish==0.0.0.dev220
17
17
  Provides-Extra: all
18
18
  Requires-Dist: paramiko~=3.5; extra == "all"
19
19
  Requires-Dist: asyncssh~=2.18; extra == "all"
@@ -1,5 +1,5 @@
1
- omdev==0.0.0.dev218
2
- omlish==0.0.0.dev218
1
+ omdev==0.0.0.dev220
2
+ omlish==0.0.0.dev220
3
3
 
4
4
  [all]
5
5
  paramiko~=3.5
@@ -12,7 +12,7 @@ authors = [
12
12
  urls = {source = 'https://github.com/wrmsr/omlish'}
13
13
  license = {text = 'BSD-3-Clause'}
14
14
  requires-python = '>=3.12'
15
- version = '0.0.0.dev218'
15
+ version = '0.0.0.dev220'
16
16
  classifiers = [
17
17
  'License :: OSI Approved :: BSD License',
18
18
  'Development Status :: 2 - Pre-Alpha',
@@ -22,8 +22,8 @@ classifiers = [
22
22
  ]
23
23
  description = 'ominfra'
24
24
  dependencies = [
25
- 'omdev == 0.0.0.dev218',
26
- 'omlish == 0.0.0.dev218',
25
+ 'omdev == 0.0.0.dev220',
26
+ 'omlish == 0.0.0.dev220',
27
27
  ]
28
28
 
29
29
  [project.optional-dependencies]
File without changes
File without changes