omdev 0.0.0.dev362__py3-none-any.whl → 0.0.0.dev364__py3-none-any.whl

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 (48) hide show
  1. omdev/.manifests.json +9 -9
  2. omdev/__about__.py +1 -1
  3. omdev/cache/compute/cache.py +3 -0
  4. omdev/cache/compute/resolvers.py +3 -0
  5. omdev/cache/compute/storage.py +3 -0
  6. omdev/cc/cdeps.py +3 -0
  7. omdev/cexts/build.py +3 -0
  8. omdev/cexts/magic.py +3 -0
  9. omdev/cexts/scan.py +3 -0
  10. omdev/ci/cli.py +3 -0
  11. omdev/ci/github/bootstrap.py +3 -0
  12. omdev/ci/github/cli.py +3 -0
  13. omdev/ci/github/env.py +3 -0
  14. omdev/git/revisions.py +3 -0
  15. omdev/git/shallow.py +3 -0
  16. omdev/git/status.py +3 -0
  17. omdev/manifests/dumping.py +3 -0
  18. omdev/manifests/main.py +3 -0
  19. omdev/oci/compression.py +3 -0
  20. omdev/packaging/names.py +3 -0
  21. omdev/packaging/requires.py +3 -0
  22. omdev/packaging/wheelfile.py +3 -0
  23. omdev/py/scripts/bumpversion.py +3 -0
  24. omdev/py/tools/mkrelimp.py +3 -0
  25. omdev/pyproject/cexts.py +3 -0
  26. omdev/pyproject/configs.py +3 -0
  27. omdev/pyproject/inject.py +3 -0
  28. omdev/pyproject/pkg.py +1 -1
  29. omdev/pyproject/reqs.py +3 -0
  30. omdev/scripts/ci.py +34 -4
  31. omdev/scripts/interp.py +7 -4
  32. omdev/scripts/pyproject.py +26 -5
  33. omdev/tools/diff.py +3 -0
  34. omdev/tools/docker.py +4 -1
  35. omdev/tools/json/cli.py +2 -0
  36. omdev/tools/json/processing.py +14 -0
  37. omdev/tools/notebook.py +3 -0
  38. omdev/tools/pawk/pawk.py +3 -0
  39. omdev/tools/pip.py +3 -0
  40. omdev/tools/prof.py +3 -0
  41. omdev/tools/qr.py +3 -0
  42. omdev/tools/sqlrepl.py +3 -0
  43. {omdev-0.0.0.dev362.dist-info → omdev-0.0.0.dev364.dist-info}/METADATA +4 -4
  44. {omdev-0.0.0.dev362.dist-info → omdev-0.0.0.dev364.dist-info}/RECORD +48 -48
  45. {omdev-0.0.0.dev362.dist-info → omdev-0.0.0.dev364.dist-info}/WHEEL +0 -0
  46. {omdev-0.0.0.dev362.dist-info → omdev-0.0.0.dev364.dist-info}/entry_points.txt +0 -0
  47. {omdev-0.0.0.dev362.dist-info → omdev-0.0.0.dev364.dist-info}/licenses/LICENSE +0 -0
  48. {omdev-0.0.0.dev362.dist-info → omdev-0.0.0.dev364.dist-info}/top_level.txt +0 -0
omdev/.manifests.json CHANGED
@@ -246,7 +246,7 @@
246
246
  "module": ".py.tools.mkrelimp",
247
247
  "attr": "_CLI_MODULE",
248
248
  "file": "omdev/py/tools/mkrelimp.py",
249
- "line": 146,
249
+ "line": 149,
250
250
  "value": {
251
251
  "$.cli.types.CliModule": {
252
252
  "cmd_name": "py/mkrelimp",
@@ -318,7 +318,7 @@
318
318
  "module": ".tools.diff",
319
319
  "attr": "_CLI_MODULE",
320
320
  "file": "omdev/tools/diff.py",
321
- "line": 21,
321
+ "line": 24,
322
322
  "value": {
323
323
  "$.cli.types.CliModule": {
324
324
  "cmd_name": "diff",
@@ -342,7 +342,7 @@
342
342
  "module": ".tools.docker",
343
343
  "attr": "_CLI_MODULE",
344
344
  "file": "omdev/tools/docker.py",
345
- "line": 256,
345
+ "line": 259,
346
346
  "value": {
347
347
  "$.cli.types.CliModule": {
348
348
  "cmd_name": "docker",
@@ -453,7 +453,7 @@
453
453
  "module": ".tools.notebook",
454
454
  "attr": "_CLI_MODULE",
455
455
  "file": "omdev/tools/notebook.py",
456
- "line": 120,
456
+ "line": 123,
457
457
  "value": {
458
458
  "$.cli.types.CliModule": {
459
459
  "cmd_name": [
@@ -468,7 +468,7 @@
468
468
  "module": ".tools.pawk.pawk",
469
469
  "attr": "_CLI_MODULE",
470
470
  "file": "omdev/tools/pawk/pawk.py",
471
- "line": 389,
471
+ "line": 392,
472
472
  "value": {
473
473
  "$.cli.types.CliModule": {
474
474
  "cmd_name": "pawk",
@@ -480,7 +480,7 @@
480
480
  "module": ".tools.pip",
481
481
  "attr": "_CLI_MODULE",
482
482
  "file": "omdev/tools/pip.py",
483
- "line": 120,
483
+ "line": 123,
484
484
  "value": {
485
485
  "$.cli.types.CliModule": {
486
486
  "cmd_name": "pip",
@@ -492,7 +492,7 @@
492
492
  "module": ".tools.prof",
493
493
  "attr": "_CLI_MODULE",
494
494
  "file": "omdev/tools/prof.py",
495
- "line": 54,
495
+ "line": 57,
496
496
  "value": {
497
497
  "$.cli.types.CliModule": {
498
498
  "cmd_name": "prof",
@@ -504,7 +504,7 @@
504
504
  "module": ".tools.qr",
505
505
  "attr": "_CLI_MODULE",
506
506
  "file": "omdev/tools/qr.py",
507
- "line": 74,
507
+ "line": 77,
508
508
  "value": {
509
509
  "$.cli.types.CliModule": {
510
510
  "cmd_name": "qr",
@@ -543,7 +543,7 @@
543
543
  "module": ".tools.sqlrepl",
544
544
  "attr": "_CLI_MODULE",
545
545
  "file": "omdev/tools/sqlrepl.py",
546
- "line": 193,
546
+ "line": 196,
547
547
  "value": {
548
548
  "$.cli.types.CliModule": {
549
549
  "cmd_name": "sqlrepl",
omdev/__about__.py CHANGED
@@ -31,7 +31,7 @@ class Project(ProjectBase):
31
31
  ],
32
32
 
33
33
  'mypy': [
34
- 'mypy ~= 1.16',
34
+ 'mypy ~= 1.17',
35
35
  ],
36
36
 
37
37
  'prof': [
@@ -69,6 +69,9 @@ from .types import ObjectResolver
69
69
  from .types import VersionMap
70
70
 
71
71
 
72
+ ##
73
+
74
+
72
75
  class Cache:
73
76
  def __init__(
74
77
  self,
@@ -3,6 +3,9 @@ from .types import Object
3
3
  from .types import ObjectResolver
4
4
 
5
5
 
6
+ ##
7
+
8
+
6
9
  class CachingObjectResolver(ObjectResolver):
7
10
  def __init__(self, child: ObjectResolver) -> None:
8
11
  super().__init__()
@@ -4,6 +4,9 @@ from .types import CacheEntry
4
4
  from .types import CacheKey
5
5
 
6
6
 
7
+ ##
8
+
9
+
7
10
  class Storage(abc.ABC):
8
11
  @abc.abstractmethod
9
12
  def get(self, key: CacheKey) -> CacheEntry | None:
omdev/cc/cdeps.py CHANGED
@@ -8,6 +8,9 @@ from omlish import marshal as msh
8
8
  from omlish.configs import all as cfgs
9
9
 
10
10
 
11
+ ##
12
+
13
+
11
14
  @dc.dataclass(frozen=True)
12
15
  class Cdep:
13
16
  @dc.dataclass(frozen=True)
omdev/cexts/build.py CHANGED
@@ -10,6 +10,9 @@ from omlish import lang
10
10
  from . import _distutils as du
11
11
 
12
12
 
13
+ ##
14
+
15
+
13
16
  CPP_STD = 'c++20'
14
17
 
15
18
 
omdev/cexts/magic.py CHANGED
@@ -2,6 +2,9 @@
2
2
  from ..magic.styles import C_MAGIC_STYLE
3
3
 
4
4
 
5
+ ##
6
+
7
+
5
8
  class CextMagic:
6
9
  KEY = '@omlish-cext'
7
10
  STYLE = C_MAGIC_STYLE
omdev/cexts/scan.py CHANGED
@@ -11,6 +11,9 @@ from .magic import CextMagic
11
11
  log = logging.getLogger(__name__)
12
12
 
13
13
 
14
+ ##
15
+
16
+
14
17
  def scan_one(
15
18
  input_path: str,
16
19
  **kwargs: ta.Any,
omdev/ci/cli.py CHANGED
@@ -35,6 +35,9 @@ from .requirements import build_requirements_hash
35
35
  from .shell import ShellCmd
36
36
 
37
37
 
38
+ ##
39
+
40
+
38
41
  class CiCli(ArgparseCli):
39
42
  #
40
43
 
@@ -11,6 +11,9 @@ sudo rm -rf \
11
11
  from .env import register_github_env_var
12
12
 
13
13
 
14
+ ##
15
+
16
+
14
17
  GITHUB_ACTIONS_ENV_VAR = register_github_env_var('GITHUB_ACTIONS')
15
18
 
16
19
 
omdev/ci/github/cli.py CHANGED
@@ -14,6 +14,9 @@ from .api.v1.client import GithubCacheServiceV1Client
14
14
  from .env import GITHUB_ENV_VARS
15
15
 
16
16
 
17
+ ##
18
+
19
+
17
20
  class GithubCli(ArgparseCli):
18
21
  @argparse_cmd()
19
22
  def list_referenced_env_vars(self) -> None:
omdev/ci/github/env.py CHANGED
@@ -4,6 +4,9 @@ import os
4
4
  import typing as ta
5
5
 
6
6
 
7
+ ##
8
+
9
+
7
10
  @dc.dataclass(frozen=True)
8
11
  class GithubEnvVar:
9
12
  k: str
omdev/git/revisions.py CHANGED
@@ -8,6 +8,9 @@ from omlish.subprocesses.sync import subprocesses
8
8
  from omlish.subprocesses.wrap import subprocess_maybe_shell_wrap_exec
9
9
 
10
10
 
11
+ ##
12
+
13
+
11
14
  def get_git_revision(
12
15
  *,
13
16
  cwd: ta.Optional[str] = None,
omdev/git/shallow.py CHANGED
@@ -7,6 +7,9 @@ import typing as ta
7
7
  from omlish.subprocesses.sync import subprocesses
8
8
 
9
9
 
10
+ ##
11
+
12
+
10
13
  @dc.dataclass(frozen=True)
11
14
  class GitShallowCloner:
12
15
  base_dir: str
omdev/git/status.py CHANGED
@@ -10,6 +10,9 @@ from omlish.lite.check import check
10
10
  from omlish.subprocesses.wrap import subprocess_maybe_shell_wrap_exec
11
11
 
12
12
 
13
+ ##
14
+
15
+
13
16
  _GIT_STATUS_LINE_ESCAPE_CODES: ta.Mapping[int, bytes] = {
14
17
  ord('\\'): b'\\',
15
18
  ord('"'): b'"',
@@ -2,6 +2,9 @@
2
2
  import typing as ta
3
3
 
4
4
 
5
+ ##
6
+
7
+
5
8
  class _ModuleManifestDumper:
6
9
  def __init__(self, spec: str) -> None:
7
10
  super().__init__()
omdev/manifests/main.py CHANGED
@@ -12,6 +12,9 @@ from .build import ManifestBuilder
12
12
  from .build import check_package_manifests
13
13
 
14
14
 
15
+ ##
16
+
17
+
15
18
  def _get_base(args) -> str:
16
19
  if args.base is not None:
17
20
  base = args.base
omdev/oci/compression.py CHANGED
@@ -3,6 +3,9 @@
3
3
  import enum
4
4
 
5
5
 
6
+ ##
7
+
8
+
6
9
  class OciCompression(enum.Enum):
7
10
  GZIP = enum.auto()
8
11
  ZSTD = enum.auto()
omdev/packaging/names.py CHANGED
@@ -24,6 +24,9 @@
24
24
  import re
25
25
 
26
26
 
27
+ ##
28
+
29
+
27
30
  # Core metadata spec for `Name`
28
31
  _CANONICAL_NAME_VALIDATE_PATTERN = re.compile(r'^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$', re.IGNORECASE)
29
32
  _CANONICAL_NAME_CANONICALIZE_PATTERN = re.compile(r'[-_.]+')
@@ -33,6 +33,9 @@ from omlish.lite.check import check
33
33
  from .specifiers import Specifier
34
34
 
35
35
 
36
+ ##
37
+
38
+
36
39
  @dc.dataclass()
37
40
  class RequiresToken:
38
41
  name: str
@@ -29,6 +29,9 @@ import typing as ta
29
29
  import zipfile
30
30
 
31
31
 
32
+ ##
33
+
34
+
32
35
  class WheelError(Exception):
33
36
  pass
34
37
 
@@ -10,6 +10,9 @@ import re
10
10
  import string
11
11
 
12
12
 
13
+ ##
14
+
15
+
13
16
  _VERSION_PAT = re.compile(r"__version__ = '(?P<version>[^\']+)'")
14
17
 
15
18
 
@@ -16,6 +16,9 @@ T = ta.TypeVar('T')
16
16
  log = logging.getLogger(__name__)
17
17
 
18
18
 
19
+ ##
20
+
21
+
19
22
  def indexfn(
20
23
  fn: ta.Callable[[T], bool],
21
24
  it: ta.Iterable[T],
omdev/pyproject/cexts.py CHANGED
@@ -70,6 +70,9 @@ py_limited_api (bool) -
70
70
  """
71
71
 
72
72
 
73
+ ##
74
+
75
+
73
76
  SETUP_PY_TMPL = """
74
77
  import setuptools as st
75
78
 
@@ -7,6 +7,9 @@ from omlish.lite.marshal import unmarshal_obj
7
7
  from ..interp.venvs import InterpVenvConfig
8
8
 
9
9
 
10
+ ##
11
+
12
+
10
13
  @dc.dataclass(frozen=True)
11
14
  class VenvConfig(InterpVenvConfig):
12
15
  inherits: ta.Optional[ta.Sequence[str]] = None
omdev/pyproject/inject.py CHANGED
@@ -6,6 +6,9 @@ from omlish.lite.inject import InjectorBindings
6
6
  from omlish.lite.inject import inj
7
7
 
8
8
 
9
+ ##
10
+
11
+
9
12
  def bind_pyproject() -> InjectorBindings:
10
13
  lst: ta.List[InjectorBindingOrBindings] = []
11
14
 
omdev/pyproject/pkg.py CHANGED
@@ -45,7 +45,7 @@ from ..magic.find import find_magic_files
45
45
  from ..packaging.revisions import GitRevisionAdder
46
46
 
47
47
 
48
- #
48
+ ##
49
49
 
50
50
 
51
51
  class BasePyprojectPackageGenerator(abc.ABC):
omdev/pyproject/reqs.py CHANGED
@@ -11,6 +11,9 @@ from omlish.lite.cached import cached_nullary
11
11
  from omlish.lite.logs import log
12
12
 
13
13
 
14
+ ##
15
+
16
+
14
17
  class RequirementsRewriter:
15
18
  def __init__(
16
19
  self,
omdev/scripts/ci.py CHANGED
@@ -171,6 +171,9 @@ CI_CACHE_VERSION = 2
171
171
  # ../github/env.py
172
172
 
173
173
 
174
+ ##
175
+
176
+
174
177
  @dc.dataclass(frozen=True)
175
178
  class GithubEnvVar:
176
179
  k: str
@@ -251,6 +254,9 @@ def sha256_str(s: str) -> str:
251
254
  # ../../oci/compression.py
252
255
 
253
256
 
257
+ ##
258
+
259
+
254
260
  class OciCompression(enum.Enum):
255
261
  GZIP = enum.auto()
256
262
  ZSTD = enum.auto()
@@ -455,6 +461,9 @@ class NonRaisingUrllibErrorProcessor(urllib.request.HTTPErrorProcessor):
455
461
  # ../../../omlish/http/versions.py
456
462
 
457
463
 
464
+ ##
465
+
466
+
458
467
  class HttpProtocolVersion(ta.NamedTuple):
459
468
  major: int
460
469
  minor: int
@@ -953,7 +962,7 @@ class Checks:
953
962
  render_fmt='%s',
954
963
  )
955
964
 
956
- return v # type: ignore
965
+ return v
957
966
 
958
967
  def non_empty_str(self, v: ta.Optional[str], msg: CheckMessage = None) -> str:
959
968
  if not isinstance(v, str) or not v:
@@ -1911,6 +1920,9 @@ log_timing_context = LogTimingContext
1911
1920
  # ../../../omlish/os/files.py
1912
1921
 
1913
1922
 
1923
+ ##
1924
+
1925
+
1914
1926
  def is_fd_open(fd: int) -> bool:
1915
1927
  try:
1916
1928
  fcntl.fcntl(fd, fcntl.F_GETFD)
@@ -1960,6 +1972,9 @@ def unlinking_if_exists(path: str) -> ta.Iterator[None]:
1960
1972
  # ../../../omlish/os/paths.py
1961
1973
 
1962
1974
 
1975
+ ##
1976
+
1977
+
1963
1978
  def abs_real_path(p: str) -> str:
1964
1979
  return os.path.abspath(os.path.realpath(p))
1965
1980
 
@@ -2460,6 +2475,9 @@ sudo rm -rf \
2460
2475
  """
2461
2476
 
2462
2477
 
2478
+ ##
2479
+
2480
+
2463
2481
  GITHUB_ACTIONS_ENV_VAR = register_github_env_var('GITHUB_ACTIONS')
2464
2482
 
2465
2483
 
@@ -2840,7 +2858,7 @@ class ArgparseCli:
2840
2858
 
2841
2859
  if self._unknown_args and not (cmd is not None and cmd.accepts_unknown):
2842
2860
  msg = f'unrecognized arguments: {" ".join(self._unknown_args)}'
2843
- if (parser := self.get_parser()).exit_on_error: # type: ignore
2861
+ if (parser := self.get_parser()).exit_on_error:
2844
2862
  parser.error(msg)
2845
2863
  else:
2846
2864
  raise argparse.ArgumentError(None, msg)
@@ -5241,6 +5259,9 @@ unmarshal_obj = OBJ_MARSHALER_MANAGER.unmarshal_obj
5241
5259
  # ../../../omlish/lite/runtime.py
5242
5260
 
5243
5261
 
5262
+ ##
5263
+
5264
+
5244
5265
  @cached_nullary
5245
5266
  def is_debugger_attached() -> bool:
5246
5267
  return any(frame[1].endswith('pydevd.py') for frame in inspect.stack())
@@ -5324,6 +5345,9 @@ class JsonLogFormatter(logging.Formatter):
5324
5345
  # ../../../omlish/os/temp.py
5325
5346
 
5326
5347
 
5348
+ ##
5349
+
5350
+
5327
5351
  def make_temp_file(**kwargs: ta.Any) -> str:
5328
5352
  file_fd, file = tempfile.mkstemp(**kwargs)
5329
5353
  os.close(file_fd)
@@ -5788,7 +5812,7 @@ class SubprocessRun:
5788
5812
  ) -> SubprocessRunOutput:
5789
5813
  if subprocesses is None:
5790
5814
  subprocesses = self._DEFAULT_SUBPROCESSES
5791
- return check.not_none(subprocesses).run_(self.replace(**kwargs)) # type: ignore[attr-defined]
5815
+ return check.not_none(subprocesses).run_(self.replace(**kwargs))
5792
5816
 
5793
5817
  _DEFAULT_ASYNC_SUBPROCESSES: ta.ClassVar[ta.Optional[ta.Any]] = None # AbstractAsyncSubprocesses
5794
5818
 
@@ -5799,7 +5823,7 @@ class SubprocessRun:
5799
5823
  ) -> SubprocessRunOutput:
5800
5824
  if async_subprocesses is None:
5801
5825
  async_subprocesses = self._DEFAULT_ASYNC_SUBPROCESSES
5802
- return await check.not_none(async_subprocesses).run_(self.replace(**kwargs)) # type: ignore[attr-defined]
5826
+ return await check.not_none(async_subprocesses).run_(self.replace(**kwargs))
5803
5827
 
5804
5828
 
5805
5829
  SubprocessRun._FIELD_NAMES = frozenset(fld.name for fld in dc.fields(SubprocessRun)) # noqa
@@ -10388,6 +10412,9 @@ See:
10388
10412
  """
10389
10413
 
10390
10414
 
10415
+ ##
10416
+
10417
+
10391
10418
  class GithubCli(ArgparseCli):
10392
10419
  @argparse_cmd()
10393
10420
  def list_referenced_env_vars(self) -> None:
@@ -13022,6 +13049,9 @@ def bind_ci(
13022
13049
  # cli.py
13023
13050
 
13024
13051
 
13052
+ ##
13053
+
13054
+
13025
13055
  class CiCli(ArgparseCli):
13026
13056
  #
13027
13057
 
omdev/scripts/interp.py CHANGED
@@ -989,7 +989,7 @@ class Checks:
989
989
  render_fmt='%s',
990
990
  )
991
991
 
992
- return v # type: ignore
992
+ return v
993
993
 
994
994
  def non_empty_str(self, v: ta.Optional[str], msg: CheckMessage = None) -> str:
995
995
  if not isinstance(v, str) or not v:
@@ -2560,7 +2560,7 @@ class ArgparseCli:
2560
2560
 
2561
2561
  if self._unknown_args and not (cmd is not None and cmd.accepts_unknown):
2562
2562
  msg = f'unrecognized arguments: {" ".join(self._unknown_args)}'
2563
- if (parser := self.get_parser()).exit_on_error: # type: ignore
2563
+ if (parser := self.get_parser()).exit_on_error:
2564
2564
  parser.error(msg)
2565
2565
  else:
2566
2566
  raise argparse.ArgumentError(None, msg)
@@ -3715,6 +3715,9 @@ inj = InjectionApi()
3715
3715
  # ../../../omlish/lite/runtime.py
3716
3716
 
3717
3717
 
3718
+ ##
3719
+
3720
+
3718
3721
  @cached_nullary
3719
3722
  def is_debugger_attached() -> bool:
3720
3723
  return any(frame[1].endswith('pydevd.py') for frame in inspect.stack())
@@ -3870,7 +3873,7 @@ class SubprocessRun:
3870
3873
  ) -> SubprocessRunOutput:
3871
3874
  if subprocesses is None:
3872
3875
  subprocesses = self._DEFAULT_SUBPROCESSES
3873
- return check.not_none(subprocesses).run_(self.replace(**kwargs)) # type: ignore[attr-defined]
3876
+ return check.not_none(subprocesses).run_(self.replace(**kwargs))
3874
3877
 
3875
3878
  _DEFAULT_ASYNC_SUBPROCESSES: ta.ClassVar[ta.Optional[ta.Any]] = None # AbstractAsyncSubprocesses
3876
3879
 
@@ -3881,7 +3884,7 @@ class SubprocessRun:
3881
3884
  ) -> SubprocessRunOutput:
3882
3885
  if async_subprocesses is None:
3883
3886
  async_subprocesses = self._DEFAULT_ASYNC_SUBPROCESSES
3884
- return await check.not_none(async_subprocesses).run_(self.replace(**kwargs)) # type: ignore[attr-defined]
3887
+ return await check.not_none(async_subprocesses).run_(self.replace(**kwargs))
3885
3888
 
3886
3889
 
3887
3890
  SubprocessRun._FIELD_NAMES = frozenset(fld.name for fld in dc.fields(SubprocessRun)) # noqa
@@ -664,6 +664,9 @@ def canonicalize_version(
664
664
  # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
665
665
 
666
666
 
667
+ ##
668
+
669
+
667
670
  class WheelError(Exception):
668
671
  pass
669
672
 
@@ -1804,6 +1807,9 @@ class TomlParser:
1804
1807
  # ../../../omlish/formats/toml/writer.py
1805
1808
 
1806
1809
 
1810
+ ##
1811
+
1812
+
1807
1813
  class TomlWriter:
1808
1814
  @dc.dataclass(frozen=True)
1809
1815
  class Literal:
@@ -2406,7 +2412,7 @@ class Checks:
2406
2412
  render_fmt='%s',
2407
2413
  )
2408
2414
 
2409
- return v # type: ignore
2415
+ return v
2410
2416
 
2411
2417
  def non_empty_str(self, v: ta.Optional[str], msg: CheckMessage = None) -> str:
2412
2418
  if not isinstance(v, str) or not v:
@@ -3269,6 +3275,9 @@ class ProxyLogHandler(ProxyLogFilterer, logging.Handler):
3269
3275
  # ../../cexts/magic.py
3270
3276
 
3271
3277
 
3278
+ ##
3279
+
3280
+
3272
3281
  class CextMagic:
3273
3282
  KEY = '@omlish-cext'
3274
3283
  STYLE = C_MAGIC_STYLE
@@ -4026,6 +4035,9 @@ TODO:
4026
4035
  """
4027
4036
 
4028
4037
 
4038
+ ##
4039
+
4040
+
4029
4041
  class RequirementsRewriter:
4030
4042
  def __init__(
4031
4043
  self,
@@ -4340,7 +4352,7 @@ class ArgparseCli:
4340
4352
 
4341
4353
  if self._unknown_args and not (cmd is not None and cmd.accepts_unknown):
4342
4354
  msg = f'unrecognized arguments: {" ".join(self._unknown_args)}'
4343
- if (parser := self.get_parser()).exit_on_error: # type: ignore
4355
+ if (parser := self.get_parser()).exit_on_error:
4344
4356
  parser.error(msg)
4345
4357
  else:
4346
4358
  raise argparse.ArgumentError(None, msg)
@@ -6093,6 +6105,9 @@ unmarshal_obj = OBJ_MARSHALER_MANAGER.unmarshal_obj
6093
6105
  # ../../../omlish/lite/runtime.py
6094
6106
 
6095
6107
 
6108
+ ##
6109
+
6110
+
6096
6111
  @cached_nullary
6097
6112
  def is_debugger_attached() -> bool:
6098
6113
  return any(frame[1].endswith('pydevd.py') for frame in inspect.stack())
@@ -6248,7 +6263,7 @@ class SubprocessRun:
6248
6263
  ) -> SubprocessRunOutput:
6249
6264
  if subprocesses is None:
6250
6265
  subprocesses = self._DEFAULT_SUBPROCESSES
6251
- return check.not_none(subprocesses).run_(self.replace(**kwargs)) # type: ignore[attr-defined]
6266
+ return check.not_none(subprocesses).run_(self.replace(**kwargs))
6252
6267
 
6253
6268
  _DEFAULT_ASYNC_SUBPROCESSES: ta.ClassVar[ta.Optional[ta.Any]] = None # AbstractAsyncSubprocesses
6254
6269
 
@@ -6259,7 +6274,7 @@ class SubprocessRun:
6259
6274
  ) -> SubprocessRunOutput:
6260
6275
  if async_subprocesses is None:
6261
6276
  async_subprocesses = self._DEFAULT_ASYNC_SUBPROCESSES
6262
- return await check.not_none(async_subprocesses).run_(self.replace(**kwargs)) # type: ignore[attr-defined]
6277
+ return await check.not_none(async_subprocesses).run_(self.replace(**kwargs))
6263
6278
 
6264
6279
 
6265
6280
  SubprocessRun._FIELD_NAMES = frozenset(fld.name for fld in dc.fields(SubprocessRun)) # noqa
@@ -7132,6 +7147,9 @@ SubprocessRun._DEFAULT_SUBPROCESSES = subprocesses # noqa
7132
7147
  # ../../git/revisions.py
7133
7148
 
7134
7149
 
7150
+ ##
7151
+
7152
+
7135
7153
  def get_git_revision(
7136
7154
  *,
7137
7155
  cwd: ta.Optional[str] = None,
@@ -8233,7 +8251,7 @@ vcs+protocol://repo_url/#egg=pkg&subdirectory=pkg_dir
8233
8251
  """ # noqa
8234
8252
 
8235
8253
 
8236
- #
8254
+ ##
8237
8255
 
8238
8256
 
8239
8257
  class BasePyprojectPackageGenerator(abc.ABC):
@@ -9118,6 +9136,9 @@ class InterpVenv:
9118
9136
  # ../configs.py
9119
9137
 
9120
9138
 
9139
+ ##
9140
+
9141
+
9121
9142
  @dc.dataclass(frozen=True)
9122
9143
  class VenvConfig(InterpVenvConfig):
9123
9144
  inherits: ta.Optional[ta.Sequence[str]] = None
omdev/tools/diff.py CHANGED
@@ -6,6 +6,9 @@ from omlish.subprocesses.sync import subprocesses
6
6
  from ..cli import CliModule
7
7
 
8
8
 
9
+ ##
10
+
11
+
9
12
  class Cli(ap.Cli):
10
13
  @ap.cmd(
11
14
  ap.arg('l'),
omdev/tools/docker.py CHANGED
@@ -28,6 +28,9 @@ from omlish.logs import all as logs
28
28
  from ..cli import CliModule
29
29
 
30
30
 
31
+ ##
32
+
33
+
31
34
  @lang.cached_function
32
35
  def docker_exe() -> str:
33
36
  return check.not_none(shutil.which('docker'))
@@ -112,7 +115,7 @@ class Cli(ap.Cli):
112
115
  dct: dict[str, list[PortEntry]] = {}
113
116
 
114
117
  with lang.disposing(yaml.WrappedLoaders.base(yml_src)) as loader:
115
- val = check.not_none(loader.get_single_data()) # type: ignore
118
+ val = check.not_none(loader.get_single_data())
116
119
  root = check.isinstance(val.value, ta.Mapping)
117
120
 
118
121
  services = check.isinstance(
omdev/tools/json/cli.py CHANGED
@@ -88,6 +88,7 @@ def _build_args_parser() -> argparse.ArgumentParser:
88
88
  parser.add_argument('-x', '--jmespath-expr')
89
89
  parser.add_argument('-M', '--marshal', action='store_true')
90
90
  parser.add_argument('-F', '--flat', action='store_true')
91
+ parser.add_argument('-e', '--prune-empty', action='store_true')
91
92
  parser.add_argument('-E', '--omit-empty', action='store_true')
92
93
 
93
94
  parser.add_argument('-z', '--compact', action='store_true')
@@ -136,6 +137,7 @@ def _process_args(args: ta.Any) -> RunConfiguration:
136
137
  jmespath_expr=args.jmespath_expr,
137
138
  marshal=args.marshal,
138
139
  flat=args.flat,
140
+ prune_empty=args.prune_empty,
139
141
  omit_empty=args.omit_empty,
140
142
  )
141
143
 
@@ -20,9 +20,20 @@ class ProcessingOptions:
20
20
  jmespath_expr: ta.Any | None = None
21
21
  marshal: bool = False
22
22
  flat: bool = False
23
+ prune_empty: bool = False
23
24
  omit_empty: bool = False
24
25
 
25
26
 
27
+ def _prune_empty(v: ta.Any) -> ta.Any:
28
+ # if isinstance(v, ta.Mapping):
29
+ # v = type(v)([
30
+ # (_prune_empty(k), _prune_empty(v))
31
+ # for k, v in v.items()
32
+ # ])
33
+ # elif
34
+ raise NotImplementedError
35
+
36
+
26
37
  class Processor:
27
38
  def __init__(self, opts: ProcessingOptions) -> None:
28
39
  super().__init__()
@@ -68,6 +79,9 @@ class Processor:
68
79
  vs = [v]
69
80
 
70
81
  for v in vs:
82
+ if self._opts.prune_empty:
83
+ v = _prune_empty(v)
84
+
71
85
  if self._opts.omit_empty:
72
86
  if v is None or (isinstance(v, (ta.Sequence, ta.Mapping)) and not v):
73
87
  continue
omdev/tools/notebook.py CHANGED
@@ -17,6 +17,9 @@ from omlish.argparse import all as ap
17
17
  from ..cli import CliModule
18
18
 
19
19
 
20
+ ##
21
+
22
+
20
23
  class Cli(ap.Cli):
21
24
  @ap.cmd(
22
25
  ap.arg('file'),
omdev/tools/pawk/pawk.py CHANGED
@@ -37,6 +37,9 @@ from omlish import check
37
37
  from ...cli import CliModule
38
38
 
39
39
 
40
+ ##
41
+
42
+
40
43
  RESULT_VAR_NAME = '__result'
41
44
 
42
45
  STRING_ESCAPE = 'unicode_escape'
omdev/tools/pip.py CHANGED
@@ -19,6 +19,9 @@ from ..pip import get_root_dists
19
19
  from ..pip import lookup_latest_package_version
20
20
 
21
21
 
22
+ ##
23
+
24
+
22
25
  class Cli(ap.Cli):
23
26
  @ap.cmd(
24
27
  ap.arg('package'),
omdev/tools/prof.py CHANGED
@@ -12,6 +12,9 @@ from omlish.argparse import all as ap
12
12
  from ..cli import CliModule
13
13
 
14
14
 
15
+ ##
16
+
17
+
15
18
  class Cli(ap.Cli):
16
19
  @ap.cmd(
17
20
  ap.arg('file'),
omdev/tools/qr.py CHANGED
@@ -22,6 +22,9 @@ else:
22
22
  segno = lang.proxy_import('segno')
23
23
 
24
24
 
25
+ ##
26
+
27
+
25
28
  def _main() -> None:
26
29
  parser = argparse.ArgumentParser()
27
30
  parser.add_argument('content', nargs='?')
omdev/tools/sqlrepl.py CHANGED
@@ -16,6 +16,9 @@ from omlish.logs import all as logs
16
16
  from ..cli import CliModule
17
17
 
18
18
 
19
+ ##
20
+
21
+
19
22
  @dc.dataclass(frozen=True)
20
23
  class ServerSpec:
21
24
  host: str
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev362
3
+ Version: 0.0.0.dev364
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.13
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish==0.0.0.dev362
15
+ Requires-Dist: omlish==0.0.0.dev364
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=25.1; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -21,7 +21,7 @@ Requires-Dist: docutils~=0.21; extra == "all"
21
21
  Requires-Dist: markdown-it-py~=3.0; extra == "all"
22
22
  Requires-Dist: mdit-py-plugins~=0.4; extra == "all"
23
23
  Requires-Dist: pygments~=2.19; extra == "all"
24
- Requires-Dist: mypy~=1.16; extra == "all"
24
+ Requires-Dist: mypy~=1.17; extra == "all"
25
25
  Requires-Dist: gprof2dot~=2025.4; extra == "all"
26
26
  Requires-Dist: prompt-toolkit~=3.0; extra == "all"
27
27
  Requires-Dist: segno~=1.6; extra == "all"
@@ -36,7 +36,7 @@ Requires-Dist: markdown-it-py~=3.0; extra == "doc"
36
36
  Requires-Dist: mdit-py-plugins~=0.4; extra == "doc"
37
37
  Requires-Dist: pygments~=2.19; extra == "doc"
38
38
  Provides-Extra: mypy
39
- Requires-Dist: mypy~=1.16; extra == "mypy"
39
+ Requires-Dist: mypy~=1.17; extra == "mypy"
40
40
  Provides-Extra: prof
41
41
  Requires-Dist: gprof2dot~=2025.4; extra == "prof"
42
42
  Provides-Extra: ptk
@@ -1,5 +1,5 @@
1
- omdev/.manifests.json,sha256=gUmQyNfvds3Q_9p7PzDJGfOrUUkPWOUN0c_K_9uRPs4,11870
2
- omdev/__about__.py,sha256=2_6pQyjxqAspvwBSJUWQgdBBcGaDO3zX8yETLaspUQE,1202
1
+ omdev/.manifests.json,sha256=ZGEqfCA_ll4cndDBBnMhEe6QPGVJwxawDBKEI0MPVIQ,11870
2
+ omdev/__about__.py,sha256=_c693iMsl07FKXJ_2zrWiE8t84SSbDxlCrash1rJR7M,1202
3
3
  omdev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  omdev/cmake.py,sha256=9rfSvFHPmKDj9ngvfDB2vK8O-xO_ZwUm7hMKLWA-yOw,4578
5
5
  omdev/imgur.py,sha256=4XolajBnAJ1U2zvT6Y0fiUyBi_a8G9arXffvPxf3w-M,3103
@@ -18,12 +18,12 @@ omdev/amalg/types.py,sha256=BXXJI0VctKTsZv_wXiyMMq3-xShxZ1ak0wxXUK8n9_g,89
18
18
  omdev/amalg/typing.py,sha256=oLlkCnnZQkyKM_xxqm9uxECjn9xj0c4MIwYxxItBdPY,2191
19
19
  omdev/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  omdev/cache/compute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- omdev/cache/compute/cache.py,sha256=FA6tZWoQpE8D8Os3abdtfT90juzkqBmESjJE3WQXZtQ,3623
21
+ omdev/cache/compute/cache.py,sha256=IHF1959RS1z-aUuUaFOTjqcIjckbVgNEA7dONfh6y-o,3628
22
22
  omdev/cache/compute/contexts.py,sha256=OKOHOIj8JSEHmCKMY9G_zpKkLAkGuXcFXvzY5SXqCMA,3231
23
23
  omdev/cache/compute/currents.py,sha256=D1Ls5Sd7FX2aPO5wpyEwTSmkz50sxkwCs37Amb0urH8,1425
24
24
  omdev/cache/compute/fns.py,sha256=_1xU7qw1O57OsTp17RFjFTBO1M2t54RL-CGdl-0cTBk,4175
25
- omdev/cache/compute/resolvers.py,sha256=9dq0mt__emp8CdNDWPVUr_dCkTOn7ar6nw0F2QH6XpQ,566
26
- omdev/cache/compute/storage.py,sha256=woCUqHg8ZrwLEejRG3zu1L5ZXxGNNXveh3E8FnlEkjc,941
25
+ omdev/cache/compute/resolvers.py,sha256=e-SjF4a5r0gsTcbYnpxN_Fc1bstI2JLckisJXXeOyGU,571
26
+ omdev/cache/compute/storage.py,sha256=DxuaWYIzb40U_Tvbr7f9VbkGkKI50TXO6RR9uVHj560,946
27
27
  omdev/cache/compute/types.py,sha256=dW6S1g_-MklWf8JDPXFMamuOZinjKFOlonfMyWg4L3o,2645
28
28
  omdev/cache/data/__init__.py,sha256=SQXtugLceRif463rcoklpQ33pxYLgEIm0xiI6NvOI6M,301
29
29
  omdev/cache/data/actions.py,sha256=Mv7eXeZuohCjQLpmLyvqvGjjBacXIvTYzIRMVpEh-zM,1037
@@ -34,17 +34,17 @@ omdev/cache/data/manifests.py,sha256=4BparztsMZo9DDVVPhv6iv5g4kK7QAi8Vqtj3PbKkco
34
34
  omdev/cache/data/specs.py,sha256=P50VSvMf2Jp3VHjhHy4i1-PwYwEGD4MMXEpxIg0CQis,2468
35
35
  omdev/cc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  omdev/cc/__main__.py,sha256=n7gxSRYZ1QZOUxQPCT0_n9Xl26zi2UIvCwyGW_m67nA,166
37
- omdev/cc/cdeps.py,sha256=5C4135gozWEJnhaOoZMTiJq_y0xQqwd4NCx1afbklsM,1530
37
+ omdev/cc/cdeps.py,sha256=Uou-V1qcwWhe14iTu39W7yxOlDdr_P96Ai8wQjAp3zQ,1535
38
38
  omdev/cc/cdeps.toml,sha256=MqZ1OQHQ2JPvQpHRL32GpRgQWQRtzjPI2EWl4EqSm-I,1004
39
39
  omdev/cc/cli.py,sha256=qmBLyq7dz85Sv4xZ_YR2S4UehCGKrf7-ZIWL0RwnLIY,4918
40
40
  omdev/cc/srclangs.py,sha256=3u_APHgknuc-BPRQSDISwSzouluKsnLlBxodp-XCl_E,728
41
41
  omdev/cexts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  omdev/cexts/_boilerplate.cc,sha256=sbpXEgdFrkdzZXgaNWFFNN27fL9TZu6VrwvMY4-nnFM,1726
43
- omdev/cexts/build.py,sha256=F3z1-CjDlEM-Gzi5IunKUBO52qdH_pMsFylobTdGJnI,2654
43
+ omdev/cexts/build.py,sha256=JxEuqSpspnY6kWn8eB89FjcSjF4bpNgVYNeIvwmWehY,2659
44
44
  omdev/cexts/cmake.py,sha256=x4WtT2OMQqrfdW-ZvE6JnbFDLpvVl6v_4qwqkb0Ks3E,10057
45
45
  omdev/cexts/importhook.py,sha256=QAHmUdsTUoN7HkzJbKI6bSqlqflpkChjaDJOSHrM5rM,3560
46
- omdev/cexts/magic.py,sha256=MPmdhGANFVRaA3351BSTBrXm214dWXro1RMRHaJ2_O0,126
47
- omdev/cexts/scan.py,sha256=KnwWtFgJ-vvsz6GyHVXI-ufPh8UsOCuNYPbwGm5_du4,1677
46
+ omdev/cexts/magic.py,sha256=DglhjCXEiL28pFTN4lrmUW6ZLn6HaumR13ptyaFOez4,131
47
+ omdev/cexts/scan.py,sha256=lhK5-8bylu6qZcAfoS-rjdx8c9TLVzqnrPm44cIowKQ,1682
48
48
  omdev/cexts/_distutils/LICENSE,sha256=22p14FIRp3F4Cb7Mj_GK33PKr25issFGHC2JN6dg9vc,1023
49
49
  omdev/cexts/_distutils/__init__.py,sha256=c1zImtnPh3uY8BUTV4RLKtGKqTPx3c_pBbhA6tPtNsE,297
50
50
  omdev/cexts/_distutils/build_ext.py,sha256=pwdqqFKyls4uUAGYMyK4zDPCwyWkOTV5KKi_9sRyylA,13840
@@ -65,7 +65,7 @@ omdev/ci/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
65
65
  omdev/ci/__main__.py,sha256=Jsrv3P7LX2Cg08W7ByZfZ1JQT4lgLDPW1qNAmShFuMk,75
66
66
  omdev/ci/cache.py,sha256=iUO-cojXWcERQ5HX5nj-go0XAx7RJPmcoxF8tAnnxw4,8358
67
67
  omdev/ci/ci.py,sha256=ZCBQuX5fiyzgBLFndxh1To2J-KrjoPlw4EvEruDIdjg,7923
68
- omdev/ci/cli.py,sha256=wIkDkXtlRBky84DYlxMOT2e0WKISUdKqAlA9-rXqpKQ,7189
68
+ omdev/ci/cli.py,sha256=E7GiQQBf8E02TwGnLS0ZLiv0J5TasjgOjjgSsJEW60E,7194
69
69
  omdev/ci/compose.py,sha256=SXjWuHuLN9NQttvnJ440A88VI7JPU0sSaQhfWe_-IKs,4518
70
70
  omdev/ci/consts.py,sha256=HkSYz-_hHilcHPBvRs-SwcUxW7vMNlHXZ8OyIKnVQbQ,21
71
71
  omdev/ci/inject.py,sha256=Yk7bT7sRC76PUN9qQ07MiveAuQmi1LZBKxah7VKOB5Q,1930
@@ -86,10 +86,10 @@ omdev/ci/docker/cacheserved/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
86
86
  omdev/ci/docker/cacheserved/cache.py,sha256=V9R1_HBNJzMGFqiSnTAP1M4VAv9pJBsXYvR7I52wR50,7025
87
87
  omdev/ci/docker/cacheserved/manifests.py,sha256=Z9WdAOve3tqoLrP2D8hoXMdaGoC06XeygSLvpVQalxg,3590
88
88
  omdev/ci/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
- omdev/ci/github/bootstrap.py,sha256=GwbxxvgFYuub-hjLnKsia98uS6rM2xuKnwcBuGN_Q7M,436
89
+ omdev/ci/github/bootstrap.py,sha256=yZnZVkz9bKCo5G7n-jRQFP8XR76yyuF1BVaTsmUpHdI,441
90
90
  omdev/ci/github/cache.py,sha256=TGvdEgFRGABR6mdI_aloGKS6-q-SeSkwXNySmHktpjs,3020
91
- omdev/ci/github/cli.py,sha256=jUEAPgdCIiPBIbKmf3RD0Sc38kNfBC1gUAOkn1bzj_4,1127
92
- omdev/ci/github/env.py,sha256=zbgL5JHHj80aL4G5tk1E7SscI0gnyD4eFUp_4mqApZA,400
91
+ omdev/ci/github/cli.py,sha256=gvDz4Rd9Arw0VIptfbEVJG97kTuypYNdWGvODrjhA84,1132
92
+ omdev/ci/github/env.py,sha256=HQOUPvKHNmHUkX7WjoStiLPLq_yGwR09jbZQJhmkKPs,405
93
93
  omdev/ci/github/inject.py,sha256=fxyjSiMhSCPKpYX-W6DM4b7QxKEBgkQ-AmZG6f9xgac,564
94
94
  omdev/ci/github/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
95
  omdev/ci/github/api/clients.py,sha256=XbRedcQziPvaTKjA-t6qLg6zd3FLLppEc9vF_omXlns,13513
@@ -125,9 +125,9 @@ omdev/dataserver/server.py,sha256=vC6zF59ROAQn9DVUXaE3wlenjPPFtOI2DlBcRPn54SY,23
125
125
  omdev/dataserver/targets.py,sha256=UopRQKIN1B7UXELBlYVXFGLXiU7cq3-_3nMETajHjgY,3305
126
126
  omdev/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
127
  omdev/git/magic.py,sha256=dbc58vEdN5oyfU-KjfkYsT-RKuTaoFUTwGSFK__q5TE,120
128
- omdev/git/revisions.py,sha256=FKplq8I__SzHUfMBjGj9rI8ElarpKZ1x0tyJVdH2PEk,1177
129
- omdev/git/shallow.py,sha256=3WUkkPsV84oFHt8i76npStagNOnVzDMOaIm0Vdx6NWo,2536
130
- omdev/git/status.py,sha256=lJdHxah85MyI-S56TVHjZc3EMDIEKi6ik04EQcjxDaE,8451
128
+ omdev/git/revisions.py,sha256=2UVEji6ORC3StQDL47CAsqKRkuOvQg8Us5Cm7pK66RM,1182
129
+ omdev/git/shallow.py,sha256=9BDdxDBmWgfWpbfUqjwIl-3lSVEDde1cXNZcqLB-gM0,2541
130
+ omdev/git/status.py,sha256=HYNoSxsiZUypQU7itWTKx3uHkjGpY0_5J2q5QeaP794,8456
131
131
  omdev/home/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
132
  omdev/home/paths.py,sha256=tnRuEzA1nRc9NJKGSxyZMOLlZBk5Da0AQhNeSmBozYA,1331
133
133
  omdev/home/secrets.py,sha256=XarB-uhwjRc3dpT5ZF-9yoRPDr7kpyr4Hgs0I4kKL4I,1992
@@ -166,14 +166,14 @@ omdev/magic/styles.py,sha256=6LAL7XR3fkkH2rh-8nwUvdCYVHBkQxCfP0oEuPuw1Bg,670
166
166
  omdev/manifests/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
167
167
  omdev/manifests/__main__.py,sha256=JqyVDyV7_jo-NZ3wSs5clDU_xCMlxzJv-XFohoZWQ7E,174
168
168
  omdev/manifests/build.py,sha256=HirTi1z0hC_XzUNmvLWsCapr6OrywYk7s1ZQmd-islA,11017
169
- omdev/manifests/dumping.py,sha256=Ba7Be3CYSSw2PMTtdBvMqkng7xCIP2C1ivx5nL0_OX4,4054
170
- omdev/manifests/main.py,sha256=38RU7O4hx51xQiyTg3snOBQKk8dCJXXeZ7Cnl8e7jrA,2132
169
+ omdev/manifests/dumping.py,sha256=Pldka4gNa87w1OOKfcP2IvmyNW_hZ5G_xsOVPD2yR0Q,4059
170
+ omdev/manifests/main.py,sha256=g2ju2dZtUuZxDC1yL9RvnqzA7dWmvqvbWfTQG54bEh0,2137
171
171
  omdev/mypy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
172
  omdev/mypy/debug.py,sha256=VskRcr9trNhyPG2ErZZ7IX_v1DLKTLBOjp34o-fEWaM,3294
173
173
  omdev/mypy/report.py,sha256=ZpBWibI5PBK28DgGhx5tLHvuL-qdcmG1MT4HSWdFsnc,1515
174
174
  omdev/oci/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
175
175
  omdev/oci/building.py,sha256=AFGf-MzOjfGCVTD5_NfPV91FYKrxj6FwdAELGSk4pQ4,5701
176
- omdev/oci/compression.py,sha256=K15NYnmch7LHeMFEgaZXXA-EVd166HIyNacndX-9eD0,140
176
+ omdev/oci/compression.py,sha256=J4IANHvoCztthdot4dNw9MhglQR3pGb0bihpM3LfVs8,145
177
177
  omdev/oci/data.py,sha256=uvtUIRdaNo_CYiYbZ6ZxnpwZnQyTh9SLlZLnlA-bpoY,4914
178
178
  omdev/oci/datarefs.py,sha256=iG5bjYO6I09zzl56l8kSD6caMha0T8tQMAwzjfC3YVo,2768
179
179
  omdev/oci/dataserver.py,sha256=YGYrVW2X3rwa4i0FudfjGeZl39F2dDNPnoGH9xOZMhI,1869
@@ -187,12 +187,12 @@ omdev/oci/pack/repositories.py,sha256=Ogh4Wj2ySvIMnuDFb2OeBc67hHtc0WWkAfBxOkNE5a
187
187
  omdev/oci/pack/unpacking.py,sha256=tVYw8REKuYd4ciGXwMmXxlp4CRLHdET_gB9ShYh1d_M,6003
188
188
  omdev/packaging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
189
189
  omdev/packaging/marshal.py,sha256=YMXXkoWkjYoOAyD6RHsmaHGwlIsDQjnMtfa6e9-l4_A,2348
190
- omdev/packaging/names.py,sha256=-a7AykFPVR1i6EYJepbe3ABRrZQ_tPPmK5olzbn9HLI,2528
191
- omdev/packaging/requires.py,sha256=58mgrSY4TVD_dD1zBkTSSgpTomgY0jn4COOJLtV2480,15685
190
+ omdev/packaging/names.py,sha256=-orp16m20gSFeKRiGkRNyqFVV4S1y_Djvjdq_5hNwpY,2533
191
+ omdev/packaging/requires.py,sha256=joUO3l4bmrPPnf8hPzGiH7IHP3x8ILFD60iD0aV-e-o,15690
192
192
  omdev/packaging/revisions.py,sha256=Xa0hH9d_hMtPQJxOmNBU8d_nEoywlHDBCmvnlmFRMTY,4992
193
193
  omdev/packaging/specifiers.py,sha256=2lcLbgtFl-A2qR06ifxNMnMxD9AtuN2IUDbLNM_xmMg,17437
194
194
  omdev/packaging/versions.py,sha256=aaB9zKTBCpILIsz6YRJLrmGoGv4gqyhsAFfZ6blye2A,12267
195
- omdev/packaging/wheelfile.py,sha256=9nSx5ukiw8gCfZ7OGbw_8nHQDSPZ-UDTxB3CgOb7yts,10011
195
+ omdev/packaging/wheelfile.py,sha256=e3CzmDYaj7bS1gkiY_Mwft5Jnds3vGHcPXPg31P5T0I,10016
196
196
  omdev/precheck/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
197
197
  omdev/precheck/__main__.py,sha256=UEuS4z5-heIrwTtB-ONe1KeXJdqj8tYXMqWMpuO10so,165
198
198
  omdev/precheck/base.py,sha256=fKdrfakq2u1UU1_JZFnl-non9bIAZMsSkVY1SMYn8xQ,662
@@ -233,28 +233,28 @@ omdev/py/docstrings/numpydoc.py,sha256=SLyIoPR5U5HtXJ18yeQf4HlYHtcro3THh9CqeWDDD
233
233
  omdev/py/docstrings/parser.py,sha256=umJEgQBkSXLwWIKZrBbFCfNrz847vpTNDqTTEwlvHpA,2324
234
234
  omdev/py/docstrings/rest.py,sha256=c2xPYg_W01W9eYY_KLKX69E4qu4jpkgUshi5K5EyVv8,5221
235
235
  omdev/py/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
236
- omdev/py/scripts/bumpversion.py,sha256=2NnfRsJiZNTg-LubIwXCm2vklG7-kIR8_xFUEZNxtiY,1119
236
+ omdev/py/scripts/bumpversion.py,sha256=UDMtTd_wfkqsmrtHqTKDilWVzUBigzZAOCVND7t9jyw,1124
237
237
  omdev/py/scripts/execstat.py,sha256=eyk_TCeJt-xtMGqaW3X7pnEBe7JZbXrTYsODn_m6lfM,3869
238
238
  omdev/py/scripts/importtrace.py,sha256=jbL4HIafCBNCBlXyfMppdRBhCk5v6UAd0_H2f0_zPwM,14025
239
239
  omdev/py/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
240
240
  omdev/py/tools/importscan.py,sha256=4dCH0coX0OqNwesteKaTE8GxuSfLhgXYQlzNUXLiSNY,4640
241
- omdev/py/tools/mkrelimp.py,sha256=L6TksQixUc_DQGXKFMOKnYJ-JixeP3ldgkDqHeEs2Ww,4044
241
+ omdev/py/tools/mkrelimp.py,sha256=kuzfS4GWcGi-ItyhEHSW4hV9ZcfDJL6inDMhDp1V2lE,4049
242
242
  omdev/pyproject/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
243
243
  omdev/pyproject/__main__.py,sha256=gn3Rl1aYPYdiTtEqa9ifi0t-e4ZwPY0vhJ4UXvYdJDY,165
244
- omdev/pyproject/cexts.py,sha256=d7cBt_PCDGWkna4g3tg5uLRBzB1P2UqYFBIegKfZfkA,4287
244
+ omdev/pyproject/cexts.py,sha256=4xYt1aw2FqcPEpdr1clJnEmp3sbEQXnSWl1sm-4d9NE,4292
245
245
  omdev/pyproject/cli.py,sha256=Umsu2bcJUYeeVXICaZFhKckUBT6VWuYDL4htgCGGQIs,8749
246
- omdev/pyproject/configs.py,sha256=KKavY7FE5Prm3L0pmXLRMiylCO-M4RqcJC28ObWRWBU,2808
247
- omdev/pyproject/inject.py,sha256=WuHBHDuCu5VuLios-XK4Q9-Zi2YNAo7w_rdIVlnDJZs,320
248
- omdev/pyproject/pkg.py,sha256=gnmNfvP640Ztbq0jZ4ZZ8hmPuc8tG5maIrk9lRNQ-4A,14850
249
- omdev/pyproject/reqs.py,sha256=mKkUgsXW2XUAB8BsuwJb3Rm5OB2PrMNoRELH22dY0SA,2412
246
+ omdev/pyproject/configs.py,sha256=baNRwHtUW8S8DKCxuKlMbV3Gduujd1PyNURxQ48Nnxk,2813
247
+ omdev/pyproject/inject.py,sha256=Von8_8ofkITLoCEwDHNRAwY0AEdFQg7r2ILS8kcTMuY,325
248
+ omdev/pyproject/pkg.py,sha256=oLZyG02JHGaFwFO4oCRzTjMFfDohav7KPcJ1CSu3dEA,14851
249
+ omdev/pyproject/reqs.py,sha256=p7rynDjLHnyziMPg07hGF96htPWbpiIiK8-0nqZ59W8,2417
250
250
  omdev/pyproject/venvs.py,sha256=JUHw7L226PRg2Rl1gqhrEVHRT_7VbwqAJbrTmVmWxrc,1917
251
251
  omdev/pyproject/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
252
252
  omdev/pyproject/resources/docker-dev.sh,sha256=DHkz5D18jok_oDolfg2mqrvGRWFoCe9GQo04dR1czcc,838
253
253
  omdev/pyproject/resources/python.sh,sha256=rFaN4SiJ9hdLDXXsDTwugI6zsw6EPkgYMmtacZeTbvw,749
254
254
  omdev/scripts/__init__.py,sha256=MKCvUAEQwsIvwLixwtPlpBqmkMXLCnjjXyAXvVpDwVk,91
255
- omdev/scripts/ci.py,sha256=IcEIPLYY92fdl-nEpTRSpNC3q_NNG91YpShloOGH450,358026
256
- omdev/scripts/interp.py,sha256=SPoPSDco58C61CKUmu1OoFtld9zqYJ1IndBaDZpHUGo,158182
257
- omdev/scripts/pyproject.py,sha256=n5sZwKVs8XuL-UikTTfRUwSG2e5RY-w3U6PIo66N5OE,267682
255
+ omdev/scripts/ci.py,sha256=9yDySeJ4tU63Zf8jSL2QdM1jkCEQ3T8VCTc3pHOTUFo,357984
256
+ omdev/scripts/interp.py,sha256=T8EdNxuncwqCXfIBfCLoUcsYNqEhOrOE8V1hC9vTzqI,158095
257
+ omdev/scripts/pyproject.py,sha256=qBBXmbdKMYzqxnb0zEWYhCOg9Cy0pWno3wjulICFj_o,267626
258
258
  omdev/scripts/slowcat.py,sha256=lssv4yrgJHiWfOiHkUut2p8E8Tq32zB-ujXESQxFFHY,2728
259
259
  omdev/scripts/tmpexec.py,sha256=WTYcf56Tj2qjYV14AWmV8SfT0u6Y8eIU6cKgQRvEK3c,1442
260
260
  omdev/tokens/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -263,19 +263,19 @@ omdev/tokens/tokenizert.py,sha256=66tTP7J4vCYMgn-EKtfLBmc8SfycL1llvI4Q7LSxOk4,78
263
263
  omdev/tokens/utils.py,sha256=vF2c8vHwe1zfSXNeU0q1CaA_66oZl0YdkqBKzNhFsAM,1758
264
264
  omdev/tools/__init__.py,sha256=iVJAOQ0viGTQOm0DLX4uZLro-9jOioYJGLg9s0kDx1A,78
265
265
  omdev/tools/cloc.py,sha256=BiIf2PnnoRH6ByH4mnua69Vv-ZDPHsSAPUds7giRolI,6013
266
- omdev/tools/diff.py,sha256=_ThKWXFE-bG5SPDYNs8GqstEUPzL_PTWb03nJN0laLg,515
266
+ omdev/tools/diff.py,sha256=S6ddB7pBeMtzKh2hiHfzQ93pj6mclKt1UZQMKy4Bt5M,520
267
267
  omdev/tools/doc.py,sha256=PCtqDjFA55Ed4QVUpMiw05NwyXivCeox-ZE_JDN0BD0,2575
268
- omdev/tools/docker.py,sha256=le6QvWEeMo8rB-qxD_AwZRH5kf78uJmdy-ENAamZDBM,7374
268
+ omdev/tools/docker.py,sha256=4TdpKiWMr9eCffAPHo6sAWGURGTYMY5AK_F5lmnwlJA,7363
269
269
  omdev/tools/intellij.py,sha256=yy6Uw2hcYyEWLZESAupKvd3U6omirYMbjnbw7UllhV4,5834
270
270
  omdev/tools/linehisto.py,sha256=0ZNm34EuiZBE9Q2YC6KNLNNydNT8QPSOwvYzXiU9S2Q,8881
271
271
  omdev/tools/mkenv.py,sha256=G2tu5bmiyKFyZuqtUoM7Z-6AI6CI86F2LwoIozoWOvo,2300
272
- omdev/tools/notebook.py,sha256=q1YMGwM1skHv-dPbtT_cM7UOGFNiMEAxjr6rr6rbobk,3494
273
- omdev/tools/pip.py,sha256=eBD41hp-V3thGfhUBM3Erxl4CSG-5LG6Szo1sA76P2k,3459
274
- omdev/tools/prof.py,sha256=hQakAsViJD4gLJpLLZnTkOqmTDAwM48Nx5q-O_aFlYM,1467
275
- omdev/tools/qr.py,sha256=tm68lPwEAkEwIL2sUKPKBYfwwPtjVWG1DBZwur8_jY8,1737
272
+ omdev/tools/notebook.py,sha256=MGi2JEwyIPR1n7gakaaYZL1HHbSVmDKGQROqH56ppgU,3499
273
+ omdev/tools/pip.py,sha256=HF5ILsNcU1IGn9bRthwjp4XicafZWR7zdp6rOhqSMiw,3464
274
+ omdev/tools/prof.py,sha256=yPU0gkw4yWVsbAr3L95sO2FC8MM1DpzZiVVMcQlFt4c,1472
275
+ omdev/tools/qr.py,sha256=1p4tMJmImDa4YTQQNPwQPkM8FnhGRYj6J79BJR-MNHo,1742
276
276
  omdev/tools/shadow.py,sha256=4E2ilxa16liIvQxvgU37ITkOMrP6ufShRQfeW7wwtRc,1697
277
277
  omdev/tools/shell.py,sha256=5hF_8DCtB3XrzJSfmQDsr7X3Fi9KRV4M70q9qp0KREA,2341
278
- omdev/tools/sqlrepl.py,sha256=wAjrfXNrRV63-NJCC2HlGQnFh7lUH0bHMnOjYotQqFs,5753
278
+ omdev/tools/sqlrepl.py,sha256=TcLJlElzfXqYUkfIOwhJHtXiQjXOg4xBTwSoSRDpNkg,5758
279
279
  omdev/tools/antlr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
280
280
  omdev/tools/antlr/__main__.py,sha256=7db8YIfCp4GoU-lW7jJJDiLQ6dDrd25M7gUv1AHGj4w,170
281
281
  omdev/tools/antlr/cli.py,sha256=QeO5vSUJDL43lAa2EYsLnN-jZBcNOTwB1C9Ua_h7qoA,1228
@@ -288,11 +288,11 @@ omdev/tools/git/consts.py,sha256=JuXivUNDkNhM4pe97icjRVAKM8cNRbrODquHINNKqOE,40
288
288
  omdev/tools/git/messages.py,sha256=NWztIK0nAKJIOVzuVQcR_5LHZUgqyVkrOlpl7dFLMdU,2424
289
289
  omdev/tools/json/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
290
290
  omdev/tools/json/__main__.py,sha256=wqpkN_NsQyNwKW4qjVj8ADJ4_C98KhrFBtE-Z1UamfU,168
291
- omdev/tools/json/cli.py,sha256=v8YsChDN97y7XDsNRs3zimCAwCkJQkMDcd8CXhfUVGY,10087
291
+ omdev/tools/json/cli.py,sha256=8aXX3ijU3lvPZamkIyUOz-vlBmyIdaX7dCQq5rN7adE,10193
292
292
  omdev/tools/json/formats.py,sha256=1qGYb8Kq_yFpLMaecBg-XE3yWSvqRiRbBX8SAElpS9s,2643
293
293
  omdev/tools/json/io.py,sha256=sfj2hJS9Hy3aUR8a_lLzOrYcmL9fSKyvOHiofdUASsI,1427
294
294
  omdev/tools/json/parsing.py,sha256=xZiOH3jSVErNGKI8AysFf0zzyhivXvRakTQe7rWxhKQ,2052
295
- omdev/tools/json/processing.py,sha256=KVMVyW5dTaoPyjn2Aabkay4tBn5cwJJXtLQaJgZI7ZY,2016
295
+ omdev/tools/json/processing.py,sha256=a999e1VKeFR38eS7Pmcr8YCnzAk22Url7NuZ1fBCmts,2362
296
296
  omdev/tools/json/rendering.py,sha256=KilwK8ziHGy3Z76H9CC04x2ro5Rkws1d06D0j6TnHA4,2660
297
297
  omdev/tools/jsonview/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
298
298
  omdev/tools/jsonview/__main__.py,sha256=BF-MVWpPJJeQYUqJA48G395kxw0lEJnV-hRLV_F9G2A,173
@@ -302,10 +302,10 @@ omdev/tools/jsonview/resources/jsonview.css,sha256=RqQMm98EnQkbVM-8BgjNduzUfsVDM
302
302
  omdev/tools/jsonview/resources/jsonview.js,sha256=faDvXDOXKvEvjOuIlz4D3F2ReQXb_buXDU27hKuuqAw,1648
303
303
  omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
304
304
  omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
305
- omdev/tools/pawk/pawk.py,sha256=zsEkfQX0jF5bn712uqPAyBSdJt2dno1LH2oeSMNfXQI,11424
306
- omdev-0.0.0.dev362.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
307
- omdev-0.0.0.dev362.dist-info/METADATA,sha256=j1jOVxUpRcYWXonV2ziS9FcUUuoQYZaxHd4qjKu_dnE,1674
308
- omdev-0.0.0.dev362.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
309
- omdev-0.0.0.dev362.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
310
- omdev-0.0.0.dev362.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
311
- omdev-0.0.0.dev362.dist-info/RECORD,,
305
+ omdev/tools/pawk/pawk.py,sha256=ao5mdrpiSU4AZ8mBozoEaV3UVlmVTnRG9wD9XP70MZE,11429
306
+ omdev-0.0.0.dev364.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
307
+ omdev-0.0.0.dev364.dist-info/METADATA,sha256=3g4HotiW-zDtGxF8cJ5YxL_6gfz2hZHGmsZEh5mSppk,1674
308
+ omdev-0.0.0.dev364.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
309
+ omdev-0.0.0.dev364.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
310
+ omdev-0.0.0.dev364.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
311
+ omdev-0.0.0.dev364.dist-info/RECORD,,