omdev 0.0.0.dev429__tar.gz → 0.0.0.dev430__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.dev429/omdev.egg-info → omdev-0.0.0.dev430}/PKG-INFO +2 -2
  2. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/scripts/ci.py +67 -31
  3. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/scripts/interp.py +47 -13
  4. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/scripts/pyproject.py +67 -31
  5. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430/omdev.egg-info}/PKG-INFO +2 -2
  6. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev.egg-info/requires.txt +1 -1
  7. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/pyproject.toml +2 -2
  8. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/LICENSE +0 -0
  9. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/MANIFEST.in +0 -0
  10. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/README.md +0 -0
  11. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/.omlish-manifests.json +0 -0
  12. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/__about__.py +0 -0
  13. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/__init__.py +0 -0
  14. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/amalg/__init__.py +0 -0
  15. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/amalg/__main__.py +0 -0
  16. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/amalg/cli/__init__.py +0 -0
  17. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/amalg/cli/main.py +0 -0
  18. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/amalg/gen/__init__.py +0 -0
  19. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/amalg/gen/gen.py +0 -0
  20. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/amalg/gen/imports.py +0 -0
  21. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/amalg/gen/manifests.py +0 -0
  22. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/amalg/gen/resources.py +0 -0
  23. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/amalg/gen/srcfiles.py +0 -0
  24. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/amalg/gen/strip.py +0 -0
  25. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/amalg/gen/types.py +0 -0
  26. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/amalg/gen/typing.py +0 -0
  27. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/amalg/sources.py +0 -0
  28. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/__init__.py +0 -0
  29. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/compute/__init__.py +0 -0
  30. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/compute/cache.py +0 -0
  31. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/compute/contexts.py +0 -0
  32. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/compute/currents.py +0 -0
  33. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/compute/fns.py +0 -0
  34. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/compute/resolvers.py +0 -0
  35. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/compute/storage.py +0 -0
  36. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/compute/types.py +0 -0
  37. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/data/__init__.py +0 -0
  38. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/data/actions.py +0 -0
  39. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/data/cache.py +0 -0
  40. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/data/consts.py +0 -0
  41. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/data/defaults.py +0 -0
  42. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/data/manifests.py +0 -0
  43. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cache/data/specs.py +0 -0
  44. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/capi/__init__.py +0 -0
  45. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/capi/darwin/__init__.py +0 -0
  46. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/capi/darwin/aps.py +0 -0
  47. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/capi/darwin/ax.py +0 -0
  48. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/capi/darwin/cf.py +0 -0
  49. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/capi/darwin/cg.py +0 -0
  50. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/capi/linux/__init__.py +0 -0
  51. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/capi/linux/x11.py +0 -0
  52. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cc/__init__.py +0 -0
  53. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cc/__main__.py +0 -0
  54. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cc/cdeps.py +0 -0
  55. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cc/cdeps.toml +0 -0
  56. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cc/cli.py +0 -0
  57. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cc/srclangs.py +0 -0
  58. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/__init__.py +0 -0
  59. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_boilerplate.cc +0 -0
  60. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/LICENSE +0 -0
  61. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/__init__.py +0 -0
  62. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/build_ext.py +0 -0
  63. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  64. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  65. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/compilers/options.py +0 -0
  66. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  67. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/dir_util.py +0 -0
  68. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/errors.py +0 -0
  69. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/extension.py +0 -0
  70. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/file_util.py +0 -0
  71. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/modified.py +0 -0
  72. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/spawn.py +0 -0
  73. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/sysconfig.py +0 -0
  74. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/util.py +0 -0
  75. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/_distutils/version.py +0 -0
  76. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/build.py +0 -0
  77. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/cmake.py +0 -0
  78. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/importhook.py +0 -0
  79. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/magic.py +0 -0
  80. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cexts/scan.py +0 -0
  81. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/__init__.py +0 -0
  82. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/__main__.py +0 -0
  83. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/cache.py +0 -0
  84. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/ci.py +0 -0
  85. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/cli.py +0 -0
  86. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/compose.py +0 -0
  87. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/consts.py +0 -0
  88. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/docker/__init__.py +0 -0
  89. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/docker/buildcaching.py +0 -0
  90. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/docker/cache.py +0 -0
  91. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/docker/cacheserved/__init__.py +0 -0
  92. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/docker/cacheserved/cache.py +0 -0
  93. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/docker/cacheserved/manifests.py +0 -0
  94. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/docker/cmds.py +0 -0
  95. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/docker/dataserver.py +0 -0
  96. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/docker/imagepulling.py +0 -0
  97. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/docker/inject.py +0 -0
  98. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/docker/packing.py +0 -0
  99. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/docker/repositories.py +0 -0
  100. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/docker/utils.py +0 -0
  101. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/github/__init__.py +0 -0
  102. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/github/api/__init__.py +0 -0
  103. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/github/api/clients.py +0 -0
  104. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/github/api/v1/__init__.py +0 -0
  105. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/github/api/v1/api.py +0 -0
  106. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/github/api/v1/client.py +0 -0
  107. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/github/api/v2/__init__.py +0 -0
  108. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/github/api/v2/api.py +0 -0
  109. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/github/api/v2/azure.py +0 -0
  110. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/github/api/v2/client.py +0 -0
  111. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/github/bootstrap.py +0 -0
  112. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/github/cache.py +0 -0
  113. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/github/cli.py +0 -0
  114. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/github/env.py +0 -0
  115. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/github/inject.py +0 -0
  116. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/inject.py +0 -0
  117. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/requirements.py +0 -0
  118. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/shell.py +0 -0
  119. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ci/utils.py +0 -0
  120. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cli/__init__.py +0 -0
  121. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cli/__main__.py +0 -0
  122. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cli/_pathhack.py +0 -0
  123. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cli/clicli.py +0 -0
  124. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cli/install.py +0 -0
  125. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cli/main.py +0 -0
  126. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cli/managers.py +0 -0
  127. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cli/types.py +0 -0
  128. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/clipboard/__init__.py +0 -0
  129. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/clipboard/clipboard.py +0 -0
  130. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/clipboard/darwin_cf.py +0 -0
  131. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/clipboard/linux_x11.py +0 -0
  132. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cmake.py +0 -0
  133. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cmdlog/__init__.py +0 -0
  134. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cmdlog/__main__.py +0 -0
  135. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cmdlog/_cmdlog.py +0 -0
  136. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cmdlog/cli.py +0 -0
  137. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/cmdlog/cmdlog.py +0 -0
  138. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/dataclasses/__init__.py +0 -0
  139. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/dataclasses/__main__.py +0 -0
  140. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/dataclasses/cli.py +0 -0
  141. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/dataclasses/codegen.py +0 -0
  142. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/dataserver/__init__.py +0 -0
  143. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/dataserver/handlers.py +0 -0
  144. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/dataserver/http.py +0 -0
  145. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/dataserver/routes.py +0 -0
  146. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/dataserver/server.py +0 -0
  147. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/dataserver/targets.py +0 -0
  148. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/git/__init__.py +0 -0
  149. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/git/magic.py +0 -0
  150. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/git/revisions.py +0 -0
  151. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/git/shallow.py +0 -0
  152. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/git/status.py +0 -0
  153. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/home/__init__.py +0 -0
  154. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/home/paths.py +0 -0
  155. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/home/secrets.py +0 -0
  156. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/home/shadow.py +0 -0
  157. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/imgur.py +0 -0
  158. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/intellij/__init__.py +0 -0
  159. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/intellij/cli.py +0 -0
  160. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/intellij/ides.py +0 -0
  161. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/intellij/open.py +0 -0
  162. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/__init__.py +0 -0
  163. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/__main__.py +0 -0
  164. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/cli.py +0 -0
  165. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/default.py +0 -0
  166. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/inject.py +0 -0
  167. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/inspect.py +0 -0
  168. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/providers/__init__.py +0 -0
  169. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/providers/base.py +0 -0
  170. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/providers/inject.py +0 -0
  171. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/providers/running.py +0 -0
  172. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/providers/standalone.py +0 -0
  173. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/providers/system.py +0 -0
  174. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/pyenv/__init__.py +0 -0
  175. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/pyenv/inject.py +0 -0
  176. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/pyenv/install.py +0 -0
  177. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/pyenv/provider.py +0 -0
  178. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/pyenv/pyenv.py +0 -0
  179. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/resolvers.py +0 -0
  180. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/types.py +0 -0
  181. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/uv/__init__.py +0 -0
  182. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/uv/inject.py +0 -0
  183. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/uv/provider.py +0 -0
  184. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/uv/uv.py +0 -0
  185. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/interp/venvs.py +0 -0
  186. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/magic/__init__.py +0 -0
  187. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/magic/__main__.py +0 -0
  188. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/magic/cli.py +0 -0
  189. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/magic/find.py +0 -0
  190. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/magic/magic.py +0 -0
  191. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/magic/prepare.py +0 -0
  192. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/magic/styles.py +0 -0
  193. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/manifests/__init__.py +0 -0
  194. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/manifests/__main__.py +0 -0
  195. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/manifests/_dumping.py +0 -0
  196. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/manifests/building.py +0 -0
  197. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/manifests/dumping.py +0 -0
  198. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/manifests/main.py +0 -0
  199. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/mypy/__init__.py +0 -0
  200. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/mypy/debug.py +0 -0
  201. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/mypy/report.py +0 -0
  202. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/oci/__init__.py +0 -0
  203. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/oci/building.py +0 -0
  204. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/oci/compression.py +0 -0
  205. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/oci/data.py +0 -0
  206. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/oci/datarefs.py +0 -0
  207. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/oci/dataserver.py +0 -0
  208. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/oci/loading.py +0 -0
  209. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/oci/media.py +0 -0
  210. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/oci/pack/__init__.py +0 -0
  211. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/oci/pack/packing.py +0 -0
  212. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/oci/pack/repositories.py +0 -0
  213. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/oci/pack/unpacking.py +0 -0
  214. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/oci/repositories.py +0 -0
  215. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/oci/tars.py +0 -0
  216. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/packaging/__init__.py +0 -0
  217. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/packaging/marshal.py +0 -0
  218. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/packaging/names.py +0 -0
  219. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/packaging/requires.py +0 -0
  220. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/packaging/revisions.py +0 -0
  221. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/packaging/specifiers.py +0 -0
  222. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/packaging/versions.py +0 -0
  223. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/packaging/wheelfile.py +0 -0
  224. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/pip.py +0 -0
  225. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/precheck/__init__.py +0 -0
  226. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/precheck/__main__.py +0 -0
  227. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/precheck/base.py +0 -0
  228. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/precheck/caches.py +0 -0
  229. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/precheck/git.py +0 -0
  230. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/precheck/imports.py +0 -0
  231. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/precheck/lite.py +0 -0
  232. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/precheck/main.py +0 -0
  233. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/precheck/manifests.py +0 -0
  234. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/precheck/scripts.py +0 -0
  235. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/precheck/unicode.py +0 -0
  236. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ptk/__init__.py +0 -0
  237. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ptk/apps/__init__.py +0 -0
  238. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ptk/apps/ncdu.py +0 -0
  239. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ptk/confirm.py +0 -0
  240. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ptk/markdown/LICENSE +0 -0
  241. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ptk/markdown/__init__.py +0 -0
  242. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ptk/markdown/__main__.py +0 -0
  243. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ptk/markdown/border.py +0 -0
  244. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ptk/markdown/cli.py +0 -0
  245. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ptk/markdown/markdown.py +0 -0
  246. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ptk/markdown/parser.py +0 -0
  247. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ptk/markdown/styles.py +0 -0
  248. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ptk/markdown/tags.py +0 -0
  249. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/ptk/markdown/utils.py +0 -0
  250. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/__init__.py +0 -0
  251. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/attrdocs.py +0 -0
  252. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/bracepy.py +0 -0
  253. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/classdot.py +0 -0
  254. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/docstrings/LICENSE +0 -0
  255. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/docstrings/__init__.py +0 -0
  256. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/docstrings/attrdoc.py +0 -0
  257. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/docstrings/common.py +0 -0
  258. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/docstrings/epydoc.py +0 -0
  259. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/docstrings/google.py +0 -0
  260. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/docstrings/numpydoc.py +0 -0
  261. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/docstrings/parser.py +0 -0
  262. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/docstrings/rest.py +0 -0
  263. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/findimports.py +0 -0
  264. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/scripts/__init__.py +0 -0
  265. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/scripts/bumpversion.py +0 -0
  266. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/scripts/execstat.py +0 -0
  267. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/scripts/importtrace.py +0 -0
  268. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/srcheaders.py +0 -0
  269. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/tools/__init__.py +0 -0
  270. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/tools/importscan.py +0 -0
  271. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/py/tools/mkrelimp.py +0 -0
  272. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/pyproject/__init__.py +0 -0
  273. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/pyproject/__main__.py +0 -0
  274. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/pyproject/cexts.py +0 -0
  275. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/pyproject/cli.py +0 -0
  276. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/pyproject/configs.py +0 -0
  277. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/pyproject/inject.py +0 -0
  278. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/pyproject/pkg.py +0 -0
  279. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/pyproject/reqs.py +0 -0
  280. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/pyproject/resources/__init__.py +0 -0
  281. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/pyproject/resources/docker-dev.sh +0 -0
  282. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/pyproject/resources/python.sh +0 -0
  283. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/pyproject/venvs.py +0 -0
  284. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/scripts/__init__.py +0 -0
  285. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/scripts/slowcat.py +0 -0
  286. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/scripts/tmpexec.py +0 -0
  287. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tagstrings.py +0 -0
  288. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tokens/__init__.py +0 -0
  289. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tokens/all.py +0 -0
  290. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tokens/tokenizert.py +0 -0
  291. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tokens/utils.py +0 -0
  292. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/__init__.py +0 -0
  293. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/cloc.py +0 -0
  294. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/diff.py +0 -0
  295. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/doc.py +0 -0
  296. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/docker.py +0 -0
  297. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/git/__init__.py +0 -0
  298. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/git/__main__.py +0 -0
  299. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/git/cli.py +0 -0
  300. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/git/cloning.py +0 -0
  301. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/git/consts.py +0 -0
  302. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/git/messages.py +0 -0
  303. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/json/__init__.py +0 -0
  304. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/json/__main__.py +0 -0
  305. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/json/cli.py +0 -0
  306. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/json/formats.py +0 -0
  307. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/json/io.py +0 -0
  308. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/json/parsing.py +0 -0
  309. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/json/processing.py +0 -0
  310. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/json/rendering.py +0 -0
  311. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/jsonview/__init__.py +0 -0
  312. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/jsonview/__main__.py +0 -0
  313. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/jsonview/cli.py +0 -0
  314. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/jsonview/resources/__init__.py +0 -0
  315. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/jsonview/resources/jsonview.css +0 -0
  316. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/jsonview/resources/jsonview.js +0 -0
  317. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/linehisto.py +0 -0
  318. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/mkenv.py +0 -0
  319. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/notebook.py +0 -0
  320. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/pawk/__init__.py +0 -0
  321. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/pawk/__main__.py +0 -0
  322. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/pawk/pawk.py +0 -0
  323. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/pip.py +0 -0
  324. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/prof.py +0 -0
  325. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/qr.py +0 -0
  326. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/shadow.py +0 -0
  327. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/shell.py +0 -0
  328. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev/tools/sqlrepl.py +0 -0
  329. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev.egg-info/SOURCES.txt +0 -0
  330. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev.egg-info/dependency_links.txt +0 -0
  331. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev.egg-info/entry_points.txt +0 -0
  332. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/omdev.egg-info/top_level.txt +0 -0
  333. {omdev-0.0.0.dev429 → omdev-0.0.0.dev430}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev429
3
+ Version: 0.0.0.dev430
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
- Requires-Dist: omlish==0.0.0.dev429
17
+ Requires-Dist: omlish==0.0.0.dev430
18
18
  Provides-Extra: all
19
19
  Requires-Dist: black~=25.1; extra == "all"
20
20
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -1833,8 +1833,8 @@ class LoggingSourceFileInfo(ta.NamedTuple):
1833
1833
  return None
1834
1834
 
1835
1835
  return cls(
1836
- file_name,
1837
- module,
1836
+ file_name=file_name,
1837
+ module=module,
1838
1838
  )
1839
1839
 
1840
1840
 
@@ -1851,9 +1851,9 @@ class LoggingThreadInfo(ta.NamedTuple):
1851
1851
  @classmethod
1852
1852
  def build(cls) -> 'LoggingThreadInfo':
1853
1853
  return cls(
1854
- threading.get_ident(),
1855
- threading.get_native_id() if hasattr(threading, 'get_native_id') else None,
1856
- threading.current_thread().name,
1854
+ ident=threading.get_ident(),
1855
+ native_id=threading.get_native_id() if hasattr(threading, 'get_native_id') else None,
1856
+ name=threading.current_thread().name,
1857
1857
  )
1858
1858
 
1859
1859
 
@@ -1868,7 +1868,7 @@ class LoggingProcessInfo(ta.NamedTuple):
1868
1868
  @classmethod
1869
1869
  def build(cls) -> 'LoggingProcessInfo':
1870
1870
  return cls(
1871
- os.getpid(),
1871
+ pid=os.getpid(),
1872
1872
  )
1873
1873
 
1874
1874
 
@@ -1887,7 +1887,7 @@ class LoggingMultiprocessingInfo(ta.NamedTuple):
1887
1887
  return None
1888
1888
 
1889
1889
  return cls(
1890
- mp.current_process().name,
1890
+ process_name=mp.current_process().name,
1891
1891
  )
1892
1892
 
1893
1893
 
@@ -1914,7 +1914,7 @@ class LoggingAsyncioTaskInfo(ta.NamedTuple):
1914
1914
  return None
1915
1915
 
1916
1916
  return cls(
1917
- task.get_name(), # Always non-None
1917
+ name=task.get_name(), # Always non-None
1918
1918
  )
1919
1919
 
1920
1920
 
@@ -1937,36 +1937,66 @@ class NamedLogLevel(int):
1937
1937
 
1938
1938
  #
1939
1939
 
1940
- @property
1941
- def exact_name(self) -> ta.Optional[str]:
1942
- return self._NAMES_BY_INT.get(self)
1940
+ _CACHE: ta.ClassVar[ta.MutableMapping[int, 'NamedLogLevel']] = {}
1941
+
1942
+ @ta.overload
1943
+ def __new__(cls, name: str, offset: int = 0, /) -> 'NamedLogLevel':
1944
+ ...
1945
+
1946
+ @ta.overload
1947
+ def __new__(cls, i: int, /) -> 'NamedLogLevel':
1948
+ ...
1949
+
1950
+ def __new__(cls, x, offset=0, /):
1951
+ if isinstance(x, str):
1952
+ return cls(cls._INTS_BY_NAME[x.upper()] + offset)
1953
+ elif not offset and (c := cls._CACHE.get(x)) is not None:
1954
+ return c
1955
+ else:
1956
+ return super().__new__(cls, x + offset)
1943
1957
 
1944
- _effective_name: ta.Optional[str]
1958
+ #
1959
+
1960
+ _name_and_offset: ta.Tuple[str, int]
1945
1961
 
1946
1962
  @property
1947
- def effective_name(self) -> ta.Optional[str]:
1963
+ def name_and_offset(self) -> ta.Tuple[str, int]:
1948
1964
  try:
1949
- return self._effective_name
1965
+ return self._name_and_offset
1950
1966
  except AttributeError:
1951
1967
  pass
1952
1968
 
1953
- if (n := self.exact_name) is None:
1969
+ if (n := self._NAMES_BY_INT.get(self)) is not None:
1970
+ t = (n, 0)
1971
+ else:
1954
1972
  for n, i in self._NAME_INT_PAIRS: # noqa
1955
1973
  if self >= i:
1974
+ t = (n, (self - i))
1956
1975
  break
1957
1976
  else:
1958
- n = None
1977
+ t = ('NOTSET', int(self))
1978
+
1979
+ self._name_and_offset = t
1980
+ return t
1959
1981
 
1960
- self._effective_name = n
1982
+ @property
1983
+ def exact_name(self) -> ta.Optional[str]:
1984
+ n, o = self.name_and_offset
1985
+ return n if not o else None
1986
+
1987
+ @property
1988
+ def effective_name(self) -> str:
1989
+ n, _ = self.name_and_offset
1961
1990
  return n
1962
1991
 
1963
1992
  #
1964
1993
 
1965
- def __repr__(self) -> str:
1966
- return f'{self.__class__.__name__}({int(self)})'
1967
-
1968
1994
  def __str__(self) -> str:
1969
- return self.exact_name or f'{self.effective_name or "INVALID"}:{int(self)}'
1995
+ return self.exact_name or f'{self.effective_name}{int(self):+}'
1996
+
1997
+ def __repr__(self) -> str:
1998
+ n, o = self.name_and_offset
1999
+ return f'{self.__class__.__name__}({n!r}{f", {int(o)}" if o else ""})'
1970
2000
 
1971
2001
  #
1972
2002
 
@@ -1986,6 +2016,9 @@ NamedLogLevel.DEBUG = NamedLogLevel(logging.DEBUG)
1986
2016
  NamedLogLevel.NOTSET = NamedLogLevel(logging.NOTSET)
1987
2017
 
1988
2018
 
2019
+ NamedLogLevel._CACHE.update({i: NamedLogLevel(i) for i in NamedLogLevel._NAMES_BY_INT}) # noqa
2020
+
2021
+
1989
2022
  ########################################
1990
2023
  # ../../../omlish/logs/std/filters.py
1991
2024
 
@@ -5008,10 +5041,10 @@ class LoggingCaller(ta.NamedTuple):
5008
5041
  sinfo = sinfo[:-1]
5009
5042
 
5010
5043
  return cls(
5011
- f.f_code.co_filename,
5012
- f.f_lineno or 0,
5013
- f.f_code.co_name,
5014
- sinfo,
5044
+ file_path=f.f_code.co_filename,
5045
+ line_no=f.f_lineno or 0,
5046
+ name=f.f_code.co_name,
5047
+ stack_info=sinfo,
5015
5048
  )
5016
5049
 
5017
5050
 
@@ -5022,6 +5055,7 @@ class LoggingCaller(ta.NamedTuple):
5022
5055
  ##
5023
5056
 
5024
5057
 
5058
+ @ta.runtime_checkable
5025
5059
  class LoggerLike(ta.Protocol):
5026
5060
  """Satisfied by both our Logger and stdlib logging.Logger."""
5027
5061
 
@@ -5160,9 +5194,9 @@ class LoggingTimeFields(ta.NamedTuple):
5160
5194
  relative_created = (time_ns - start_time_ns) / 1e6
5161
5195
 
5162
5196
  return cls(
5163
- created,
5164
- msecs,
5165
- relative_created,
5197
+ created=created,
5198
+ msecs=msecs,
5199
+ relative_created=relative_created,
5166
5200
  )
5167
5201
 
5168
5202
 
@@ -9436,7 +9470,6 @@ class CoroHttpServer:
9436
9470
 
9437
9471
 
9438
9472
  class AnyLogger(Abstract, ta.Generic[T]):
9439
- @ta.final
9440
9473
  def is_enabled_for(self, level: LogLevel) -> bool:
9441
9474
  return level >= self.get_effective_level()
9442
9475
 
@@ -9635,7 +9668,7 @@ class AsyncLogger(AnyLogger[ta.Awaitable[None]], Abstract):
9635
9668
  class AnyNopLogger(AnyLogger[T], Abstract):
9636
9669
  @ta.final
9637
9670
  def get_effective_level(self) -> LogLevel:
9638
- return 999
9671
+ return -999
9639
9672
 
9640
9673
 
9641
9674
  @ta.final
@@ -11138,7 +11171,7 @@ class CoroHttpServerSocketHandler(SocketHandler_):
11138
11171
 
11139
11172
 
11140
11173
  ########################################
11141
- # ../../../omlish/logs/std/adapters.py
11174
+ # ../../../omlish/logs/std/loggers.py
11142
11175
 
11143
11176
 
11144
11177
  ##
@@ -11154,6 +11187,9 @@ class StdLogger(Logger):
11154
11187
  def std(self) -> logging.Logger:
11155
11188
  return self._std
11156
11189
 
11190
+ def is_enabled_for(self, level: LogLevel) -> bool:
11191
+ return self._std.isEnabledFor(level)
11192
+
11157
11193
  def get_effective_level(self) -> LogLevel:
11158
11194
  return self._std.getEffectiveLevel()
11159
11195
 
@@ -1407,36 +1407,66 @@ class NamedLogLevel(int):
1407
1407
 
1408
1408
  #
1409
1409
 
1410
- @property
1411
- def exact_name(self) -> ta.Optional[str]:
1412
- return self._NAMES_BY_INT.get(self)
1410
+ _CACHE: ta.ClassVar[ta.MutableMapping[int, 'NamedLogLevel']] = {}
1411
+
1412
+ @ta.overload
1413
+ def __new__(cls, name: str, offset: int = 0, /) -> 'NamedLogLevel':
1414
+ ...
1415
+
1416
+ @ta.overload
1417
+ def __new__(cls, i: int, /) -> 'NamedLogLevel':
1418
+ ...
1419
+
1420
+ def __new__(cls, x, offset=0, /):
1421
+ if isinstance(x, str):
1422
+ return cls(cls._INTS_BY_NAME[x.upper()] + offset)
1423
+ elif not offset and (c := cls._CACHE.get(x)) is not None:
1424
+ return c
1425
+ else:
1426
+ return super().__new__(cls, x + offset)
1427
+
1428
+ #
1413
1429
 
1414
- _effective_name: ta.Optional[str]
1430
+ _name_and_offset: ta.Tuple[str, int]
1415
1431
 
1416
1432
  @property
1417
- def effective_name(self) -> ta.Optional[str]:
1433
+ def name_and_offset(self) -> ta.Tuple[str, int]:
1418
1434
  try:
1419
- return self._effective_name
1435
+ return self._name_and_offset
1420
1436
  except AttributeError:
1421
1437
  pass
1422
1438
 
1423
- if (n := self.exact_name) is None:
1439
+ if (n := self._NAMES_BY_INT.get(self)) is not None:
1440
+ t = (n, 0)
1441
+ else:
1424
1442
  for n, i in self._NAME_INT_PAIRS: # noqa
1425
1443
  if self >= i:
1444
+ t = (n, (self - i))
1426
1445
  break
1427
1446
  else:
1428
- n = None
1447
+ t = ('NOTSET', int(self))
1448
+
1449
+ self._name_and_offset = t
1450
+ return t
1451
+
1452
+ @property
1453
+ def exact_name(self) -> ta.Optional[str]:
1454
+ n, o = self.name_and_offset
1455
+ return n if not o else None
1429
1456
 
1430
- self._effective_name = n
1457
+ @property
1458
+ def effective_name(self) -> str:
1459
+ n, _ = self.name_and_offset
1431
1460
  return n
1432
1461
 
1433
1462
  #
1434
1463
 
1435
- def __repr__(self) -> str:
1436
- return f'{self.__class__.__name__}({int(self)})'
1437
-
1438
1464
  def __str__(self) -> str:
1439
- return self.exact_name or f'{self.effective_name or "INVALID"}:{int(self)}'
1465
+ return self.exact_name or f'{self.effective_name}{int(self):+}'
1466
+
1467
+ def __repr__(self) -> str:
1468
+ n, o = self.name_and_offset
1469
+ return f'{self.__class__.__name__}({n!r}{f", {int(o)}" if o else ""})'
1440
1470
 
1441
1471
  #
1442
1472
 
@@ -1456,6 +1486,9 @@ NamedLogLevel.DEBUG = NamedLogLevel(logging.DEBUG)
1456
1486
  NamedLogLevel.NOTSET = NamedLogLevel(logging.NOTSET)
1457
1487
 
1458
1488
 
1489
+ NamedLogLevel._CACHE.update({i: NamedLogLevel(i) for i in NamedLogLevel._NAMES_BY_INT}) # noqa
1490
+
1491
+
1459
1492
  ########################################
1460
1493
  # ../../../omlish/logs/std/filters.py
1461
1494
 
@@ -2826,6 +2859,7 @@ class PredicateTimeout(Timeout):
2826
2859
  ##
2827
2860
 
2828
2861
 
2862
+ @ta.runtime_checkable
2829
2863
  class LoggerLike(ta.Protocol):
2830
2864
  """Satisfied by both our Logger and stdlib logging.Logger."""
2831
2865
 
@@ -2992,8 +2992,8 @@ class LoggingSourceFileInfo(ta.NamedTuple):
2992
2992
  return None
2993
2993
 
2994
2994
  return cls(
2995
- file_name,
2996
- module,
2995
+ file_name=file_name,
2996
+ module=module,
2997
2997
  )
2998
2998
 
2999
2999
 
@@ -3010,9 +3010,9 @@ class LoggingThreadInfo(ta.NamedTuple):
3010
3010
  @classmethod
3011
3011
  def build(cls) -> 'LoggingThreadInfo':
3012
3012
  return cls(
3013
- threading.get_ident(),
3014
- threading.get_native_id() if hasattr(threading, 'get_native_id') else None,
3015
- threading.current_thread().name,
3013
+ ident=threading.get_ident(),
3014
+ native_id=threading.get_native_id() if hasattr(threading, 'get_native_id') else None,
3015
+ name=threading.current_thread().name,
3016
3016
  )
3017
3017
 
3018
3018
 
@@ -3027,7 +3027,7 @@ class LoggingProcessInfo(ta.NamedTuple):
3027
3027
  @classmethod
3028
3028
  def build(cls) -> 'LoggingProcessInfo':
3029
3029
  return cls(
3030
- os.getpid(),
3030
+ pid=os.getpid(),
3031
3031
  )
3032
3032
 
3033
3033
 
@@ -3046,7 +3046,7 @@ class LoggingMultiprocessingInfo(ta.NamedTuple):
3046
3046
  return None
3047
3047
 
3048
3048
  return cls(
3049
- mp.current_process().name,
3049
+ process_name=mp.current_process().name,
3050
3050
  )
3051
3051
 
3052
3052
 
@@ -3073,7 +3073,7 @@ class LoggingAsyncioTaskInfo(ta.NamedTuple):
3073
3073
  return None
3074
3074
 
3075
3075
  return cls(
3076
- task.get_name(), # Always non-None
3076
+ name=task.get_name(), # Always non-None
3077
3077
  )
3078
3078
 
3079
3079
 
@@ -3096,36 +3096,66 @@ class NamedLogLevel(int):
3096
3096
 
3097
3097
  #
3098
3098
 
3099
- @property
3100
- def exact_name(self) -> ta.Optional[str]:
3101
- return self._NAMES_BY_INT.get(self)
3099
+ _CACHE: ta.ClassVar[ta.MutableMapping[int, 'NamedLogLevel']] = {}
3100
+
3101
+ @ta.overload
3102
+ def __new__(cls, name: str, offset: int = 0, /) -> 'NamedLogLevel':
3103
+ ...
3104
+
3105
+ @ta.overload
3106
+ def __new__(cls, i: int, /) -> 'NamedLogLevel':
3107
+ ...
3108
+
3109
+ def __new__(cls, x, offset=0, /):
3110
+ if isinstance(x, str):
3111
+ return cls(cls._INTS_BY_NAME[x.upper()] + offset)
3112
+ elif not offset and (c := cls._CACHE.get(x)) is not None:
3113
+ return c
3114
+ else:
3115
+ return super().__new__(cls, x + offset)
3102
3116
 
3103
- _effective_name: ta.Optional[str]
3117
+ #
3118
+
3119
+ _name_and_offset: ta.Tuple[str, int]
3104
3120
 
3105
3121
  @property
3106
- def effective_name(self) -> ta.Optional[str]:
3122
+ def name_and_offset(self) -> ta.Tuple[str, int]:
3107
3123
  try:
3108
- return self._effective_name
3124
+ return self._name_and_offset
3109
3125
  except AttributeError:
3110
3126
  pass
3111
3127
 
3112
- if (n := self.exact_name) is None:
3128
+ if (n := self._NAMES_BY_INT.get(self)) is not None:
3129
+ t = (n, 0)
3130
+ else:
3113
3131
  for n, i in self._NAME_INT_PAIRS: # noqa
3114
3132
  if self >= i:
3133
+ t = (n, (self - i))
3115
3134
  break
3116
3135
  else:
3117
- n = None
3136
+ t = ('NOTSET', int(self))
3137
+
3138
+ self._name_and_offset = t
3139
+ return t
3118
3140
 
3119
- self._effective_name = n
3141
+ @property
3142
+ def exact_name(self) -> ta.Optional[str]:
3143
+ n, o = self.name_and_offset
3144
+ return n if not o else None
3145
+
3146
+ @property
3147
+ def effective_name(self) -> str:
3148
+ n, _ = self.name_and_offset
3120
3149
  return n
3121
3150
 
3122
3151
  #
3123
3152
 
3124
- def __repr__(self) -> str:
3125
- return f'{self.__class__.__name__}({int(self)})'
3126
-
3127
3153
  def __str__(self) -> str:
3128
- return self.exact_name or f'{self.effective_name or "INVALID"}:{int(self)}'
3154
+ return self.exact_name or f'{self.effective_name}{int(self):+}'
3155
+
3156
+ def __repr__(self) -> str:
3157
+ n, o = self.name_and_offset
3158
+ return f'{self.__class__.__name__}({n!r}{f", {int(o)}" if o else ""})'
3129
3159
 
3130
3160
  #
3131
3161
 
@@ -3145,6 +3175,9 @@ NamedLogLevel.DEBUG = NamedLogLevel(logging.DEBUG)
3145
3175
  NamedLogLevel.NOTSET = NamedLogLevel(logging.NOTSET)
3146
3176
 
3147
3177
 
3178
+ NamedLogLevel._CACHE.update({i: NamedLogLevel(i) for i in NamedLogLevel._NAMES_BY_INT}) # noqa
3179
+
3180
+
3148
3181
  ########################################
3149
3182
  # ../../../omlish/logs/std/filters.py
3150
3183
 
@@ -5588,10 +5621,10 @@ class LoggingCaller(ta.NamedTuple):
5588
5621
  sinfo = sinfo[:-1]
5589
5622
 
5590
5623
  return cls(
5591
- f.f_code.co_filename,
5592
- f.f_lineno or 0,
5593
- f.f_code.co_name,
5594
- sinfo,
5624
+ file_path=f.f_code.co_filename,
5625
+ line_no=f.f_lineno or 0,
5626
+ name=f.f_code.co_name,
5627
+ stack_info=sinfo,
5595
5628
  )
5596
5629
 
5597
5630
 
@@ -5602,6 +5635,7 @@ class LoggingCaller(ta.NamedTuple):
5602
5635
  ##
5603
5636
 
5604
5637
 
5638
+ @ta.runtime_checkable
5605
5639
  class LoggerLike(ta.Protocol):
5606
5640
  """Satisfied by both our Logger and stdlib logging.Logger."""
5607
5641
 
@@ -5740,9 +5774,9 @@ class LoggingTimeFields(ta.NamedTuple):
5740
5774
  relative_created = (time_ns - start_time_ns) / 1e6
5741
5775
 
5742
5776
  return cls(
5743
- created,
5744
- msecs,
5745
- relative_created,
5777
+ created=created,
5778
+ msecs=msecs,
5779
+ relative_created=relative_created,
5746
5780
  )
5747
5781
 
5748
5782
 
@@ -7581,7 +7615,6 @@ InterpProviders = ta.NewType('InterpProviders', ta.Sequence[InterpProvider])
7581
7615
 
7582
7616
 
7583
7617
  class AnyLogger(Abstract, ta.Generic[T]):
7584
- @ta.final
7585
7618
  def is_enabled_for(self, level: LogLevel) -> bool:
7586
7619
  return level >= self.get_effective_level()
7587
7620
 
@@ -7780,7 +7813,7 @@ class AsyncLogger(AnyLogger[ta.Awaitable[None]], Abstract):
7780
7813
  class AnyNopLogger(AnyLogger[T], Abstract):
7781
7814
  @ta.final
7782
7815
  def get_effective_level(self) -> LogLevel:
7783
- return 999
7816
+ return -999
7784
7817
 
7785
7818
 
7786
7819
  @ta.final
@@ -8390,7 +8423,7 @@ class InterpResolver:
8390
8423
 
8391
8424
 
8392
8425
  ########################################
8393
- # ../../../omlish/logs/std/adapters.py
8426
+ # ../../../omlish/logs/std/loggers.py
8394
8427
 
8395
8428
 
8396
8429
  ##
@@ -8406,6 +8439,9 @@ class StdLogger(Logger):
8406
8439
  def std(self) -> logging.Logger:
8407
8440
  return self._std
8408
8441
 
8442
+ def is_enabled_for(self, level: LogLevel) -> bool:
8443
+ return self._std.isEnabledFor(level)
8444
+
8409
8445
  def get_effective_level(self) -> LogLevel:
8410
8446
  return self._std.getEffectiveLevel()
8411
8447
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev429
3
+ Version: 0.0.0.dev430
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
- Requires-Dist: omlish==0.0.0.dev429
17
+ Requires-Dist: omlish==0.0.0.dev430
18
18
  Provides-Extra: all
19
19
  Requires-Dist: black~=25.1; extra == "all"
20
20
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -1,4 +1,4 @@
1
- omlish==0.0.0.dev429
1
+ omlish==0.0.0.dev430
2
2
 
3
3
  [all]
4
4
  black~=25.1
@@ -13,7 +13,7 @@ urls = {source = 'https://github.com/wrmsr/omlish'}
13
13
  license = 'BSD-3-Clause'
14
14
  readme = 'README.md'
15
15
  requires-python = '>=3.13'
16
- version = '0.0.0.dev429'
16
+ version = '0.0.0.dev430'
17
17
  classifiers = [
18
18
  'Development Status :: 2 - Pre-Alpha',
19
19
  'Intended Audience :: Developers',
@@ -24,7 +24,7 @@ classifiers = [
24
24
  ]
25
25
  description = 'omdev'
26
26
  dependencies = [
27
- 'omlish == 0.0.0.dev429',
27
+ 'omlish == 0.0.0.dev430',
28
28
  ]
29
29
 
30
30
  [project.optional-dependencies]
File without changes
File without changes
File without changes