omdev 0.0.0.dev179__tar.gz → 0.0.0.dev180__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (190) hide show
  1. {omdev-0.0.0.dev179/omdev.egg-info → omdev-0.0.0.dev180}/PKG-INFO +2 -2
  2. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/.manifests.json +5 -5
  3. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/clicli.py +6 -6
  4. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/imgur.py +1 -1
  5. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/cli.py +3 -3
  6. omdev-0.0.0.dev180/omdev/magic/__main__.py +11 -0
  7. omdev-0.0.0.dev180/omdev/magic/cli.py +54 -0
  8. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/magic/find.py +0 -45
  9. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pycharm/cli.py +3 -3
  10. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/cli.py +3 -3
  11. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/interp.py +15 -15
  12. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/pyproject.py +15 -25
  13. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/doc.py +2 -2
  14. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/docker.py +8 -8
  15. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/git.py +7 -7
  16. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/notebook.py +1 -1
  17. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/pip.py +4 -4
  18. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/prof.py +1 -1
  19. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/sqlrepl.py +1 -1
  20. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180/omdev.egg-info}/PKG-INFO +2 -2
  21. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev.egg-info/SOURCES.txt +2 -0
  22. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev.egg-info/requires.txt +1 -1
  23. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/pyproject.toml +2 -2
  24. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/LICENSE +0 -0
  25. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/MANIFEST.in +0 -0
  26. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/README.rst +0 -0
  27. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/__about__.py +0 -0
  28. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/__init__.py +0 -0
  29. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/__init__.py +0 -0
  30. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/__main__.py +0 -0
  31. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/gen.py +0 -0
  32. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/imports.py +0 -0
  33. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/main.py +0 -0
  34. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/manifests.py +0 -0
  35. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/resources.py +0 -0
  36. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/srcfiles.py +0 -0
  37. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/strip.py +0 -0
  38. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/types.py +0 -0
  39. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/typing.py +0 -0
  40. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/antlr/__init__.py +0 -0
  41. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/antlr/consts.py +0 -0
  42. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/antlr/gen.py +0 -0
  43. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/bracepy.py +0 -0
  44. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/__init__.py +0 -0
  45. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/__init__.py +0 -0
  46. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/cache.py +0 -0
  47. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/contexts.py +0 -0
  48. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/currents.py +0 -0
  49. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/fns.py +0 -0
  50. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/resolvers.py +0 -0
  51. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/storage.py +0 -0
  52. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/types.py +0 -0
  53. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/data/__init__.py +0 -0
  54. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/data/actions.py +0 -0
  55. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/data/cache.py +0 -0
  56. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/data/consts.py +0 -0
  57. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/data/defaults.py +0 -0
  58. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/data/manifests.py +0 -0
  59. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/data/specs.py +0 -0
  60. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/__init__.py +0 -0
  61. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_boilerplate.cc +0 -0
  62. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/LICENSE +0 -0
  63. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/__init__.py +0 -0
  64. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/build_ext.py +0 -0
  65. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  66. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  67. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/compilers/options.py +0 -0
  68. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  69. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/dir_util.py +0 -0
  70. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/errors.py +0 -0
  71. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/extension.py +0 -0
  72. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/file_util.py +0 -0
  73. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/modified.py +0 -0
  74. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/spawn.py +0 -0
  75. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/sysconfig.py +0 -0
  76. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/util.py +0 -0
  77. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/version.py +0 -0
  78. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/build.py +0 -0
  79. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/cmake.py +0 -0
  80. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/importhook.py +0 -0
  81. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/magic.py +0 -0
  82. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/scan.py +0 -0
  83. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/classdot.py +0 -0
  84. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/__init__.py +0 -0
  85. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/__main__.py +0 -0
  86. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/_pathhack.py +0 -0
  87. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/install.py +0 -0
  88. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/main.py +0 -0
  89. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/managers.py +0 -0
  90. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/types.py +0 -0
  91. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/clipboard/__init__.py +0 -0
  92. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/clipboard/clipboard.py +0 -0
  93. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/clipboard/darwin_cf.py +0 -0
  94. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/clipboard/linux_x11.py +0 -0
  95. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cmake.py +0 -0
  96. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/findimports.py +0 -0
  97. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/git/__init__.py +0 -0
  98. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/git/revisions.py +0 -0
  99. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/git/status.py +0 -0
  100. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/git/subtrees.py +0 -0
  101. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/__init__.py +0 -0
  102. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/__main__.py +0 -0
  103. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/default.py +0 -0
  104. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/inject.py +0 -0
  105. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/inspect.py +0 -0
  106. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/providers/__init__.py +0 -0
  107. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/providers/base.py +0 -0
  108. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/providers/inject.py +0 -0
  109. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/providers/running.py +0 -0
  110. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/providers/standalone.py +0 -0
  111. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/providers/system.py +0 -0
  112. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/pyenv/__init__.py +0 -0
  113. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/pyenv/inject.py +0 -0
  114. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/pyenv/pyenv.py +0 -0
  115. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/resolvers.py +0 -0
  116. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/types.py +0 -0
  117. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/uv/__init__.py +0 -0
  118. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/uv/inject.py +0 -0
  119. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/uv/uv.py +0 -0
  120. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/magic/__init__.py +0 -0
  121. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/magic/magic.py +0 -0
  122. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/magic/prepare.py +0 -0
  123. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/magic/styles.py +0 -0
  124. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/manifests/__init__.py +0 -0
  125. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/manifests/__main__.py +0 -0
  126. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/manifests/build.py +0 -0
  127. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/manifests/main.py +0 -0
  128. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/mypy/__init__.py +0 -0
  129. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/mypy/debug.py +0 -0
  130. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/packaging/__init__.py +0 -0
  131. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/packaging/marshal.py +0 -0
  132. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/packaging/names.py +0 -0
  133. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/packaging/requires.py +0 -0
  134. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/packaging/specifiers.py +0 -0
  135. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/packaging/versions.py +0 -0
  136. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pip.py +0 -0
  137. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/__init__.py +0 -0
  138. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/__main__.py +0 -0
  139. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/base.py +0 -0
  140. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/git.py +0 -0
  141. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/lite.py +0 -0
  142. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/main.py +0 -0
  143. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/manifests.py +0 -0
  144. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/scripts.py +0 -0
  145. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/ptk/__init__.py +0 -0
  146. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/ptk/apps/__init__.py +0 -0
  147. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/ptk/apps/ncdu.py +0 -0
  148. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pycharm/__init__.py +0 -0
  149. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pycharm/__main__.py +0 -0
  150. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/__init__.py +0 -0
  151. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/__main__.py +0 -0
  152. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/cexts.py +0 -0
  153. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/configs.py +0 -0
  154. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/pkg.py +0 -0
  155. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/reqs.py +0 -0
  156. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/venvs.py +0 -0
  157. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/revisions.py +0 -0
  158. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/__init__.py +0 -0
  159. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/bumpversion.py +0 -0
  160. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/execrss.py +0 -0
  161. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/exectime.py +0 -0
  162. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/importtrace.py +0 -0
  163. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/slowcat.py +0 -0
  164. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/tmpexec.py +0 -0
  165. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/secrets.py +0 -0
  166. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tokens.py +0 -0
  167. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/toml/__init__.py +0 -0
  168. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/toml/parser.py +0 -0
  169. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/toml/writer.py +0 -0
  170. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/__init__.py +0 -0
  171. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/cloc.py +0 -0
  172. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/importscan.py +0 -0
  173. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/__init__.py +0 -0
  174. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/__main__.py +0 -0
  175. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/cli.py +0 -0
  176. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/formats.py +0 -0
  177. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/io.py +0 -0
  178. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/parsing.py +0 -0
  179. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/processing.py +0 -0
  180. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/rendering.py +0 -0
  181. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/mkrelimp.py +0 -0
  182. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/pawk/__init__.py +0 -0
  183. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/pawk/__main__.py +0 -0
  184. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/pawk/pawk.py +0 -0
  185. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/qr.py +0 -0
  186. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/wheelfile.py +0 -0
  187. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev.egg-info/dependency_links.txt +0 -0
  188. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev.egg-info/entry_points.txt +0 -0
  189. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev.egg-info/top_level.txt +0 -0
  190. {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev179
3
+ Version: 0.0.0.dev180
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.dev179
15
+ Requires-Dist: omlish==0.0.0.dev180
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=24.10; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -96,14 +96,14 @@
96
96
  }
97
97
  },
98
98
  {
99
- "module": ".magic.find",
99
+ "module": ".magic.__main__",
100
100
  "attr": "_CLI_MODULE",
101
- "file": "omdev/magic/find.py",
102
- "line": 230,
101
+ "file": "omdev/magic/__main__.py",
102
+ "line": 4,
103
103
  "value": {
104
104
  "$.cli.types.CliModule": {
105
- "cmd_name": "py/findmagic",
106
- "mod_name": "omdev.magic.find"
105
+ "cmd_name": "magic",
106
+ "mod_name": "omdev.magic.__main__"
107
107
  }
108
108
  }
109
109
  },
@@ -21,15 +21,15 @@ class CliCli(ap.Cli):
21
21
 
22
22
  #
23
23
 
24
- @ap.command(name='version', aliases=['ver'])
24
+ @ap.cmd(name='version', aliases=['ver'])
25
25
  def print_version(self) -> None:
26
26
  print(__about__.__version__)
27
27
 
28
- @ap.command(name='revision', aliases=['rev'])
28
+ @ap.cmd(name='revision', aliases=['rev'])
29
29
  def print_revision(self) -> None:
30
30
  print(__about__.__revision__)
31
31
 
32
- @ap.command(name='home')
32
+ @ap.cmd(name='home')
33
33
  def print_home(self) -> None:
34
34
  print(sys.prefix)
35
35
 
@@ -52,7 +52,7 @@ class CliCli(ap.Cli):
52
52
  ],
53
53
  )
54
54
 
55
- @ap.command(
55
+ @ap.cmd(
56
56
  ap.arg('args', nargs=ap.REMAINDER),
57
57
  name='python',
58
58
  accepts_unknown=True,
@@ -60,7 +60,7 @@ class CliCli(ap.Cli):
60
60
  def python_cmd(self) -> None:
61
61
  self._passthrough_args_cmd(sys.executable)
62
62
 
63
- @ap.command(
63
+ @ap.cmd(
64
64
  ap.arg('args', nargs=ap.REMAINDER),
65
65
  name='pip',
66
66
  accepts_unknown=True,
@@ -70,7 +70,7 @@ class CliCli(ap.Cli):
70
70
 
71
71
  #
72
72
 
73
- @ap.command(
73
+ @ap.cmd(
74
74
  ap.arg('--url', default=DEFAULT_REINSTALL_URL),
75
75
  ap.arg('--local', action='store_true'),
76
76
  ap.arg('extra_deps', nargs='*'),
@@ -107,7 +107,7 @@ def _main() -> None:
107
107
  from omlish.argparse import all as ap
108
108
 
109
109
  class Cli(ap.Cli):
110
- @ap.command(
110
+ @ap.cmd(
111
111
  ap.arg('file'),
112
112
  )
113
113
  def upload(self) -> None:
@@ -12,7 +12,7 @@ import typing as ta
12
12
 
13
13
  from omlish.argparse.cli import ArgparseCli
14
14
  from omlish.argparse.cli import argparse_arg
15
- from omlish.argparse.cli import argparse_command
15
+ from omlish.argparse.cli import argparse_cmd
16
16
  from omlish.lite.cached import cached_nullary
17
17
  from omlish.lite.check import check
18
18
  from omlish.lite.inject import Injector
@@ -37,7 +37,7 @@ class InterpCli(ArgparseCli):
37
37
 
38
38
  #
39
39
 
40
- @argparse_command(
40
+ @argparse_cmd(
41
41
  argparse_arg('version'),
42
42
  argparse_arg('-d', '--debug', action='store_true'),
43
43
  )
@@ -46,7 +46,7 @@ class InterpCli(ArgparseCli):
46
46
  s = InterpSpecifier.parse(self.args.version)
47
47
  await r.list(s)
48
48
 
49
- @argparse_command(
49
+ @argparse_cmd(
50
50
  argparse_arg('version'),
51
51
  argparse_arg('-p', '--provider'),
52
52
  argparse_arg('-d', '--debug', action='store_true'),
@@ -0,0 +1,11 @@
1
+ from ..cli import CliModule
2
+
3
+
4
+ # @omlish-manifest
5
+ _CLI_MODULE = CliModule('magic', __name__)
6
+
7
+
8
+ if __name__ == '__main__':
9
+ from .cli import _main
10
+
11
+ _main()
@@ -0,0 +1,54 @@
1
+ # ruff: noqa: UP006 UP007
2
+ import typing as ta
3
+
4
+ from omlish.argparse.cli import ArgparseCli
5
+ from omlish.argparse.cli import argparse_arg
6
+ from omlish.argparse.cli import argparse_cmd
7
+
8
+ from .find import find_magic_files
9
+ from .find import find_magic_py_modules
10
+ from .styles import C_MAGIC_STYLE
11
+ from .styles import PY_MAGIC_STYLE
12
+
13
+
14
+ ##
15
+
16
+
17
+ class MagicCli(ArgparseCli):
18
+ @argparse_cmd(
19
+ argparse_arg('--style', '-s', default='py'),
20
+ argparse_arg('--key', '-k', dest='keys', action='append'),
21
+ argparse_arg('--modules', action='store_true'),
22
+ argparse_arg('roots', nargs='*'),
23
+ )
24
+ def find(self) -> None:
25
+ style = {
26
+ 'py': PY_MAGIC_STYLE,
27
+ 'c': C_MAGIC_STYLE,
28
+ }[self.args.style]
29
+
30
+ kw: dict = dict(
31
+ roots=self.args.roots,
32
+ style=style,
33
+ keys=self.args.keys,
34
+ )
35
+
36
+ fn: ta.Callable
37
+ if self.args.modules:
38
+ fn = find_magic_py_modules
39
+ else:
40
+ fn = find_magic_files
41
+
42
+ for out in fn(**kw):
43
+ print(out)
44
+
45
+
46
+ ##
47
+
48
+
49
+ def _main(argv=None) -> None:
50
+ MagicCli(argv).cli_run_and_exit()
51
+
52
+
53
+ if __name__ == '__main__':
54
+ _main()
@@ -7,7 +7,6 @@ import typing as ta
7
7
  from .magic import Magic
8
8
  from .prepare import MagicPrepareError
9
9
  from .prepare import py_compile_magic_preparer
10
- from .styles import C_MAGIC_STYLE
11
10
  from .styles import PY_MAGIC_STYLE
12
11
  from .styles import MagicStyle
13
12
 
@@ -222,47 +221,3 @@ def find_magic_py_modules(
222
221
  yield fp[:-3].replace(os.sep, '.')
223
222
  else:
224
223
  yield fp
225
-
226
-
227
- ##
228
-
229
-
230
- # @omlish-manifest
231
- _CLI_MODULE = {'$omdev.cli.types.CliModule': {
232
- 'cmd_name': 'py/findmagic',
233
- 'mod_name': __name__,
234
- }}
235
-
236
-
237
- if __name__ == '__main__':
238
- def _main(argv=None) -> None:
239
- import argparse
240
-
241
- arg_parser = argparse.ArgumentParser()
242
- arg_parser.add_argument('--style', '-s', default='py')
243
- arg_parser.add_argument('--key', '-k', dest='keys', action='append')
244
- arg_parser.add_argument('--modules', action='store_true')
245
- arg_parser.add_argument('roots', nargs='*')
246
- args = arg_parser.parse_args(argv)
247
-
248
- style = {
249
- 'py': PY_MAGIC_STYLE,
250
- 'c': C_MAGIC_STYLE,
251
- }[args.style]
252
-
253
- kw: dict = dict(
254
- roots=args.roots,
255
- style=style,
256
- keys=args.keys,
257
- )
258
-
259
- fn: ta.Callable
260
- if args.modules:
261
- fn = find_magic_py_modules
262
- else:
263
- fn = find_magic_files
264
-
265
- for out in fn(**kw):
266
- print(out)
267
-
268
- _main()
@@ -77,11 +77,11 @@ def parse_wmctrl_lxp_line(l: str) -> WmctrlLine:
77
77
 
78
78
 
79
79
  class Cli(ap.Cli):
80
- @ap.command()
80
+ @ap.cmd()
81
81
  def version(self) -> None:
82
82
  print(get_pycharm_version())
83
83
 
84
- @ap.command(
84
+ @ap.cmd(
85
85
  ap.arg('python-exe'),
86
86
  ap.arg('args', nargs=ap.REMAINDER),
87
87
  )
@@ -99,7 +99,7 @@ class Cli(ap.Cli):
99
99
  proc = subprocess.run([exe, src_file, *self.args.args], check=False)
100
100
  return proc.returncode
101
101
 
102
- @ap.command(
102
+ @ap.cmd(
103
103
  ap.arg('dir', nargs='?'),
104
104
  ap.arg('--clion', action='store_true'),
105
105
  )
@@ -35,7 +35,7 @@ import typing as ta
35
35
 
36
36
  from omlish.argparse.cli import ArgparseCli
37
37
  from omlish.argparse.cli import argparse_arg
38
- from omlish.argparse.cli import argparse_command
38
+ from omlish.argparse.cli import argparse_cmd
39
39
  from omlish.asyncs.asyncio.subprocesses import asyncio_subprocesses
40
40
  from omlish.lite.cached import cached_nullary
41
41
  from omlish.lite.check import check
@@ -141,7 +141,7 @@ class Run:
141
141
  class PyprojectCli(ArgparseCli):
142
142
  _docker_container = argparse_arg('--_docker_container', help=argparse.SUPPRESS)
143
143
 
144
- @argparse_command(
144
+ @argparse_cmd(
145
145
  argparse_arg('name'),
146
146
  argparse_arg('-e', '--docker-env', action='append'),
147
147
  argparse_arg('cmd', nargs='?'),
@@ -223,7 +223,7 @@ class PyprojectCli(ArgparseCli):
223
223
  else:
224
224
  raise Exception(f'unknown subcommand: {cmd}')
225
225
 
226
- @argparse_command(
226
+ @argparse_cmd(
227
227
  argparse_arg('-b', '--build', action='store_true'),
228
228
  argparse_arg('-r', '--revision', action='store_true'),
229
229
  argparse_arg('-j', '--jobs', type=int),
@@ -78,7 +78,7 @@ UnparsedVersionVar = ta.TypeVar('UnparsedVersionVar', bound=UnparsedVersion)
78
78
  CallableVersionOperator = ta.Callable[['Version', str], bool]
79
79
 
80
80
  # ../../omlish/argparse/cli.py
81
- ArgparseCommandFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
81
+ ArgparseCmdFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
82
82
 
83
83
  # ../../omlish/lite/inject.py
84
84
  U = ta.TypeVar('U')
@@ -1953,15 +1953,15 @@ def argparse_arg(*args, **kwargs) -> ArgparseArg:
1953
1953
 
1954
1954
 
1955
1955
  @dc.dataclass(eq=False)
1956
- class ArgparseCommand:
1956
+ class ArgparseCmd:
1957
1957
  name: str
1958
- fn: ArgparseCommandFn
1958
+ fn: ArgparseCmdFn
1959
1959
  args: ta.Sequence[ArgparseArg] = () # noqa
1960
1960
 
1961
1961
  # _: dc.KW_ONLY
1962
1962
 
1963
1963
  aliases: ta.Optional[ta.Sequence[str]] = None
1964
- parent: ta.Optional['ArgparseCommand'] = None
1964
+ parent: ta.Optional['ArgparseCmd'] = None
1965
1965
  accepts_unknown: bool = False
1966
1966
 
1967
1967
  def __post_init__(self) -> None:
@@ -1976,7 +1976,7 @@ class ArgparseCommand:
1976
1976
 
1977
1977
  check.arg(callable(self.fn))
1978
1978
  check.arg(all(isinstance(a, ArgparseArg) for a in self.args))
1979
- check.isinstance(self.parent, (ArgparseCommand, type(None)))
1979
+ check.isinstance(self.parent, (ArgparseCmd, type(None)))
1980
1980
  check.isinstance(self.accepts_unknown, bool)
1981
1981
 
1982
1982
  functools.update_wrapper(self, self.fn)
@@ -1990,21 +1990,21 @@ class ArgparseCommand:
1990
1990
  return self.fn(*args, **kwargs)
1991
1991
 
1992
1992
 
1993
- def argparse_command(
1993
+ def argparse_cmd(
1994
1994
  *args: ArgparseArg,
1995
1995
  name: ta.Optional[str] = None,
1996
1996
  aliases: ta.Optional[ta.Iterable[str]] = None,
1997
- parent: ta.Optional[ArgparseCommand] = None,
1997
+ parent: ta.Optional[ArgparseCmd] = None,
1998
1998
  accepts_unknown: bool = False,
1999
- ) -> ta.Any: # ta.Callable[[ArgparseCommandFn], ArgparseCommand]: # FIXME
1999
+ ) -> ta.Any: # ta.Callable[[ArgparseCmdFn], ArgparseCmd]: # FIXME
2000
2000
  for arg in args:
2001
2001
  check.isinstance(arg, ArgparseArg)
2002
2002
  check.isinstance(name, (str, type(None)))
2003
- check.isinstance(parent, (ArgparseCommand, type(None)))
2003
+ check.isinstance(parent, (ArgparseCmd, type(None)))
2004
2004
  check.not_isinstance(aliases, str)
2005
2005
 
2006
2006
  def inner(fn):
2007
- return ArgparseCommand(
2007
+ return ArgparseCmd(
2008
2008
  (name if name is not None else fn.__name__).replace('_', '-'),
2009
2009
  fn,
2010
2010
  args,
@@ -2059,7 +2059,7 @@ class ArgparseCli:
2059
2059
  for bns in [bcls.__dict__ for bcls in reversed(mro)] + [ns]:
2060
2060
  bseen = set() # type: ignore
2061
2061
  for k, v in bns.items():
2062
- if isinstance(v, (ArgparseCommand, ArgparseArg)):
2062
+ if isinstance(v, (ArgparseCmd, ArgparseArg)):
2063
2063
  check.not_in(v, bseen)
2064
2064
  bseen.add(v)
2065
2065
  objs[k] = v
@@ -2086,7 +2086,7 @@ class ArgparseCli:
2086
2086
  subparsers = parser.add_subparsers()
2087
2087
 
2088
2088
  for att, obj in objs.items():
2089
- if isinstance(obj, ArgparseCommand):
2089
+ if isinstance(obj, ArgparseCmd):
2090
2090
  if obj.parent is not None:
2091
2091
  raise NotImplementedError
2092
2092
 
@@ -2148,7 +2148,7 @@ class ArgparseCli:
2148
2148
 
2149
2149
  #
2150
2150
 
2151
- def _bind_cli_cmd(self, cmd: ArgparseCommand) -> ta.Callable:
2151
+ def _bind_cli_cmd(self, cmd: ArgparseCmd) -> ta.Callable:
2152
2152
  return cmd.__get__(self, type(self))
2153
2153
 
2154
2154
  def prepare_cli_run(self) -> ta.Optional[ta.Callable]:
@@ -5034,7 +5034,7 @@ class InterpCli(ArgparseCli):
5034
5034
 
5035
5035
  #
5036
5036
 
5037
- @argparse_command(
5037
+ @argparse_cmd(
5038
5038
  argparse_arg('version'),
5039
5039
  argparse_arg('-d', '--debug', action='store_true'),
5040
5040
  )
@@ -5043,7 +5043,7 @@ class InterpCli(ArgparseCli):
5043
5043
  s = InterpSpecifier.parse(self.args.version)
5044
5044
  await r.list(s)
5045
5045
 
5046
- @argparse_command(
5046
+ @argparse_cmd(
5047
5047
  argparse_arg('version'),
5048
5048
  argparse_arg('-p', '--provider'),
5049
5049
  argparse_arg('-d', '--debug', action='store_true'),
@@ -114,7 +114,7 @@ UnparsedVersionVar = ta.TypeVar('UnparsedVersionVar', bound=UnparsedVersion)
114
114
  CallableVersionOperator = ta.Callable[['Version', str], bool]
115
115
 
116
116
  # ../../omlish/argparse/cli.py
117
- ArgparseCommandFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
117
+ ArgparseCmdFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
118
118
 
119
119
  # ../../omlish/lite/inject.py
120
120
  U = ta.TypeVar('U')
@@ -2910,16 +2910,6 @@ def find_magic_py_modules(
2910
2910
  yield fp
2911
2911
 
2912
2912
 
2913
- ##
2914
-
2915
-
2916
- # # @omlish-manifest
2917
- # _CLI_MODULE = {'$omdev.cli.types.CliModule': {
2918
- # 'cmd_name': 'py/findmagic',
2919
- # 'mod_name': __name__,
2920
- # }}
2921
-
2922
-
2923
2913
  ########################################
2924
2914
  # ../../packaging/specifiers.py
2925
2915
  # Copyright (c) Donald Stufft and individual contributors.
@@ -3553,15 +3543,15 @@ def argparse_arg(*args, **kwargs) -> ArgparseArg:
3553
3543
 
3554
3544
 
3555
3545
  @dc.dataclass(eq=False)
3556
- class ArgparseCommand:
3546
+ class ArgparseCmd:
3557
3547
  name: str
3558
- fn: ArgparseCommandFn
3548
+ fn: ArgparseCmdFn
3559
3549
  args: ta.Sequence[ArgparseArg] = () # noqa
3560
3550
 
3561
3551
  # _: dc.KW_ONLY
3562
3552
 
3563
3553
  aliases: ta.Optional[ta.Sequence[str]] = None
3564
- parent: ta.Optional['ArgparseCommand'] = None
3554
+ parent: ta.Optional['ArgparseCmd'] = None
3565
3555
  accepts_unknown: bool = False
3566
3556
 
3567
3557
  def __post_init__(self) -> None:
@@ -3576,7 +3566,7 @@ class ArgparseCommand:
3576
3566
 
3577
3567
  check.arg(callable(self.fn))
3578
3568
  check.arg(all(isinstance(a, ArgparseArg) for a in self.args))
3579
- check.isinstance(self.parent, (ArgparseCommand, type(None)))
3569
+ check.isinstance(self.parent, (ArgparseCmd, type(None)))
3580
3570
  check.isinstance(self.accepts_unknown, bool)
3581
3571
 
3582
3572
  functools.update_wrapper(self, self.fn)
@@ -3590,21 +3580,21 @@ class ArgparseCommand:
3590
3580
  return self.fn(*args, **kwargs)
3591
3581
 
3592
3582
 
3593
- def argparse_command(
3583
+ def argparse_cmd(
3594
3584
  *args: ArgparseArg,
3595
3585
  name: ta.Optional[str] = None,
3596
3586
  aliases: ta.Optional[ta.Iterable[str]] = None,
3597
- parent: ta.Optional[ArgparseCommand] = None,
3587
+ parent: ta.Optional[ArgparseCmd] = None,
3598
3588
  accepts_unknown: bool = False,
3599
- ) -> ta.Any: # ta.Callable[[ArgparseCommandFn], ArgparseCommand]: # FIXME
3589
+ ) -> ta.Any: # ta.Callable[[ArgparseCmdFn], ArgparseCmd]: # FIXME
3600
3590
  for arg in args:
3601
3591
  check.isinstance(arg, ArgparseArg)
3602
3592
  check.isinstance(name, (str, type(None)))
3603
- check.isinstance(parent, (ArgparseCommand, type(None)))
3593
+ check.isinstance(parent, (ArgparseCmd, type(None)))
3604
3594
  check.not_isinstance(aliases, str)
3605
3595
 
3606
3596
  def inner(fn):
3607
- return ArgparseCommand(
3597
+ return ArgparseCmd(
3608
3598
  (name if name is not None else fn.__name__).replace('_', '-'),
3609
3599
  fn,
3610
3600
  args,
@@ -3659,7 +3649,7 @@ class ArgparseCli:
3659
3649
  for bns in [bcls.__dict__ for bcls in reversed(mro)] + [ns]:
3660
3650
  bseen = set() # type: ignore
3661
3651
  for k, v in bns.items():
3662
- if isinstance(v, (ArgparseCommand, ArgparseArg)):
3652
+ if isinstance(v, (ArgparseCmd, ArgparseArg)):
3663
3653
  check.not_in(v, bseen)
3664
3654
  bseen.add(v)
3665
3655
  objs[k] = v
@@ -3686,7 +3676,7 @@ class ArgparseCli:
3686
3676
  subparsers = parser.add_subparsers()
3687
3677
 
3688
3678
  for att, obj in objs.items():
3689
- if isinstance(obj, ArgparseCommand):
3679
+ if isinstance(obj, ArgparseCmd):
3690
3680
  if obj.parent is not None:
3691
3681
  raise NotImplementedError
3692
3682
 
@@ -3748,7 +3738,7 @@ class ArgparseCli:
3748
3738
 
3749
3739
  #
3750
3740
 
3751
- def _bind_cli_cmd(self, cmd: ArgparseCommand) -> ta.Callable:
3741
+ def _bind_cli_cmd(self, cmd: ArgparseCmd) -> ta.Callable:
3752
3742
  return cmd.__get__(self, type(self))
3753
3743
 
3754
3744
  def prepare_cli_run(self) -> ta.Optional[ta.Callable]:
@@ -8152,7 +8142,7 @@ class Run:
8152
8142
  class PyprojectCli(ArgparseCli):
8153
8143
  _docker_container = argparse_arg('--_docker_container', help=argparse.SUPPRESS)
8154
8144
 
8155
- @argparse_command(
8145
+ @argparse_cmd(
8156
8146
  argparse_arg('name'),
8157
8147
  argparse_arg('-e', '--docker-env', action='append'),
8158
8148
  argparse_arg('cmd', nargs='?'),
@@ -8234,7 +8224,7 @@ class PyprojectCli(ArgparseCli):
8234
8224
  else:
8235
8225
  raise Exception(f'unknown subcommand: {cmd}')
8236
8226
 
8237
- @argparse_command(
8227
+ @argparse_cmd(
8238
8228
  argparse_arg('-b', '--build', action='store_true'),
8239
8229
  argparse_arg('-r', '--revision', action='store_true'),
8240
8230
  argparse_arg('-j', '--jobs', type=int),
@@ -64,7 +64,7 @@ class Cli(ap.Cli):
64
64
 
65
65
  return src, name
66
66
 
67
- @ap.command(
67
+ @ap.cmd(
68
68
  ap.arg('input-file', nargs='?'),
69
69
  ap.arg('--report-level', type=int),
70
70
  ap.arg('-O', '--open', action='store_true'),
@@ -85,7 +85,7 @@ class Cli(ap.Cli):
85
85
  else:
86
86
  print(html)
87
87
 
88
- @ap.command(
88
+ @ap.cmd(
89
89
  ap.arg('input-file', nargs='?'),
90
90
  ap.arg('-O', '--open', action='store_true'),
91
91
  )
@@ -37,7 +37,7 @@ def get_local_platform() -> str:
37
37
 
38
38
 
39
39
  class Cli(ap.Cli):
40
- @ap.command(
40
+ @ap.cmd(
41
41
  ap.arg('args', nargs='*'),
42
42
  )
43
43
  def ns1(self) -> None:
@@ -69,7 +69,7 @@ class Cli(ap.Cli):
69
69
  *self.args.args,
70
70
  )
71
71
 
72
- @ap.command(
72
+ @ap.cmd(
73
73
  ap.arg('--amd64', action='store_true'),
74
74
  )
75
75
  def enable_ptrace(self) -> None:
@@ -87,7 +87,7 @@ class Cli(ap.Cli):
87
87
  'sh', '-c', 'echo 0 > /proc/sys/kernel/yama/ptrace_scope',
88
88
  )
89
89
 
90
- @ap.command(
90
+ @ap.cmd(
91
91
  ap.arg('-f', '--file'),
92
92
  ap.arg('-w', '--write', action='store_true'),
93
93
  ap.arg('-q', '--quiet', action='store_true'),
@@ -182,7 +182,7 @@ class Cli(ap.Cli):
182
182
  with open(yml_file, 'w') as f:
183
183
  f.write(new_src)
184
184
 
185
- @ap.command(
185
+ @ap.cmd(
186
186
  ap.arg('repo'),
187
187
  ap.arg('tags', nargs='*'),
188
188
  )
@@ -192,7 +192,7 @@ class Cli(ap.Cli):
192
192
  print(json.dumps_pretty(msh.marshal(info)))
193
193
  return 0
194
194
 
195
- @ap.command(
195
+ @ap.cmd(
196
196
  ap.arg('image'),
197
197
  )
198
198
  def repo_latest_image(self) -> int:
@@ -205,7 +205,7 @@ class Cli(ap.Cli):
205
205
  print(dck.select_latest_tag(info.tags, base=base))
206
206
  return 0
207
207
 
208
- @ap.command(
208
+ @ap.cmd(
209
209
  ap.arg('-f', '--file'),
210
210
  )
211
211
  def compose_image_updates(self) -> None:
@@ -234,7 +234,7 @@ class Cli(ap.Cli):
234
234
 
235
235
  #
236
236
 
237
- @ap.command()
237
+ @ap.cmd()
238
238
  def dockly(self) -> None:
239
239
  os.execl(
240
240
  exe := docker_exe(),
@@ -244,7 +244,7 @@ class Cli(ap.Cli):
244
244
  'lirantal/dockly',
245
245
  )
246
246
 
247
- @ap.command()
247
+ @ap.cmd()
248
248
  def lazy(self) -> None:
249
249
  os.execl(
250
250
  exe := docker_exe(),
@@ -43,7 +43,7 @@ def get_first_commit_of_day(rev: str) -> str | None:
43
43
 
44
44
 
45
45
  class Cli(ap.Cli):
46
- @ap.command()
46
+ @ap.cmd()
47
47
  def blob_sizes(self) -> None:
48
48
  # https://stackoverflow.com/a/42544963
49
49
  subprocess.check_call( # noqa
@@ -56,7 +56,7 @@ class Cli(ap.Cli):
56
56
 
57
57
  #
58
58
 
59
- @ap.command()
59
+ @ap.cmd()
60
60
  def commits_by_date(self) -> None:
61
61
  subprocess.check_call(['git log --date=short --pretty=format:%ad | sort | uniq -c'], shell=True) # noqa
62
62
 
@@ -64,7 +64,7 @@ class Cli(ap.Cli):
64
64
 
65
65
  _GITHUB_PAT = re.compile(r'((http(s)?://)?(www\./)?github(\.com)?/)?(?P<user>[^/.]+)/(?P<repo>[^/.]+)(/.*)?')
66
66
 
67
- @ap.command(
67
+ @ap.cmd(
68
68
  ap.arg('repo'),
69
69
  ap.arg('args', nargs=ap.REMAINDER),
70
70
  accepts_unknown=True,
@@ -107,7 +107,7 @@ class Cli(ap.Cli):
107
107
  finally:
108
108
  print(out_dir)
109
109
 
110
- @ap.command(
110
+ @ap.cmd(
111
111
  ap.arg('rev', nargs='?', default='HEAD'),
112
112
  ap.arg('-d', '--diff', action='store_true'),
113
113
  ap.arg('-s', '--stat', action='store_true'),
@@ -147,7 +147,7 @@ class Cli(ap.Cli):
147
147
  else:
148
148
  print(base_rev)
149
149
 
150
- @ap.command(
150
+ @ap.cmd(
151
151
  ap.arg('-v', '--verbose', action='store_true'),
152
152
  )
153
153
  def status(self) -> None:
@@ -184,7 +184,7 @@ class Cli(ap.Cli):
184
184
 
185
185
  # Lazy helpers
186
186
 
187
- @ap.command(
187
+ @ap.cmd(
188
188
  ap.arg('-m', '--message', nargs='?'),
189
189
  ap.arg('--time-fmt', default='%Y-%m-%dT%H:%M:%SZ'),
190
190
  aliases=['acp'],
@@ -204,7 +204,7 @@ class Cli(ap.Cli):
204
204
 
205
205
  subprocess.check_call(['git', 'push'])
206
206
 
207
- @ap.command(
207
+ @ap.cmd(
208
208
  aliases=['psu'],
209
209
  )
210
210
  def pull_submodule_update(self) -> None:
@@ -18,7 +18,7 @@ from ..cli import CliModule
18
18
 
19
19
 
20
20
  class Cli(ap.Cli):
21
- @ap.command(
21
+ @ap.cmd(
22
22
  ap.arg('file'),
23
23
  ap.arg('-w', '--write', action='store_true'),
24
24
  ap.arg('-o', '--overwrite', action='store_true'),