omdev 0.0.0.dev194__tar.gz → 0.0.0.dev196__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (196) hide show
  1. {omdev-0.0.0.dev194/omdev.egg-info → omdev-0.0.0.dev196}/PKG-INFO +2 -2
  2. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/.manifests.json +1 -1
  3. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/git/subtrees.py +3 -3
  4. omdev-0.0.0.dev196/omdev/tagstrings.py +206 -0
  5. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/cloc.py +5 -0
  6. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196/omdev.egg-info}/PKG-INFO +2 -2
  7. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev.egg-info/SOURCES.txt +1 -0
  8. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev.egg-info/requires.txt +1 -1
  9. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/pyproject.toml +2 -2
  10. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/LICENSE +0 -0
  11. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/MANIFEST.in +0 -0
  12. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/README.rst +0 -0
  13. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/__about__.py +0 -0
  14. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/__init__.py +0 -0
  15. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/amalg/__init__.py +0 -0
  16. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/amalg/__main__.py +0 -0
  17. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/amalg/gen.py +0 -0
  18. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/amalg/imports.py +0 -0
  19. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/amalg/main.py +0 -0
  20. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/amalg/manifests.py +0 -0
  21. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/amalg/resources.py +0 -0
  22. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/amalg/srcfiles.py +0 -0
  23. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/amalg/strip.py +0 -0
  24. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/amalg/types.py +0 -0
  25. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/amalg/typing.py +0 -0
  26. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/antlr/__init__.py +0 -0
  27. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/antlr/consts.py +0 -0
  28. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/antlr/gen.py +0 -0
  29. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/bracepy.py +0 -0
  30. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/__init__.py +0 -0
  31. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/compute/__init__.py +0 -0
  32. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/compute/cache.py +0 -0
  33. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/compute/contexts.py +0 -0
  34. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/compute/currents.py +0 -0
  35. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/compute/fns.py +0 -0
  36. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/compute/resolvers.py +0 -0
  37. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/compute/storage.py +0 -0
  38. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/compute/types.py +0 -0
  39. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/data/__init__.py +0 -0
  40. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/data/actions.py +0 -0
  41. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/data/cache.py +0 -0
  42. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/data/consts.py +0 -0
  43. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/data/defaults.py +0 -0
  44. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/data/manifests.py +0 -0
  45. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cache/data/specs.py +0 -0
  46. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/__init__.py +0 -0
  47. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_boilerplate.cc +0 -0
  48. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/LICENSE +0 -0
  49. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/__init__.py +0 -0
  50. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/build_ext.py +0 -0
  51. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  52. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  53. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/compilers/options.py +0 -0
  54. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  55. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/dir_util.py +0 -0
  56. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/errors.py +0 -0
  57. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/extension.py +0 -0
  58. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/file_util.py +0 -0
  59. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/modified.py +0 -0
  60. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/spawn.py +0 -0
  61. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/sysconfig.py +0 -0
  62. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/util.py +0 -0
  63. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/_distutils/version.py +0 -0
  64. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/build.py +0 -0
  65. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/cmake.py +0 -0
  66. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/importhook.py +0 -0
  67. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/magic.py +0 -0
  68. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cexts/scan.py +0 -0
  69. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/classdot.py +0 -0
  70. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cli/__init__.py +0 -0
  71. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cli/__main__.py +0 -0
  72. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cli/_pathhack.py +0 -0
  73. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cli/clicli.py +0 -0
  74. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cli/install.py +0 -0
  75. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cli/main.py +0 -0
  76. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cli/managers.py +0 -0
  77. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cli/types.py +0 -0
  78. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/clipboard/__init__.py +0 -0
  79. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/clipboard/clipboard.py +0 -0
  80. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/clipboard/darwin_cf.py +0 -0
  81. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/clipboard/linux_x11.py +0 -0
  82. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/cmake.py +0 -0
  83. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/findimports.py +0 -0
  84. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/git/__init__.py +0 -0
  85. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/git/revisions.py +0 -0
  86. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/git/status.py +0 -0
  87. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/imgur.py +0 -0
  88. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/__init__.py +0 -0
  89. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/__main__.py +0 -0
  90. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/cli.py +0 -0
  91. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/default.py +0 -0
  92. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/inject.py +0 -0
  93. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/inspect.py +0 -0
  94. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/providers/__init__.py +0 -0
  95. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/providers/base.py +0 -0
  96. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/providers/inject.py +0 -0
  97. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/providers/running.py +0 -0
  98. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/providers/standalone.py +0 -0
  99. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/providers/system.py +0 -0
  100. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/pyenv/__init__.py +0 -0
  101. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/pyenv/inject.py +0 -0
  102. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/pyenv/install.py +0 -0
  103. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/pyenv/provider.py +0 -0
  104. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/pyenv/pyenv.py +0 -0
  105. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/resolvers.py +0 -0
  106. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/types.py +0 -0
  107. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/uv/__init__.py +0 -0
  108. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/uv/inject.py +0 -0
  109. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/uv/provider.py +0 -0
  110. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/uv/uv.py +0 -0
  111. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/interp/venvs.py +0 -0
  112. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/magic/__init__.py +0 -0
  113. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/magic/__main__.py +0 -0
  114. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/magic/cli.py +0 -0
  115. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/magic/find.py +0 -0
  116. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/magic/magic.py +0 -0
  117. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/magic/prepare.py +0 -0
  118. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/magic/styles.py +0 -0
  119. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/manifests/__init__.py +0 -0
  120. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/manifests/__main__.py +0 -0
  121. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/manifests/build.py +0 -0
  122. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/manifests/main.py +0 -0
  123. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/mypy/__init__.py +0 -0
  124. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/mypy/debug.py +0 -0
  125. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/packaging/__init__.py +0 -0
  126. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/packaging/marshal.py +0 -0
  127. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/packaging/names.py +0 -0
  128. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/packaging/requires.py +0 -0
  129. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/packaging/specifiers.py +0 -0
  130. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/packaging/versions.py +0 -0
  131. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pip.py +0 -0
  132. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/precheck/__init__.py +0 -0
  133. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/precheck/__main__.py +0 -0
  134. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/precheck/base.py +0 -0
  135. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/precheck/git.py +0 -0
  136. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/precheck/lite.py +0 -0
  137. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/precheck/main.py +0 -0
  138. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/precheck/manifests.py +0 -0
  139. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/precheck/scripts.py +0 -0
  140. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/ptk/__init__.py +0 -0
  141. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/ptk/apps/__init__.py +0 -0
  142. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/ptk/apps/ncdu.py +0 -0
  143. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pycharm/__init__.py +0 -0
  144. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pycharm/__main__.py +0 -0
  145. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pycharm/cli.py +0 -0
  146. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pyproject/__init__.py +0 -0
  147. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pyproject/__main__.py +0 -0
  148. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pyproject/cexts.py +0 -0
  149. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pyproject/cli.py +0 -0
  150. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pyproject/configs.py +0 -0
  151. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pyproject/inject.py +0 -0
  152. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pyproject/pkg.py +0 -0
  153. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pyproject/reqs.py +0 -0
  154. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pyproject/resources/__init__.py +0 -0
  155. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pyproject/resources/docker-dev.sh +0 -0
  156. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pyproject/resources/python.sh +0 -0
  157. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/pyproject/venvs.py +0 -0
  158. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/revisions.py +0 -0
  159. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/scripts/__init__.py +0 -0
  160. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/scripts/bumpversion.py +0 -0
  161. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/scripts/execrss.py +0 -0
  162. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/scripts/exectime.py +0 -0
  163. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/scripts/importtrace.py +0 -0
  164. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/scripts/interp.py +0 -0
  165. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/scripts/pyproject.py +0 -0
  166. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/scripts/slowcat.py +0 -0
  167. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/scripts/tmpexec.py +0 -0
  168. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/secrets.py +0 -0
  169. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tokens.py +0 -0
  170. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/__init__.py +0 -0
  171. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/doc.py +0 -0
  172. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/docker.py +0 -0
  173. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/git.py +0 -0
  174. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/importscan.py +0 -0
  175. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/json/__init__.py +0 -0
  176. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/json/__main__.py +0 -0
  177. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/json/cli.py +0 -0
  178. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/json/formats.py +0 -0
  179. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/json/io.py +0 -0
  180. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/json/parsing.py +0 -0
  181. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/json/processing.py +0 -0
  182. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/json/rendering.py +0 -0
  183. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/mkrelimp.py +0 -0
  184. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/notebook.py +0 -0
  185. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/pawk/__init__.py +0 -0
  186. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/pawk/__main__.py +0 -0
  187. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/pawk/pawk.py +0 -0
  188. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/pip.py +0 -0
  189. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/prof.py +0 -0
  190. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/qr.py +0 -0
  191. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/tools/sqlrepl.py +0 -0
  192. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev/wheelfile.py +0 -0
  193. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev.egg-info/dependency_links.txt +0 -0
  194. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev.egg-info/entry_points.txt +0 -0
  195. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/omdev.egg-info/top_level.txt +0 -0
  196. {omdev-0.0.0.dev194 → omdev-0.0.0.dev196}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev194
3
+ Version: 0.0.0.dev196
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ 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: omlish==0.0.0.dev194
15
+ Requires-Dist: omlish==0.0.0.dev196
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=24.10; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -231,7 +231,7 @@
231
231
  "module": ".tools.cloc",
232
232
  "attr": "_CLI_MODULE",
233
233
  "file": "omdev/tools/cloc.py",
234
- "line": 194,
234
+ "line": 199,
235
235
  "value": {
236
236
  "$.cli.types.CliModule": {
237
237
  "cmd_name": "cloc",
@@ -15,7 +15,7 @@ class GitSubtreeCloner:
15
15
 
16
16
  # _: dc.KW_ONLY
17
17
 
18
- repo_subtrees: ta.Sequence[str]
18
+ repo_subtrees: ta.Optional[ta.Sequence[str]] = None
19
19
 
20
20
  branch: ta.Optional[str] = None
21
21
  rev: ta.Optional[str] = None
@@ -61,7 +61,7 @@ class GitSubtreeCloner:
61
61
  'sparse-checkout',
62
62
  'set',
63
63
  '--no-cone',
64
- *self.repo_subtrees,
64
+ *(self.repo_subtrees or []),
65
65
  ),
66
66
  cwd=rd,
67
67
  )
@@ -84,7 +84,7 @@ def git_clone_subtree(
84
84
  repo_dir: str,
85
85
  branch: ta.Optional[str] = None,
86
86
  rev: ta.Optional[str] = None,
87
- repo_subtrees: ta.Sequence[str],
87
+ repo_subtrees: ta.Optional[ta.Sequence[str]] = None,
88
88
  ) -> None:
89
89
  for cmd in GitSubtreeCloner(
90
90
  base_dir=base_dir,
@@ -0,0 +1,206 @@
1
+ # ruff: noqa: UP006 UP007
2
+ # @omlish-lite
3
+ import dataclasses as dc
4
+ import typing as ta
5
+
6
+ from omlish.lite.check import check
7
+
8
+
9
+ HierarchyTagStringValue = ta.Tuple[str, ...] # ta.TypeAlias
10
+ TagStringValue = ta.Union[bool, str, HierarchyTagStringValue] # ta.TypeAlias
11
+ TagStringValueT = ta.TypeVar('TagStringValueT', bound=TagStringValue)
12
+
13
+
14
+ ##
15
+
16
+
17
+ TAG_STRING_VALUE_TYPES: ta.Tuple = (
18
+ bool,
19
+ str,
20
+ HierarchyTagStringValue,
21
+ )
22
+
23
+
24
+ TAG_STRING_BOOL_STR_MAP: ta.Mapping[str, bool] = {'true': True, 'false': False}
25
+
26
+
27
+ def check_tag_string_string(s: str) -> str:
28
+ check.non_empty_str(s)
29
+ check.equal(s.lower().strip(), s)
30
+ check.not_in(':', s)
31
+ return s
32
+
33
+
34
+ def build_hierarchy_tag_string_values(m: ta.Mapping[str, ta.Any]) -> ta.FrozenSet[HierarchyTagStringValue]:
35
+ def rec(c):
36
+ if isinstance(c, str):
37
+ yield (c,)
38
+ elif isinstance(c, ta.Mapping):
39
+ for k, v in c.items():
40
+ yield (k,)
41
+ for n in rec(v):
42
+ yield (k, *n)
43
+ else:
44
+ raise TypeError(c)
45
+
46
+ return frozenset(rec(m))
47
+
48
+
49
+ ##
50
+
51
+
52
+ @dc.dataclass(frozen=True)
53
+ class TagString(ta.Generic[TagStringValueT]):
54
+ name: str
55
+ type: ta.Type[TagStringValueT]
56
+
57
+ valid_values: ta.Optional[ta.FrozenSet[TagStringValueT]] = None
58
+ set: bool = False
59
+
60
+ def __post_init__(self) -> None:
61
+ check_tag_string_string(self.name)
62
+
63
+ check.in_(self.type, TAG_STRING_VALUE_TYPES)
64
+
65
+ if self.valid_values is not None:
66
+ check.isinstance(self.valid_values, frozenset)
67
+
68
+ v: ta.Any
69
+ if self.type is bool:
70
+ for v in self.valid_values:
71
+ check.isinstance(v, bool)
72
+
73
+ elif self.type is str:
74
+ for v in self.valid_values:
75
+ check_tag_string_string(v)
76
+
77
+ elif self.type is HierarchyTagStringValue:
78
+ for v in self.valid_values:
79
+ check.isinstance(v, tuple)
80
+ for c in v:
81
+ check_tag_string_string(c)
82
+ for i in range(1, len(v)):
83
+ p = v[:-i]
84
+ check.in_(p, self.valid_values)
85
+
86
+ else:
87
+ raise TypeError(self.type)
88
+
89
+ #
90
+
91
+ @classmethod
92
+ def new_bool(
93
+ cls,
94
+ name: str,
95
+ valid_values: ta.Optional[ta.Iterable[bool]] = None,
96
+ **kwargs: ta.Any,
97
+ ) -> 'TagString':
98
+ return cls(
99
+ name=name,
100
+ type=bool, # type: ignore
101
+ valid_values=frozenset(valid_values) if valid_values is not None else None, # type: ignore
102
+ **kwargs,
103
+ )
104
+
105
+ @classmethod
106
+ def new_str(
107
+ cls,
108
+ name: str,
109
+ valid_values: ta.Optional[ta.Iterable[str]] = None,
110
+ **kwargs: ta.Any,
111
+ ) -> 'TagString':
112
+ return cls(
113
+ name=name,
114
+ type=str, # type: ignore
115
+ valid_values=frozenset(check.not_isinstance(valid_values, str)) if valid_values is not None else None, # type: ignore # noqa
116
+ **kwargs,
117
+ )
118
+
119
+ @classmethod
120
+ def new_hierarchy(
121
+ cls,
122
+ name: str,
123
+ valid_values: ta.Optional[ta.Mapping[str, ta.Any]] = None,
124
+ **kwargs: ta.Any,
125
+ ) -> 'TagString':
126
+ return cls(
127
+ name=name,
128
+ type=HierarchyTagStringValue, # type: ignore
129
+ valid_values=build_hierarchy_tag_string_values(valid_values) if valid_values is not None else None, # type: ignore # noqa
130
+ **kwargs,
131
+ )
132
+
133
+
134
+ @dc.dataclass(frozen=True)
135
+ class TagStringSet:
136
+ dct: ta.Mapping[str, ta.FrozenSet[TagStringValue]]
137
+
138
+
139
+ ##
140
+
141
+
142
+ class TagStringCatalog:
143
+ def __init__(self, tags: ta.Iterable[TagString]) -> None:
144
+ super().__init__()
145
+
146
+ dct: ta.Dict[str, TagString] = {}
147
+ for t in tags:
148
+ check.not_in(t.name, dct)
149
+ dct[t.name] = t
150
+ self._by_name = dct
151
+
152
+ class Parsed(ta.NamedTuple):
153
+ tag: TagString
154
+ values: ta.FrozenSet[TagStringValue]
155
+
156
+ def parse_one(self, s: str) -> Parsed:
157
+ name, *rest = check.non_empty_str(s).split(':')
158
+
159
+ tag = self._by_name[name]
160
+
161
+ #
162
+
163
+ v: TagStringValue
164
+ if tag.type is bool:
165
+ bs = check.single(rest)
166
+ v = TAG_STRING_BOOL_STR_MAP[bs]
167
+
168
+ elif tag.type is str:
169
+ v = check.single(rest)
170
+
171
+ elif tag.type is HierarchyTagStringValue:
172
+ v = tuple(rest)
173
+
174
+ else:
175
+ raise TypeError(tag.type)
176
+
177
+ #
178
+
179
+ if tag.valid_values is not None:
180
+ check.in_(v, tag.valid_values)
181
+
182
+ #
183
+
184
+ vs: ta.FrozenSet[TagStringValue]
185
+ if tag.type is HierarchyTagStringValue:
186
+ vt = check.isinstance(v, tuple)
187
+ vs = frozenset(vt[:i + 1] for i in range(len(vt)))
188
+ else:
189
+ vs = frozenset([v])
190
+
191
+ #
192
+
193
+ return TagStringCatalog.Parsed(tag, vs)
194
+
195
+ def parse_set(self, *strs: str) -> TagStringSet:
196
+ dct: ta.Dict[str, ta.Set[TagStringValue]] = {}
197
+
198
+ for s in strs:
199
+ p = self.parse_one(s)
200
+
201
+ if not p.tag.set:
202
+ check.not_in(p.tag.name, dct)
203
+
204
+ dct.setdefault(p.tag.name, set()).update(p.values)
205
+
206
+ return TagStringSet({k: frozenset(v) for k, v in dct.items()})
@@ -1,3 +1,8 @@
1
+ """
2
+ TODO:
3
+ - handle test code separately
4
+ - tags again lol - language:, test:, whitespace:, comment:,
5
+ """
1
6
  import dataclasses as dc
2
7
  import os
3
8
  import re
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev194
3
+ Version: 0.0.0.dev196
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ 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: omlish==0.0.0.dev194
15
+ Requires-Dist: omlish==0.0.0.dev196
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=24.10; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -13,6 +13,7 @@ omdev/imgur.py
13
13
  omdev/pip.py
14
14
  omdev/revisions.py
15
15
  omdev/secrets.py
16
+ omdev/tagstrings.py
16
17
  omdev/tokens.py
17
18
  omdev/wheelfile.py
18
19
  omdev.egg-info/PKG-INFO
@@ -1,4 +1,4 @@
1
- omlish==0.0.0.dev194
1
+ omlish==0.0.0.dev196
2
2
 
3
3
  [all]
4
4
  black~=24.10
@@ -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.dev194'
15
+ version = '0.0.0.dev196'
16
16
  classifiers = [
17
17
  'License :: OSI Approved :: BSD License',
18
18
  'Development Status :: 2 - Pre-Alpha',
@@ -22,7 +22,7 @@ classifiers = [
22
22
  ]
23
23
  description = 'omdev'
24
24
  dependencies = [
25
- 'omlish == 0.0.0.dev194',
25
+ 'omlish == 0.0.0.dev196',
26
26
  ]
27
27
 
28
28
  [project.optional-dependencies]
File without changes
File without changes
File without changes
File without changes
File without changes