omdev 0.0.0.dev102__tar.gz → 0.0.0.dev103__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.

Potentially problematic release.


This version of omdev might be problematic. Click here for more details.

Files changed (150) hide show
  1. {omdev-0.0.0.dev102/omdev.egg-info → omdev-0.0.0.dev103}/PKG-INFO +2 -2
  2. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/.manifests.json +1 -1
  3. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/ptk/apps/ncdu.py +4 -6
  4. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/scripts/interp.py +24 -2
  5. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/scripts/pyproject.py +25 -3
  6. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103/omdev.egg-info}/PKG-INFO +2 -2
  7. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev.egg-info/requires.txt +1 -1
  8. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/pyproject.toml +2 -2
  9. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/LICENSE +0 -0
  10. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/MANIFEST.in +0 -0
  11. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/README.rst +0 -0
  12. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/__about__.py +0 -0
  13. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/__init__.py +0 -0
  14. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/amalg/__init__.py +0 -0
  15. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/amalg/__main__.py +0 -0
  16. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/amalg/amalg.py +0 -0
  17. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/antlr/__init__.py +0 -0
  18. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/antlr/_antlr/__init__.py +0 -0
  19. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/antlr/consts.py +0 -0
  20. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/antlr/gen.py +0 -0
  21. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/bracepy.py +0 -0
  22. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/__init__.py +0 -0
  23. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/compute/__init__.py +0 -0
  24. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/compute/cache.py +0 -0
  25. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/compute/contexts.py +0 -0
  26. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/compute/currents.py +0 -0
  27. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/compute/fns.py +0 -0
  28. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/compute/resolvers.py +0 -0
  29. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/compute/storage.py +0 -0
  30. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/compute/types.py +0 -0
  31. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/data/__init__.py +0 -0
  32. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/data/actions.py +0 -0
  33. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/data/cache.py +0 -0
  34. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/data/consts.py +0 -0
  35. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/data/defaults.py +0 -0
  36. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/data/manifests.py +0 -0
  37. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cache/data/specs.py +0 -0
  38. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/__init__.py +0 -0
  39. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_boilerplate.cc +0 -0
  40. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/LICENSE +0 -0
  41. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/__init__.py +0 -0
  42. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/build_ext.py +0 -0
  43. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  44. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  45. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/compilers/options.py +0 -0
  46. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  47. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/dir_util.py +0 -0
  48. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/errors.py +0 -0
  49. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/extension.py +0 -0
  50. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/file_util.py +0 -0
  51. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/modified.py +0 -0
  52. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/spawn.py +0 -0
  53. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/sysconfig.py +0 -0
  54. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/util.py +0 -0
  55. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/_distutils/version.py +0 -0
  56. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/build.py +0 -0
  57. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/cmake.py +0 -0
  58. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/importhook.py +0 -0
  59. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/magic.py +0 -0
  60. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cexts/scan.py +0 -0
  61. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/classdot.py +0 -0
  62. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cli/__init__.py +0 -0
  63. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cli/__main__.py +0 -0
  64. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cli/_pathhack.py +0 -0
  65. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cli/clicli.py +0 -0
  66. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cli/install.py +0 -0
  67. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cli/main.py +0 -0
  68. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cli/managers.py +0 -0
  69. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cli/types.py +0 -0
  70. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/clipboard/__init__.py +0 -0
  71. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/clipboard/clipboard.py +0 -0
  72. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/clipboard/darwin.py +0 -0
  73. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/cmake.py +0 -0
  74. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/findimports.py +0 -0
  75. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/git.py +0 -0
  76. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/imgur.py +0 -0
  77. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/interp/__init__.py +0 -0
  78. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/interp/__main__.py +0 -0
  79. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/interp/cli.py +0 -0
  80. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/interp/inspect.py +0 -0
  81. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/interp/providers.py +0 -0
  82. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/interp/pyenv.py +0 -0
  83. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/interp/resolvers.py +0 -0
  84. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/interp/standalone.py +0 -0
  85. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/interp/system.py +0 -0
  86. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/interp/types.py +0 -0
  87. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/magic/__init__.py +0 -0
  88. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/magic/find.py +0 -0
  89. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/magic/magic.py +0 -0
  90. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/magic/prepare.py +0 -0
  91. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/magic/styles.py +0 -0
  92. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/manifests/__init__.py +0 -0
  93. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/manifests/build.py +0 -0
  94. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/manifests/load.py +0 -0
  95. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/manifests/types.py +0 -0
  96. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/mypy/__init__.py +0 -0
  97. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/mypy/debug.py +0 -0
  98. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/packaging/__init__.py +0 -0
  99. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/packaging/names.py +0 -0
  100. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/packaging/requires.py +0 -0
  101. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/packaging/specifiers.py +0 -0
  102. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/packaging/versions.py +0 -0
  103. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/precheck/__init__.py +0 -0
  104. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/precheck/__main__.py +0 -0
  105. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/precheck/base.py +0 -0
  106. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/precheck/git.py +0 -0
  107. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/precheck/lite.py +0 -0
  108. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/precheck/main.py +0 -0
  109. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/precheck/manifests.py +0 -0
  110. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/precheck/scripts.py +0 -0
  111. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/ptk/__init__.py +0 -0
  112. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/ptk/apps/__init__.py +0 -0
  113. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/pyproject/__init__.py +0 -0
  114. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/pyproject/__main__.py +0 -0
  115. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/pyproject/cexts.py +0 -0
  116. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/pyproject/cli.py +0 -0
  117. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/pyproject/configs.py +0 -0
  118. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/pyproject/pkg.py +0 -0
  119. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/pyproject/reqs.py +0 -0
  120. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/revisions.py +0 -0
  121. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/scripts/__init__.py +0 -0
  122. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/scripts/bumpversion.py +0 -0
  123. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/scripts/execrss.py +0 -0
  124. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/scripts/exectime.py +0 -0
  125. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/scripts/importtrace.py +0 -0
  126. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/scripts/slowcat.py +0 -0
  127. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/secrets.py +0 -0
  128. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/tokens.py +0 -0
  129. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/toml/__init__.py +0 -0
  130. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/toml/parser.py +0 -0
  131. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/toml/writer.py +0 -0
  132. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/tools/__init__.py +0 -0
  133. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/tools/doc.py +0 -0
  134. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/tools/docker.py +0 -0
  135. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/tools/git.py +0 -0
  136. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/tools/importscan.py +0 -0
  137. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/tools/mkrelimp.py +0 -0
  138. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/tools/notebook.py +0 -0
  139. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/tools/pawk/__init__.py +0 -0
  140. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/tools/pawk/__main__.py +0 -0
  141. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/tools/pawk/pawk.py +0 -0
  142. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/tools/pip.py +0 -0
  143. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/tools/prof.py +0 -0
  144. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/tools/sqlrepl.py +0 -0
  145. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev/wheelfile.py +0 -0
  146. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev.egg-info/SOURCES.txt +0 -0
  147. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev.egg-info/dependency_links.txt +0 -0
  148. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev.egg-info/entry_points.txt +0 -0
  149. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/omdev.egg-info/top_level.txt +0 -0
  150. {omdev-0.0.0.dev102 → omdev-0.0.0.dev103}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev102
3
+ Version: 0.0.0.dev103
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.dev102
15
+ Requires-Dist: omlish==0.0.0.dev103
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=24.10; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -123,7 +123,7 @@
123
123
  "module": ".ptk.apps.ncdu",
124
124
  "attr": "_CLI_MODULE",
125
125
  "file": "omdev/ptk/apps/ncdu.py",
126
- "line": 157,
126
+ "line": 155,
127
127
  "value": {
128
128
  "$.cli.types.CliModule": {
129
129
  "cmd_name": "ptk/ncdu",
@@ -69,12 +69,10 @@ class NcduApp:
69
69
 
70
70
  self._kb = ptk.KeyBindings()
71
71
  self._kb.add('q')(self.exit_app)
72
- for k in ['up', 'p']:
73
- self._kb.add(k)(self.move_up)
74
- for k in ['down', 'n']:
75
- self._kb.add(k)(self.move_down)
76
- self._kb.add('enter')(self.enter_directory)
77
- self._kb.add('backspace')(self.go_back)
72
+ self._kb.add('up', 'p')(self.move_up)
73
+ self._kb.add('down', 'n')(self.move_down)
74
+ self._kb.add('right', 'enter')(self.enter_directory)
75
+ self._kb.add('left', 'backspace')(self.go_back)
78
76
 
79
77
  self._layout = ptk.Layout(ptk.Frame(self._text_area))
80
78
 
@@ -51,7 +51,7 @@ VersionCmpLocalType = ta.Union['NegativeInfinityVersionType', _VersionCmpLocalTy
51
51
  VersionCmpKey = ta.Tuple[int, ta.Tuple[int, ...], VersionCmpPrePostDevType, VersionCmpPrePostDevType, VersionCmpPrePostDevType, VersionCmpLocalType] # noqa
52
52
  VersionComparisonMethod = ta.Callable[[VersionCmpKey, VersionCmpKey], bool]
53
53
 
54
- # ../../../omlish/lite/check.py
54
+ # ../../../omlish/lite/cached.py
55
55
  T = ta.TypeVar('T')
56
56
 
57
57
  # ../../packaging/specifiers.py
@@ -471,7 +471,7 @@ def canonicalize_version(
471
471
  # ../../../omlish/lite/cached.py
472
472
 
473
473
 
474
- class cached_nullary: # noqa
474
+ class _cached_nullary: # noqa
475
475
  def __init__(self, fn):
476
476
  super().__init__()
477
477
  self._fn = fn
@@ -488,6 +488,10 @@ class cached_nullary: # noqa
488
488
  return bound
489
489
 
490
490
 
491
+ def cached_nullary(fn: ta.Callable[..., T]) -> ta.Callable[..., T]:
492
+ return _cached_nullary(fn)
493
+
494
+
491
495
  ########################################
492
496
  # ../../../omlish/lite/check.py
493
497
 
@@ -1692,6 +1696,24 @@ def subprocess_try_output_str(*args: str, **kwargs: ta.Any) -> ta.Optional[str]:
1692
1696
  return out.decode().strip() if out is not None else None
1693
1697
 
1694
1698
 
1699
+ ##
1700
+
1701
+
1702
+ def subprocess_close(
1703
+ proc: subprocess.Popen,
1704
+ timeout: ta.Optional[float] = None,
1705
+ ) -> None:
1706
+ # TODO: terminate, sleep, kill
1707
+ if proc.stdout:
1708
+ proc.stdout.close()
1709
+ if proc.stderr:
1710
+ proc.stderr.close()
1711
+ if proc.stdin:
1712
+ proc.stdin.close()
1713
+
1714
+ proc.wait(timeout)
1715
+
1716
+
1695
1717
  ########################################
1696
1718
  # ../inspect.py
1697
1719
 
@@ -90,7 +90,7 @@ TomlParseFloat = ta.Callable[[str], ta.Any]
90
90
  TomlKey = ta.Tuple[str, ...]
91
91
  TomlPos = int # ta.TypeAlias
92
92
 
93
- # ../../../omlish/lite/check.py
93
+ # ../../../omlish/lite/cached.py
94
94
  T = ta.TypeVar('T')
95
95
 
96
96
  # ../../packaging/specifiers.py
@@ -1862,7 +1862,7 @@ class WheelFile(zipfile.ZipFile):
1862
1862
  # ../../../omlish/lite/cached.py
1863
1863
 
1864
1864
 
1865
- class cached_nullary: # noqa
1865
+ class _cached_nullary: # noqa
1866
1866
  def __init__(self, fn):
1867
1867
  super().__init__()
1868
1868
  self._fn = fn
@@ -1879,6 +1879,10 @@ class cached_nullary: # noqa
1879
1879
  return bound
1880
1880
 
1881
1881
 
1882
+ def cached_nullary(fn: ta.Callable[..., T]) -> ta.Callable[..., T]:
1883
+ return _cached_nullary(fn)
1884
+
1885
+
1882
1886
  ########################################
1883
1887
  # ../../../omlish/lite/check.py
1884
1888
 
@@ -3235,7 +3239,7 @@ class DataclassObjMarshaler(ObjMarshaler):
3235
3239
  return {k: m.marshal(getattr(o, k)) for k, m in self.fs.items()}
3236
3240
 
3237
3241
  def unmarshal(self, o: ta.Any) -> ta.Any:
3238
- return self.ty(**{k: self.fs[k].unmarshal(v) for k, v in o.items() if self.nonstrict or k in self.fs})
3242
+ return self.ty(**{k: self.fs[k].unmarshal(v) for k, v in o.items() if not self.nonstrict or k in self.fs})
3239
3243
 
3240
3244
 
3241
3245
  @dc.dataclass(frozen=True)
@@ -3916,6 +3920,24 @@ def subprocess_try_output_str(*args: str, **kwargs: ta.Any) -> ta.Optional[str]:
3916
3920
  return out.decode().strip() if out is not None else None
3917
3921
 
3918
3922
 
3923
+ ##
3924
+
3925
+
3926
+ def subprocess_close(
3927
+ proc: subprocess.Popen,
3928
+ timeout: ta.Optional[float] = None,
3929
+ ) -> None:
3930
+ # TODO: terminate, sleep, kill
3931
+ if proc.stdout:
3932
+ proc.stdout.close()
3933
+ if proc.stderr:
3934
+ proc.stderr.close()
3935
+ if proc.stdin:
3936
+ proc.stdin.close()
3937
+
3938
+ proc.wait(timeout)
3939
+
3940
+
3919
3941
  ########################################
3920
3942
  # ../../interp/inspect.py
3921
3943
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev102
3
+ Version: 0.0.0.dev103
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.dev102
15
+ Requires-Dist: omlish==0.0.0.dev103
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=24.10; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -1,4 +1,4 @@
1
- omlish==0.0.0.dev102
1
+ omlish==0.0.0.dev103
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.dev102'
15
+ version = '0.0.0.dev103'
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.dev102',
25
+ 'omlish == 0.0.0.dev103',
26
26
  ]
27
27
 
28
28
  [project.optional-dependencies]
File without changes
File without changes
File without changes
File without changes
File without changes