omdev 0.0.0.dev432__tar.gz → 0.0.0.dev434__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 (333) hide show
  1. {omdev-0.0.0.dev432/omdev.egg-info → omdev-0.0.0.dev434}/PKG-INFO +4 -4
  2. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/.omlish-manifests.json +1 -1
  3. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/__about__.py +1 -1
  4. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/scripts/execstat.py +20 -20
  5. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/scripts/ci.py +33 -22
  6. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/scripts/pyproject.py +33 -22
  7. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434/omdev.egg-info}/PKG-INFO +4 -4
  8. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev.egg-info/requires.txt +3 -3
  9. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/pyproject.toml +4 -4
  10. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/LICENSE +0 -0
  11. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/MANIFEST.in +0 -0
  12. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/README.md +0 -0
  13. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/__init__.py +0 -0
  14. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/amalg/__init__.py +0 -0
  15. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/amalg/__main__.py +0 -0
  16. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/amalg/cli/__init__.py +0 -0
  17. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/amalg/cli/main.py +0 -0
  18. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/amalg/gen/__init__.py +0 -0
  19. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/amalg/gen/gen.py +0 -0
  20. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/amalg/gen/imports.py +0 -0
  21. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/amalg/gen/manifests.py +0 -0
  22. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/amalg/gen/resources.py +0 -0
  23. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/amalg/gen/srcfiles.py +0 -0
  24. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/amalg/gen/strip.py +0 -0
  25. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/amalg/gen/types.py +0 -0
  26. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/amalg/gen/typing.py +0 -0
  27. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/amalg/sources.py +0 -0
  28. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/__init__.py +0 -0
  29. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/compute/__init__.py +0 -0
  30. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/compute/cache.py +0 -0
  31. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/compute/contexts.py +0 -0
  32. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/compute/currents.py +0 -0
  33. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/compute/fns.py +0 -0
  34. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/compute/resolvers.py +0 -0
  35. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/compute/storage.py +0 -0
  36. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/compute/types.py +0 -0
  37. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/data/__init__.py +0 -0
  38. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/data/actions.py +0 -0
  39. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/data/cache.py +0 -0
  40. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/data/consts.py +0 -0
  41. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/data/defaults.py +0 -0
  42. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/data/manifests.py +0 -0
  43. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cache/data/specs.py +0 -0
  44. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/capi/__init__.py +0 -0
  45. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/capi/darwin/__init__.py +0 -0
  46. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/capi/darwin/aps.py +0 -0
  47. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/capi/darwin/ax.py +0 -0
  48. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/capi/darwin/cf.py +0 -0
  49. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/capi/darwin/cg.py +0 -0
  50. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/capi/linux/__init__.py +0 -0
  51. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/capi/linux/x11.py +0 -0
  52. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cc/__init__.py +0 -0
  53. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cc/__main__.py +0 -0
  54. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cc/cdeps.py +0 -0
  55. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cc/cdeps.toml +0 -0
  56. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cc/cli.py +0 -0
  57. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cc/srclangs.py +0 -0
  58. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/__init__.py +0 -0
  59. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_boilerplate.cc +0 -0
  60. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/LICENSE +0 -0
  61. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/__init__.py +0 -0
  62. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/build_ext.py +0 -0
  63. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  64. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  65. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/compilers/options.py +0 -0
  66. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  67. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/dir_util.py +0 -0
  68. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/errors.py +0 -0
  69. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/extension.py +0 -0
  70. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/file_util.py +0 -0
  71. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/modified.py +0 -0
  72. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/spawn.py +0 -0
  73. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/sysconfig.py +0 -0
  74. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/util.py +0 -0
  75. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/_distutils/version.py +0 -0
  76. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/build.py +0 -0
  77. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/cmake.py +0 -0
  78. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/importhook.py +0 -0
  79. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/magic.py +0 -0
  80. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cexts/scan.py +0 -0
  81. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/__init__.py +0 -0
  82. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/__main__.py +0 -0
  83. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/cache.py +0 -0
  84. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/ci.py +0 -0
  85. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/cli.py +0 -0
  86. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/compose.py +0 -0
  87. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/consts.py +0 -0
  88. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/docker/__init__.py +0 -0
  89. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/docker/buildcaching.py +0 -0
  90. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/docker/cache.py +0 -0
  91. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/docker/cacheserved/__init__.py +0 -0
  92. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/docker/cacheserved/cache.py +0 -0
  93. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/docker/cacheserved/manifests.py +0 -0
  94. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/docker/cmds.py +0 -0
  95. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/docker/dataserver.py +0 -0
  96. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/docker/imagepulling.py +0 -0
  97. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/docker/inject.py +0 -0
  98. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/docker/packing.py +0 -0
  99. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/docker/repositories.py +0 -0
  100. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/docker/utils.py +0 -0
  101. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/github/__init__.py +0 -0
  102. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/github/api/__init__.py +0 -0
  103. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/github/api/clients.py +0 -0
  104. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/github/api/v1/__init__.py +0 -0
  105. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/github/api/v1/api.py +0 -0
  106. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/github/api/v1/client.py +0 -0
  107. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/github/api/v2/__init__.py +0 -0
  108. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/github/api/v2/api.py +0 -0
  109. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/github/api/v2/azure.py +0 -0
  110. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/github/api/v2/client.py +0 -0
  111. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/github/bootstrap.py +0 -0
  112. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/github/cache.py +0 -0
  113. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/github/cli.py +0 -0
  114. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/github/env.py +0 -0
  115. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/github/inject.py +0 -0
  116. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/inject.py +0 -0
  117. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/requirements.py +0 -0
  118. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/shell.py +0 -0
  119. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ci/utils.py +0 -0
  120. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cli/__init__.py +0 -0
  121. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cli/__main__.py +0 -0
  122. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cli/_pathhack.py +0 -0
  123. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cli/clicli.py +0 -0
  124. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cli/install.py +0 -0
  125. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cli/main.py +0 -0
  126. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cli/managers.py +0 -0
  127. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cli/types.py +0 -0
  128. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/clipboard/__init__.py +0 -0
  129. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/clipboard/clipboard.py +0 -0
  130. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/clipboard/darwin_cf.py +0 -0
  131. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/clipboard/linux_x11.py +0 -0
  132. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cmake.py +0 -0
  133. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cmdlog/__init__.py +0 -0
  134. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cmdlog/__main__.py +0 -0
  135. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cmdlog/_cmdlog.py +0 -0
  136. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cmdlog/cli.py +0 -0
  137. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/cmdlog/cmdlog.py +0 -0
  138. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/dataclasses/__init__.py +0 -0
  139. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/dataclasses/__main__.py +0 -0
  140. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/dataclasses/cli.py +0 -0
  141. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/dataclasses/codegen.py +0 -0
  142. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/dataserver/__init__.py +0 -0
  143. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/dataserver/handlers.py +0 -0
  144. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/dataserver/http.py +0 -0
  145. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/dataserver/routes.py +0 -0
  146. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/dataserver/server.py +0 -0
  147. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/dataserver/targets.py +0 -0
  148. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/git/__init__.py +0 -0
  149. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/git/magic.py +0 -0
  150. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/git/revisions.py +0 -0
  151. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/git/shallow.py +0 -0
  152. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/git/status.py +0 -0
  153. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/home/__init__.py +0 -0
  154. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/home/paths.py +0 -0
  155. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/home/secrets.py +0 -0
  156. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/home/shadow.py +0 -0
  157. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/imgur.py +0 -0
  158. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/intellij/__init__.py +0 -0
  159. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/intellij/cli.py +0 -0
  160. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/intellij/ides.py +0 -0
  161. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/intellij/open.py +0 -0
  162. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/__init__.py +0 -0
  163. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/__main__.py +0 -0
  164. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/cli.py +0 -0
  165. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/default.py +0 -0
  166. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/inject.py +0 -0
  167. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/inspect.py +0 -0
  168. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/providers/__init__.py +0 -0
  169. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/providers/base.py +0 -0
  170. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/providers/inject.py +0 -0
  171. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/providers/running.py +0 -0
  172. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/providers/standalone.py +0 -0
  173. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/providers/system.py +0 -0
  174. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/pyenv/__init__.py +0 -0
  175. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/pyenv/inject.py +0 -0
  176. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/pyenv/install.py +0 -0
  177. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/pyenv/provider.py +0 -0
  178. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/pyenv/pyenv.py +0 -0
  179. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/resolvers.py +0 -0
  180. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/types.py +0 -0
  181. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/uv/__init__.py +0 -0
  182. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/uv/inject.py +0 -0
  183. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/uv/provider.py +0 -0
  184. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/uv/uv.py +0 -0
  185. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/interp/venvs.py +0 -0
  186. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/magic/__init__.py +0 -0
  187. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/magic/__main__.py +0 -0
  188. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/magic/cli.py +0 -0
  189. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/magic/find.py +0 -0
  190. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/magic/magic.py +0 -0
  191. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/magic/prepare.py +0 -0
  192. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/magic/styles.py +0 -0
  193. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/manifests/__init__.py +0 -0
  194. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/manifests/__main__.py +0 -0
  195. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/manifests/_dumping.py +0 -0
  196. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/manifests/building.py +0 -0
  197. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/manifests/dumping.py +0 -0
  198. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/manifests/main.py +0 -0
  199. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/mypy/__init__.py +0 -0
  200. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/mypy/debug.py +0 -0
  201. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/mypy/report.py +0 -0
  202. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/oci/__init__.py +0 -0
  203. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/oci/building.py +0 -0
  204. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/oci/compression.py +0 -0
  205. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/oci/data.py +0 -0
  206. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/oci/datarefs.py +0 -0
  207. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/oci/dataserver.py +0 -0
  208. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/oci/loading.py +0 -0
  209. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/oci/media.py +0 -0
  210. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/oci/pack/__init__.py +0 -0
  211. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/oci/pack/packing.py +0 -0
  212. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/oci/pack/repositories.py +0 -0
  213. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/oci/pack/unpacking.py +0 -0
  214. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/oci/repositories.py +0 -0
  215. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/oci/tars.py +0 -0
  216. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/packaging/__init__.py +0 -0
  217. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/packaging/marshal.py +0 -0
  218. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/packaging/names.py +0 -0
  219. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/packaging/requires.py +0 -0
  220. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/packaging/revisions.py +0 -0
  221. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/packaging/specifiers.py +0 -0
  222. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/packaging/versions.py +0 -0
  223. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/packaging/wheelfile.py +0 -0
  224. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/pip.py +0 -0
  225. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/precheck/__init__.py +0 -0
  226. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/precheck/__main__.py +0 -0
  227. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/precheck/base.py +0 -0
  228. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/precheck/caches.py +0 -0
  229. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/precheck/git.py +0 -0
  230. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/precheck/imports.py +0 -0
  231. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/precheck/lite.py +0 -0
  232. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/precheck/main.py +0 -0
  233. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/precheck/manifests.py +0 -0
  234. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/precheck/scripts.py +0 -0
  235. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/precheck/unicode.py +0 -0
  236. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ptk/__init__.py +0 -0
  237. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ptk/apps/__init__.py +0 -0
  238. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ptk/apps/ncdu.py +0 -0
  239. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ptk/confirm.py +0 -0
  240. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ptk/markdown/LICENSE +0 -0
  241. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ptk/markdown/__init__.py +0 -0
  242. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ptk/markdown/__main__.py +0 -0
  243. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ptk/markdown/border.py +0 -0
  244. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ptk/markdown/cli.py +0 -0
  245. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ptk/markdown/markdown.py +0 -0
  246. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ptk/markdown/parser.py +0 -0
  247. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ptk/markdown/styles.py +0 -0
  248. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ptk/markdown/tags.py +0 -0
  249. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/ptk/markdown/utils.py +0 -0
  250. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/__init__.py +0 -0
  251. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/attrdocs.py +0 -0
  252. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/bracepy.py +0 -0
  253. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/classdot.py +0 -0
  254. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/docstrings/LICENSE +0 -0
  255. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/docstrings/__init__.py +0 -0
  256. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/docstrings/attrdoc.py +0 -0
  257. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/docstrings/common.py +0 -0
  258. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/docstrings/epydoc.py +0 -0
  259. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/docstrings/google.py +0 -0
  260. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/docstrings/numpydoc.py +0 -0
  261. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/docstrings/parser.py +0 -0
  262. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/docstrings/rest.py +0 -0
  263. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/findimports.py +0 -0
  264. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/scripts/__init__.py +0 -0
  265. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/scripts/bumpversion.py +0 -0
  266. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/scripts/importtrace.py +0 -0
  267. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/srcheaders.py +0 -0
  268. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/tools/__init__.py +0 -0
  269. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/tools/importscan.py +0 -0
  270. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/py/tools/mkrelimp.py +0 -0
  271. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/pyproject/__init__.py +0 -0
  272. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/pyproject/__main__.py +0 -0
  273. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/pyproject/cexts.py +0 -0
  274. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/pyproject/cli.py +0 -0
  275. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/pyproject/configs.py +0 -0
  276. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/pyproject/inject.py +0 -0
  277. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/pyproject/pkg.py +0 -0
  278. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/pyproject/reqs.py +0 -0
  279. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/pyproject/resources/__init__.py +0 -0
  280. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/pyproject/resources/docker-dev.sh +0 -0
  281. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/pyproject/resources/python.sh +0 -0
  282. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/pyproject/venvs.py +0 -0
  283. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/scripts/__init__.py +0 -0
  284. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/scripts/interp.py +0 -0
  285. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/scripts/slowcat.py +0 -0
  286. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/scripts/tmpexec.py +0 -0
  287. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tagstrings.py +0 -0
  288. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tokens/__init__.py +0 -0
  289. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tokens/all.py +0 -0
  290. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tokens/tokenizert.py +0 -0
  291. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tokens/utils.py +0 -0
  292. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/__init__.py +0 -0
  293. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/cloc.py +0 -0
  294. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/diff.py +0 -0
  295. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/doc.py +0 -0
  296. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/docker.py +0 -0
  297. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/git/__init__.py +0 -0
  298. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/git/__main__.py +0 -0
  299. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/git/cli.py +0 -0
  300. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/git/cloning.py +0 -0
  301. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/git/consts.py +0 -0
  302. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/git/messages.py +0 -0
  303. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/json/__init__.py +0 -0
  304. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/json/__main__.py +0 -0
  305. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/json/cli.py +0 -0
  306. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/json/formats.py +0 -0
  307. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/json/io.py +0 -0
  308. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/json/parsing.py +0 -0
  309. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/json/processing.py +0 -0
  310. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/json/rendering.py +0 -0
  311. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/jsonview/__init__.py +0 -0
  312. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/jsonview/__main__.py +0 -0
  313. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/jsonview/cli.py +0 -0
  314. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/jsonview/resources/__init__.py +0 -0
  315. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/jsonview/resources/jsonview.css +0 -0
  316. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/jsonview/resources/jsonview.js +0 -0
  317. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/linehisto.py +0 -0
  318. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/mkenv.py +0 -0
  319. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/notebook.py +0 -0
  320. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/pawk/__init__.py +0 -0
  321. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/pawk/__main__.py +0 -0
  322. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/pawk/pawk.py +0 -0
  323. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/pip.py +0 -0
  324. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/prof.py +0 -0
  325. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/qr.py +0 -0
  326. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/shadow.py +0 -0
  327. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/shell.py +0 -0
  328. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev/tools/sqlrepl.py +0 -0
  329. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev.egg-info/SOURCES.txt +0 -0
  330. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev.egg-info/dependency_links.txt +0 -0
  331. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev.egg-info/entry_points.txt +0 -0
  332. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/omdev.egg-info/top_level.txt +0 -0
  333. {omdev-0.0.0.dev432 → omdev-0.0.0.dev434}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev432
3
+ Version: 0.0.0.dev434
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,10 +14,10 @@ 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.dev432
17
+ Requires-Dist: omlish==0.0.0.dev434
18
18
  Provides-Extra: all
19
19
  Requires-Dist: black~=25.1; extra == "all"
20
- Requires-Dist: pycparser~=2.22; extra == "all"
20
+ Requires-Dist: pycparser~=2.23; extra == "all"
21
21
  Requires-Dist: pcpp~=1.30; extra == "all"
22
22
  Requires-Dist: docutils~=0.22; extra == "all"
23
23
  Requires-Dist: markdown-it-py~=4.0; extra == "all"
@@ -30,7 +30,7 @@ Requires-Dist: segno~=1.6; extra == "all"
30
30
  Provides-Extra: black
31
31
  Requires-Dist: black~=25.1; extra == "black"
32
32
  Provides-Extra: c
33
- Requires-Dist: pycparser~=2.22; extra == "c"
33
+ Requires-Dist: pycparser~=2.23; extra == "c"
34
34
  Requires-Dist: pcpp~=1.30; extra == "c"
35
35
  Provides-Extra: doc
36
36
  Requires-Dist: docutils~=0.22; extra == "doc"
@@ -236,7 +236,7 @@
236
236
  "module": ".py.scripts.execstat",
237
237
  "attr": "_CLI_MODULE",
238
238
  "file": "omdev/py/scripts/execstat.py",
239
- "line": 89,
239
+ "line": 92,
240
240
  "value": {
241
241
  "!.cli.types.CliModule": {
242
242
  "name": "py/execstat",
@@ -17,7 +17,7 @@ class Project(ProjectBase):
17
17
  ],
18
18
 
19
19
  'c': [
20
- 'pycparser ~= 2.22',
20
+ 'pycparser ~= 2.23',
21
21
  'pcpp ~= 1.30',
22
22
  ],
23
23
 
@@ -17,13 +17,14 @@ import typing as ta
17
17
 
18
18
 
19
19
  def _run(
20
+ report: 'ta.Callable[[dict], None]',
20
21
  src: str,
21
22
  *,
22
23
  setup: 'ta.Optional[str]' = None,
23
24
  time: bool = False,
24
25
  rss: bool = False,
25
26
  modules: bool = False,
26
- ) -> dict:
27
+ ) -> None:
27
28
  if rss:
28
29
  import resource # noqa
29
30
 
@@ -61,26 +62,28 @@ def _run(
61
62
 
62
63
  #
63
64
 
64
- exec(code, globals(), ns)
65
+ try:
66
+ exec(code, globals(), ns)
65
67
 
66
- #
68
+ finally:
69
+ #
67
70
 
68
- if time:
69
- end_time = get_time()
71
+ if time:
72
+ end_time = get_time()
70
73
 
71
- if rss:
72
- end_rss = get_rss()
74
+ if rss:
75
+ end_rss = get_rss()
73
76
 
74
- if modules:
75
- end_modules = get_modules()
77
+ if modules:
78
+ end_modules = get_modules()
76
79
 
77
- #
80
+ #
78
81
 
79
- return {
80
- **({'time': (end_time - start_time)} if time else {}), # noqa
81
- **({'rss': (end_rss - start_rss)} if rss else {}), # noqa
82
- **({'modules': [m for m in end_modules if m not in start_modules]} if modules else {}), # noqa
83
- }
82
+ report({
83
+ **({'time': (end_time - start_time)} if time else {}), # noqa
84
+ **({'rss': (end_rss - start_rss)} if rss else {}), # noqa
85
+ **({'modules': [m for m in end_modules if m not in start_modules]} if modules else {}), # noqa
86
+ })
84
87
 
85
88
 
86
89
  #
@@ -145,13 +148,10 @@ def _main() -> None:
145
148
 
146
149
  payload = '\n'.join([
147
150
  inspect.getsource(_run),
148
- f'dct = _run(**{run_kw!r})',
149
- f'import json',
150
- f'with open({out_file!r}, "w") as f:', # noqa
151
- f' f.write(json.dumps(dct))',
151
+ f'with open({out_file!r}, "w") as f: _run(lambda dct: f.write(__import__("json").dumps(dct)), **{run_kw!r})', # noqa
152
152
  ])
153
153
 
154
- subprocess.check_call([exe, '-c', payload])
154
+ subprocess.call([exe, '-c', payload])
155
155
 
156
156
  with open(out_file) as f:
157
157
  result = json.load(f)
@@ -7713,16 +7713,17 @@ class CaptureLoggingContextImpl(CaptureLoggingContext):
7713
7713
  stack_offset: int = 0,
7714
7714
  stack_info: bool = False,
7715
7715
  ) -> None:
7716
- # TODO: Name, Msg, Extra
7717
-
7718
7716
  if time_ns is None:
7719
7717
  time_ns = time.time_ns()
7720
7718
 
7719
+ # Done early to not trample on sys.exc_info()
7720
+ exc = LoggingContextInfos.Exc.build(exc_info)
7721
+
7721
7722
  self._infos: ta.Dict[ta.Type[LoggingContextInfo], LoggingContextInfo] = {}
7722
7723
  self._set_info(
7723
7724
  LoggingContextInfos.Level.build(level),
7725
+ exc,
7724
7726
  LoggingContextInfos.Time.build(time_ns),
7725
- LoggingContextInfos.Exc.build(exc_info),
7726
7727
  )
7727
7728
 
7728
7729
  if caller is not CaptureLoggingContextImpl.NOT_SET:
@@ -9869,22 +9870,6 @@ class LoggingContextInfoRecordAdapters:
9869
9870
  args=rec.args,
9870
9871
  )
9871
9872
 
9872
- # FIXME: handled specially - all unknown attrs on LogRecord
9873
- # class Extra(Adapter[LoggingContextInfos.Extra]):
9874
- # _record_attrs: ta.ClassVar[ta.Mapping[str, ta.Union[ta.Any, ta.Tuple[ta.Any, ta.Any]]]] = dict()
9875
- #
9876
- # def info_to_record(self, info: ta.Optional[LoggingContextInfos.Extra]) -> ta.Mapping[str, ta.Any]:
9877
- # # FIXME:
9878
- # # if extra is not None:
9879
- # # for key in extra:
9880
- # # if (key in ["message", "asctime"]) or (key in rv.__dict__):
9881
- # # raise KeyError("Attempt to overwrite %r in LogRecord" % key)
9882
- # # rv.__dict__[key] = extra[key]
9883
- # return dict()
9884
- #
9885
- # def record_to_info(self, rec: logging.LogRecord) -> ta.Optional[LoggingContextInfos.Extra]:
9886
- # return None
9887
-
9888
9873
  class Time(RequiredAdapter[LoggingContextInfos.Time]):
9889
9874
  info_cls: ta.ClassVar[ta.Type[LoggingContextInfos.Time]] = LoggingContextInfos.Time
9890
9875
 
@@ -10265,13 +10250,20 @@ class LoggingContextLogRecord(logging.LogRecord):
10265
10250
  # - exc_info: LoggingExcInfoTuple | None
10266
10251
  # - func: str | None = None -> funcName
10267
10252
  # - sinfo: str | None = None -> stack_info
10253
+ #
10268
10254
 
10269
10255
  def __init__(self, *, _logging_context: LoggingContext) -> None: # noqa
10270
- self._logging_context = _logging_context
10256
+ self.__dict__.update(_logging_context=_logging_context)
10271
10257
 
10272
10258
  for ad in _LOGGING_CONTEXT_INFO_RECORD_ADAPTERS_:
10273
10259
  self.__dict__.update(ad.context_to_record(_logging_context))
10274
10260
 
10261
+ _logging_context: LoggingContext
10262
+
10263
+ # FIXME: track extra
10264
+ # def __setattr__(self, key, value):
10265
+ # super().__setattr__(key, value)
10266
+
10275
10267
 
10276
10268
  ##
10277
10269
 
@@ -10284,10 +10276,29 @@ class LogRecordLoggingContext(LoggingContext):
10284
10276
 
10285
10277
  self._rec = rec
10286
10278
 
10287
- self._infos: ta.Dict[ta.Type[LoggingContextInfo], LoggingContextInfo] = {
10288
- type(info): info
10279
+ infos: ta.List[LoggingContextInfo] = [
10280
+ info
10289
10281
  for ad in _LOGGING_CONTEXT_INFO_RECORD_ADAPTERS_
10290
10282
  if (info := ad.record_to_info(rec)) is not None
10283
+ ]
10284
+
10285
+ # FIXME:
10286
+ # if extra is not None:
10287
+ # for key in extra:
10288
+ # if (key in ["message", "asctime"]) or (key in rv.__dict__):
10289
+ # raise KeyError("Attempt to overwrite %r in LogRecord" % key)
10290
+ # rv.__dict__[key] = extra[key]
10291
+
10292
+ if (extra := {
10293
+ a: v
10294
+ for a, v in rec.__dict__.items()
10295
+ if a not in _KNOWN_STD_LOGGING_RECORD_ATTR_SET
10296
+ }):
10297
+ infos.append(LoggingContextInfos.Extra(extra))
10298
+
10299
+ self._infos: ta.Dict[ta.Type[LoggingContextInfo], LoggingContextInfo] = {
10300
+ type(info): info
10301
+ for info in infos
10291
10302
  }
10292
10303
 
10293
10304
  def get_info(self, ty: ta.Type[LoggingContextInfoT]) -> ta.Optional[LoggingContextInfoT]:
@@ -7176,16 +7176,17 @@ class CaptureLoggingContextImpl(CaptureLoggingContext):
7176
7176
  stack_offset: int = 0,
7177
7177
  stack_info: bool = False,
7178
7178
  ) -> None:
7179
- # TODO: Name, Msg, Extra
7180
-
7181
7179
  if time_ns is None:
7182
7180
  time_ns = time.time_ns()
7183
7181
 
7182
+ # Done early to not trample on sys.exc_info()
7183
+ exc = LoggingContextInfos.Exc.build(exc_info)
7184
+
7184
7185
  self._infos: ta.Dict[ta.Type[LoggingContextInfo], LoggingContextInfo] = {}
7185
7186
  self._set_info(
7186
7187
  LoggingContextInfos.Level.build(level),
7188
+ exc,
7187
7189
  LoggingContextInfos.Time.build(time_ns),
7188
- LoggingContextInfos.Exc.build(exc_info),
7189
7190
  )
7190
7191
 
7191
7192
  if caller is not CaptureLoggingContextImpl.NOT_SET:
@@ -8014,22 +8015,6 @@ class LoggingContextInfoRecordAdapters:
8014
8015
  args=rec.args,
8015
8016
  )
8016
8017
 
8017
- # FIXME: handled specially - all unknown attrs on LogRecord
8018
- # class Extra(Adapter[LoggingContextInfos.Extra]):
8019
- # _record_attrs: ta.ClassVar[ta.Mapping[str, ta.Union[ta.Any, ta.Tuple[ta.Any, ta.Any]]]] = dict()
8020
- #
8021
- # def info_to_record(self, info: ta.Optional[LoggingContextInfos.Extra]) -> ta.Mapping[str, ta.Any]:
8022
- # # FIXME:
8023
- # # if extra is not None:
8024
- # # for key in extra:
8025
- # # if (key in ["message", "asctime"]) or (key in rv.__dict__):
8026
- # # raise KeyError("Attempt to overwrite %r in LogRecord" % key)
8027
- # # rv.__dict__[key] = extra[key]
8028
- # return dict()
8029
- #
8030
- # def record_to_info(self, rec: logging.LogRecord) -> ta.Optional[LoggingContextInfos.Extra]:
8031
- # return None
8032
-
8033
8018
  class Time(RequiredAdapter[LoggingContextInfos.Time]):
8034
8019
  info_cls: ta.ClassVar[ta.Type[LoggingContextInfos.Time]] = LoggingContextInfos.Time
8035
8020
 
@@ -8410,13 +8395,20 @@ class LoggingContextLogRecord(logging.LogRecord):
8410
8395
  # - exc_info: LoggingExcInfoTuple | None
8411
8396
  # - func: str | None = None -> funcName
8412
8397
  # - sinfo: str | None = None -> stack_info
8398
+ #
8413
8399
 
8414
8400
  def __init__(self, *, _logging_context: LoggingContext) -> None: # noqa
8415
- self._logging_context = _logging_context
8401
+ self.__dict__.update(_logging_context=_logging_context)
8416
8402
 
8417
8403
  for ad in _LOGGING_CONTEXT_INFO_RECORD_ADAPTERS_:
8418
8404
  self.__dict__.update(ad.context_to_record(_logging_context))
8419
8405
 
8406
+ _logging_context: LoggingContext
8407
+
8408
+ # FIXME: track extra
8409
+ # def __setattr__(self, key, value):
8410
+ # super().__setattr__(key, value)
8411
+
8420
8412
 
8421
8413
  ##
8422
8414
 
@@ -8429,10 +8421,29 @@ class LogRecordLoggingContext(LoggingContext):
8429
8421
 
8430
8422
  self._rec = rec
8431
8423
 
8432
- self._infos: ta.Dict[ta.Type[LoggingContextInfo], LoggingContextInfo] = {
8433
- type(info): info
8424
+ infos: ta.List[LoggingContextInfo] = [
8425
+ info
8434
8426
  for ad in _LOGGING_CONTEXT_INFO_RECORD_ADAPTERS_
8435
8427
  if (info := ad.record_to_info(rec)) is not None
8428
+ ]
8429
+
8430
+ # FIXME:
8431
+ # if extra is not None:
8432
+ # for key in extra:
8433
+ # if (key in ["message", "asctime"]) or (key in rv.__dict__):
8434
+ # raise KeyError("Attempt to overwrite %r in LogRecord" % key)
8435
+ # rv.__dict__[key] = extra[key]
8436
+
8437
+ if (extra := {
8438
+ a: v
8439
+ for a, v in rec.__dict__.items()
8440
+ if a not in _KNOWN_STD_LOGGING_RECORD_ATTR_SET
8441
+ }):
8442
+ infos.append(LoggingContextInfos.Extra(extra))
8443
+
8444
+ self._infos: ta.Dict[ta.Type[LoggingContextInfo], LoggingContextInfo] = {
8445
+ type(info): info
8446
+ for info in infos
8436
8447
  }
8437
8448
 
8438
8449
  def get_info(self, ty: ta.Type[LoggingContextInfoT]) -> ta.Optional[LoggingContextInfoT]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev432
3
+ Version: 0.0.0.dev434
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,10 +14,10 @@ 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.dev432
17
+ Requires-Dist: omlish==0.0.0.dev434
18
18
  Provides-Extra: all
19
19
  Requires-Dist: black~=25.1; extra == "all"
20
- Requires-Dist: pycparser~=2.22; extra == "all"
20
+ Requires-Dist: pycparser~=2.23; extra == "all"
21
21
  Requires-Dist: pcpp~=1.30; extra == "all"
22
22
  Requires-Dist: docutils~=0.22; extra == "all"
23
23
  Requires-Dist: markdown-it-py~=4.0; extra == "all"
@@ -30,7 +30,7 @@ Requires-Dist: segno~=1.6; extra == "all"
30
30
  Provides-Extra: black
31
31
  Requires-Dist: black~=25.1; extra == "black"
32
32
  Provides-Extra: c
33
- Requires-Dist: pycparser~=2.22; extra == "c"
33
+ Requires-Dist: pycparser~=2.23; extra == "c"
34
34
  Requires-Dist: pcpp~=1.30; extra == "c"
35
35
  Provides-Extra: doc
36
36
  Requires-Dist: docutils~=0.22; extra == "doc"
@@ -1,8 +1,8 @@
1
- omlish==0.0.0.dev432
1
+ omlish==0.0.0.dev434
2
2
 
3
3
  [all]
4
4
  black~=25.1
5
- pycparser~=2.22
5
+ pycparser~=2.23
6
6
  pcpp~=1.30
7
7
  docutils~=0.22
8
8
  markdown-it-py~=4.0
@@ -17,7 +17,7 @@ segno~=1.6
17
17
  black~=25.1
18
18
 
19
19
  [c]
20
- pycparser~=2.22
20
+ pycparser~=2.23
21
21
  pcpp~=1.30
22
22
 
23
23
  [doc]
@@ -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.dev432'
16
+ version = '0.0.0.dev434'
17
17
  classifiers = [
18
18
  'Development Status :: 2 - Pre-Alpha',
19
19
  'Intended Audience :: Developers',
@@ -24,13 +24,13 @@ classifiers = [
24
24
  ]
25
25
  description = 'omdev'
26
26
  dependencies = [
27
- 'omlish == 0.0.0.dev432',
27
+ 'omlish == 0.0.0.dev434',
28
28
  ]
29
29
 
30
30
  [project.optional-dependencies]
31
31
  all = [
32
32
  'black ~= 25.1',
33
- 'pycparser ~= 2.22',
33
+ 'pycparser ~= 2.23',
34
34
  'pcpp ~= 1.30',
35
35
  'docutils ~= 0.22',
36
36
  'markdown-it-py ~= 4.0',
@@ -45,7 +45,7 @@ black = [
45
45
  'black ~= 25.1',
46
46
  ]
47
47
  c = [
48
- 'pycparser ~= 2.22',
48
+ 'pycparser ~= 2.23',
49
49
  'pcpp ~= 1.30',
50
50
  ]
51
51
  doc = [
File without changes
File without changes
File without changes