ominfra 0.0.0.dev219__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.dev219/ominfra.egg-info → ominfra-0.0.0.dev220}/PKG-INFO +3 -3
  2. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/scripts/supervisor.py +66 -38
  3. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220/ominfra.egg-info}/PKG-INFO +3 -3
  4. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra.egg-info/requires.txt +2 -2
  5. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/pyproject.toml +3 -3
  6. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/LICENSE +0 -0
  7. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/MANIFEST.in +0 -0
  8. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/README.rst +0 -0
  9. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/.manifests.json +0 -0
  10. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/__about__.py +0 -0
  11. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/__init__.py +0 -0
  12. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/__init__.py +0 -0
  13. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/__init__.py +0 -0
  14. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/__main__.py +0 -0
  15. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/auth.py +0 -0
  16. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/cli.py +0 -0
  17. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/dataclasses.py +0 -0
  18. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/instancetypes/__init__.py +0 -0
  19. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/instancetypes/__main__.py +0 -0
  20. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/instancetypes/cache.json.gz +0 -0
  21. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/instancetypes/cache.py +0 -0
  22. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/instancetypes/cli.py +0 -0
  23. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/journald2aws/__init__.py +0 -0
  24. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/journald2aws/__main__.py +0 -0
  25. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/journald2aws/cursor.py +0 -0
  26. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/journald2aws/driver.py +0 -0
  27. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/journald2aws/main.py +0 -0
  28. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/journald2aws/poster.py +0 -0
  29. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/logs.py +0 -0
  30. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/metadata.py +0 -0
  31. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/__init__.py +0 -0
  32. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/base.py +0 -0
  33. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/gen/__init__.py +0 -0
  34. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/gen/__main__.py +0 -0
  35. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/gen/cli.py +0 -0
  36. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/gen/gen.py +0 -0
  37. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/services/__init__.py +0 -0
  38. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/services/ec2.py +0 -0
  39. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/services/lambda_.py +0 -0
  40. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/services/rds.py +0 -0
  41. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/services/s3.py +0 -0
  42. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/aws/models/services/services.toml +0 -0
  43. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/gcp/__init__.py +0 -0
  44. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/gcp/api.py +0 -0
  45. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/clouds/gcp/auth.py +0 -0
  46. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/commands/__init__.py +0 -0
  47. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/commands/runners.py +0 -0
  48. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/commands/ssh.py +0 -0
  49. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/journald/__init__.py +0 -0
  50. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/journald/fields.py +0 -0
  51. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/journald/genmessages.py +0 -0
  52. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/journald/messages.py +0 -0
  53. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/journald/tailer.py +0 -0
  54. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/__init__.py +0 -0
  55. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/__main__.py +0 -0
  56. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/bootstrap.py +0 -0
  57. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/bootstrap_.py +0 -0
  58. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/commands/__init__.py +0 -0
  59. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/commands/base.py +0 -0
  60. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/commands/inject.py +0 -0
  61. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/commands/injection.py +0 -0
  62. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/commands/local.py +0 -0
  63. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/commands/marshal.py +0 -0
  64. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/commands/ping.py +0 -0
  65. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/commands/subprocess.py +0 -0
  66. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/commands/types.py +0 -0
  67. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/config.py +0 -0
  68. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/__init__.py +0 -0
  69. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/apps.py +0 -0
  70. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/commands.py +0 -0
  71. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/conf/__init__.py +0 -0
  72. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/conf/inject.py +0 -0
  73. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/conf/manager.py +0 -0
  74. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/conf/specs.py +0 -0
  75. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/config.py +0 -0
  76. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/deploy.py +0 -0
  77. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/git.py +0 -0
  78. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/inject.py +0 -0
  79. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/injection.py +0 -0
  80. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/interp.py +0 -0
  81. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/nginx.py +0 -0
  82. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/paths/__init__.py +0 -0
  83. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/paths/inject.py +0 -0
  84. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/paths/manager.py +0 -0
  85. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/paths/owners.py +0 -0
  86. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/paths/paths.py +0 -0
  87. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/paths/specs.py +0 -0
  88. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/paths/types.py +0 -0
  89. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/specs.py +0 -0
  90. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/systemd.py +0 -0
  91. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/tags.py +0 -0
  92. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/tmp.py +0 -0
  93. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/types.py +0 -0
  94. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/deploy/venvs.py +0 -0
  95. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/inject.py +0 -0
  96. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/main.py +0 -0
  97. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/marshal.py +0 -0
  98. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/remote/__init__.py +0 -0
  99. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/remote/_main.py +0 -0
  100. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/remote/channel.py +0 -0
  101. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/remote/config.py +0 -0
  102. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/remote/connection.py +0 -0
  103. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/remote/execution.py +0 -0
  104. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/remote/inject.py +0 -0
  105. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/remote/payload.py +0 -0
  106. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/remote/spawning.py +0 -0
  107. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/system/__init__.py +0 -0
  108. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/system/commands.py +0 -0
  109. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/system/config.py +0 -0
  110. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/system/inject.py +0 -0
  111. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/system/packages.py +0 -0
  112. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/system/platforms.py +0 -0
  113. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/targets/__init__.py +0 -0
  114. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/targets/bestpython.py +0 -0
  115. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/targets/bestpython.sh +0 -0
  116. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/targets/connection.py +0 -0
  117. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/targets/inject.py +0 -0
  118. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/manage/targets/targets.py +0 -0
  119. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/pyremote.py +0 -0
  120. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/scripts/__init__.py +0 -0
  121. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/scripts/journald2aws.py +0 -0
  122. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/scripts/manage.py +0 -0
  123. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/LICENSE.txt +0 -0
  124. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/__init__.py +0 -0
  125. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/__main__.py +0 -0
  126. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/configs.py +0 -0
  127. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/dispatchers.py +0 -0
  128. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/dispatchersimpl.py +0 -0
  129. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/events.py +0 -0
  130. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/exceptions.py +0 -0
  131. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/groups.py +0 -0
  132. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/groupsimpl.py +0 -0
  133. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/http.py +0 -0
  134. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/inject.py +0 -0
  135. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/io.py +0 -0
  136. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/main.py +0 -0
  137. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/pipes.py +0 -0
  138. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/privileges.py +0 -0
  139. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/process.py +0 -0
  140. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/processimpl.py +0 -0
  141. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/setup.py +0 -0
  142. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/setupimpl.py +0 -0
  143. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/signals.py +0 -0
  144. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/spawning.py +0 -0
  145. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/spawningimpl.py +0 -0
  146. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/states.py +0 -0
  147. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/supervisor.py +0 -0
  148. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/types.py +0 -0
  149. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/__init__.py +0 -0
  150. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/collections.py +0 -0
  151. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/diag.py +0 -0
  152. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/fds.py +0 -0
  153. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/fs.py +0 -0
  154. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/os.py +0 -0
  155. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/ostypes.py +0 -0
  156. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/signals.py +0 -0
  157. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/strings.py +0 -0
  158. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/supervisor/utils/users.py +0 -0
  159. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/systemd.py +0 -0
  160. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/tailscale/__init__.py +0 -0
  161. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/tailscale/api.py +0 -0
  162. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/tailscale/cli.py +0 -0
  163. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/threadworkers.py +0 -0
  164. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/tools/__init__.py +0 -0
  165. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra/tools/listresources.py +0 -0
  166. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra.egg-info/SOURCES.txt +0 -0
  167. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra.egg-info/dependency_links.txt +0 -0
  168. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra.egg-info/entry_points.txt +0 -0
  169. {ominfra-0.0.0.dev219 → ominfra-0.0.0.dev220}/ominfra.egg-info/top_level.txt +0 -0
  170. {ominfra-0.0.0.dev219 → 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.dev219
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.dev219
16
- Requires-Dist: omlish==0.0.0.dev219
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"
@@ -6850,12 +6850,20 @@ class HttpHandlerResponse:
6850
6850
  data: ta.Optional[HttpHandlerResponseData] = None
6851
6851
  close_connection: ta.Optional[bool] = None
6852
6852
 
6853
+ def close(self) -> None:
6854
+ if isinstance(d := self.data, HttpHandlerResponseStreamedData):
6855
+ d.close()
6856
+
6853
6857
 
6854
6858
  @dc.dataclass(frozen=True)
6855
6859
  class HttpHandlerResponseStreamedData:
6856
6860
  iter: ta.Iterable[bytes]
6857
6861
  length: ta.Optional[int] = None
6858
6862
 
6863
+ def close(self) -> None:
6864
+ if hasattr(d := self.iter, 'close'):
6865
+ d.close() # noqa
6866
+
6859
6867
 
6860
6868
  class HttpHandlerError(Exception):
6861
6869
  pass
@@ -7383,6 +7391,10 @@ class CoroHttpServer:
7383
7391
  return h
7384
7392
  return None
7385
7393
 
7394
+ def close(self) -> None:
7395
+ if isinstance(d := self.data, HttpHandlerResponseStreamedData):
7396
+ d.close()
7397
+
7386
7398
  #
7387
7399
 
7388
7400
  def _build_response_head_bytes(self, a: _Response) -> bytes:
@@ -7598,35 +7610,45 @@ class CoroHttpServer:
7598
7610
  while True:
7599
7611
  gen = self.coro_handle_one()
7600
7612
 
7601
- o = next(gen)
7602
7613
  i: ta.Optional[bytes]
7614
+ o: ta.Any = next(gen)
7603
7615
  while True:
7604
- if isinstance(o, self.AnyLogIo):
7605
- i = None
7606
- yield o
7616
+ try:
7617
+ if isinstance(o, self.AnyLogIo):
7618
+ i = None
7619
+ yield o
7607
7620
 
7608
- elif isinstance(o, self.AnyReadIo):
7609
- i = check.isinstance((yield o), bytes)
7621
+ elif isinstance(o, self.AnyReadIo):
7622
+ i = check.isinstance((yield o), bytes)
7610
7623
 
7611
- elif isinstance(o, self._Response):
7612
- i = None
7624
+ elif isinstance(o, self._Response):
7625
+ i = None
7613
7626
 
7614
- r = self._preprocess_response(o)
7615
- hb = self._build_response_head_bytes(r)
7616
- 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)))
7617
7630
 
7618
- for b in self._yield_response_data(r):
7619
- yield self.WriteIo(b)
7631
+ for b in self._yield_response_data(r):
7632
+ yield self.WriteIo(b)
7620
7633
 
7621
- else:
7622
- raise TypeError(o)
7634
+ o.close()
7635
+ o = None
7623
7636
 
7624
- try:
7625
- o = gen.send(i)
7626
- except EOFError:
7627
- return
7628
- except StopIteration:
7629
- 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
7630
7652
 
7631
7653
  def coro_handle_one(self) -> ta.Generator[
7632
7654
  ta.Union[AnyLogIo, AnyReadIo, _Response],
@@ -7708,28 +7730,34 @@ class CoroHttpServer:
7708
7730
  yield self._build_error_response(err)
7709
7731
  return
7710
7732
 
7711
- # Build internal response
7733
+ try:
7734
+ # Build internal response
7712
7735
 
7713
- response_headers = handler_response.headers or {}
7714
- response_data = handler_response.data
7736
+ response_headers = handler_response.headers or {}
7737
+ response_data = handler_response.data
7715
7738
 
7716
- headers: ta.List[CoroHttpServer._Header] = [
7717
- *self._make_default_headers(),
7718
- ]
7739
+ headers: ta.List[CoroHttpServer._Header] = [
7740
+ *self._make_default_headers(),
7741
+ ]
7719
7742
 
7720
- for k, v in response_headers.items():
7721
- headers.append(self._Header(k, v))
7743
+ for k, v in response_headers.items():
7744
+ headers.append(self._Header(k, v))
7722
7745
 
7723
- if handler_response.close_connection and 'Connection' not in headers:
7724
- headers.append(self._Header('Connection', 'close'))
7746
+ if handler_response.close_connection and 'Connection' not in headers:
7747
+ headers.append(self._Header('Connection', 'close'))
7725
7748
 
7726
- yield self._Response(
7727
- version=parsed.version,
7728
- code=http.HTTPStatus(handler_response.status),
7729
- headers=headers,
7730
- data=response_data,
7731
- close_connection=handler_response.close_connection,
7732
- )
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
7733
7761
 
7734
7762
 
7735
7763
  ##
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ominfra
3
- Version: 0.0.0.dev219
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.dev219
16
- Requires-Dist: omlish==0.0.0.dev219
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.dev219
2
- omlish==0.0.0.dev219
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.dev219'
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.dev219',
26
- 'omlish == 0.0.0.dev219',
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