omdev 0.0.0.dev126__tar.gz → 0.0.0.dev128__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 (157) hide show
  1. {omdev-0.0.0.dev126/omdev.egg-info → omdev-0.0.0.dev128}/PKG-INFO +2 -2
  2. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/amalg/amalg.py +27 -7
  3. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/sysconfig.py +3 -3
  4. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cli/clicli.py +2 -2
  5. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/scripts/interp.py +1 -1
  6. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/scripts/pyproject.py +1 -1
  7. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/tokens.py +30 -2
  8. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128/omdev.egg-info}/PKG-INFO +2 -2
  9. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev.egg-info/requires.txt +1 -1
  10. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/pyproject.toml +2 -2
  11. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/LICENSE +0 -0
  12. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/MANIFEST.in +0 -0
  13. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/README.rst +0 -0
  14. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/.manifests.json +0 -0
  15. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/__about__.py +0 -0
  16. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/__init__.py +0 -0
  17. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/amalg/__init__.py +0 -0
  18. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/amalg/__main__.py +0 -0
  19. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/antlr/__init__.py +0 -0
  20. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/antlr/consts.py +0 -0
  21. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/antlr/gen.py +0 -0
  22. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/bracepy.py +0 -0
  23. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/__init__.py +0 -0
  24. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/compute/__init__.py +0 -0
  25. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/compute/cache.py +0 -0
  26. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/compute/contexts.py +0 -0
  27. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/compute/currents.py +0 -0
  28. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/compute/fns.py +0 -0
  29. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/compute/resolvers.py +0 -0
  30. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/compute/storage.py +0 -0
  31. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/compute/types.py +0 -0
  32. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/data/__init__.py +0 -0
  33. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/data/actions.py +0 -0
  34. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/data/cache.py +0 -0
  35. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/data/consts.py +0 -0
  36. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/data/defaults.py +0 -0
  37. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/data/manifests.py +0 -0
  38. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cache/data/specs.py +0 -0
  39. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/__init__.py +0 -0
  40. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_boilerplate.cc +0 -0
  41. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/LICENSE +0 -0
  42. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/__init__.py +0 -0
  43. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/build_ext.py +0 -0
  44. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  45. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  46. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/compilers/options.py +0 -0
  47. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  48. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/dir_util.py +0 -0
  49. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/errors.py +0 -0
  50. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/extension.py +0 -0
  51. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/file_util.py +0 -0
  52. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/modified.py +0 -0
  53. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/spawn.py +0 -0
  54. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/util.py +0 -0
  55. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/_distutils/version.py +0 -0
  56. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/build.py +0 -0
  57. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/cmake.py +0 -0
  58. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/importhook.py +0 -0
  59. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/magic.py +0 -0
  60. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cexts/scan.py +0 -0
  61. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/classdot.py +0 -0
  62. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cli/__init__.py +0 -0
  63. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cli/__main__.py +0 -0
  64. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cli/_pathhack.py +0 -0
  65. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cli/install.py +0 -0
  66. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cli/main.py +0 -0
  67. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cli/managers.py +0 -0
  68. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cli/types.py +0 -0
  69. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/clipboard/__init__.py +0 -0
  70. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/clipboard/clipboard.py +0 -0
  71. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/clipboard/darwin_cf.py +0 -0
  72. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/clipboard/linux_x.py +0 -0
  73. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/cmake.py +0 -0
  74. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/findimports.py +0 -0
  75. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/git.py +0 -0
  76. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/imgur.py +0 -0
  77. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/interp/__init__.py +0 -0
  78. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/interp/__main__.py +0 -0
  79. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/interp/cli.py +0 -0
  80. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/interp/inspect.py +0 -0
  81. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/interp/providers.py +0 -0
  82. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/interp/pyenv.py +0 -0
  83. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/interp/resolvers.py +0 -0
  84. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/interp/standalone.py +0 -0
  85. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/interp/system.py +0 -0
  86. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/interp/types.py +0 -0
  87. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/magic/__init__.py +0 -0
  88. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/magic/find.py +0 -0
  89. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/magic/magic.py +0 -0
  90. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/magic/prepare.py +0 -0
  91. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/magic/styles.py +0 -0
  92. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/manifests/__init__.py +0 -0
  93. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/manifests/build.py +0 -0
  94. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/manifests/load.py +0 -0
  95. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/manifests/types.py +0 -0
  96. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/mypy/__init__.py +0 -0
  97. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/mypy/debug.py +0 -0
  98. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/packaging/__init__.py +0 -0
  99. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/packaging/marshal.py +0 -0
  100. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/packaging/names.py +0 -0
  101. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/packaging/requires.py +0 -0
  102. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/packaging/specifiers.py +0 -0
  103. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/packaging/versions.py +0 -0
  104. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/pip.py +0 -0
  105. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/precheck/__init__.py +0 -0
  106. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/precheck/__main__.py +0 -0
  107. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/precheck/base.py +0 -0
  108. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/precheck/git.py +0 -0
  109. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/precheck/lite.py +0 -0
  110. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/precheck/main.py +0 -0
  111. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/precheck/manifests.py +0 -0
  112. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/precheck/scripts.py +0 -0
  113. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/ptk/__init__.py +0 -0
  114. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/ptk/apps/__init__.py +0 -0
  115. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/ptk/apps/ncdu.py +0 -0
  116. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/pycharm/__init__.py +0 -0
  117. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/pycharm/__main__.py +0 -0
  118. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/pycharm/cli.py +0 -0
  119. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/pyproject/__init__.py +0 -0
  120. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/pyproject/__main__.py +0 -0
  121. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/pyproject/cexts.py +0 -0
  122. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/pyproject/cli.py +0 -0
  123. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/pyproject/configs.py +0 -0
  124. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/pyproject/pkg.py +0 -0
  125. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/pyproject/reqs.py +0 -0
  126. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/revisions.py +0 -0
  127. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/scripts/__init__.py +0 -0
  128. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/scripts/bumpversion.py +0 -0
  129. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/scripts/execrss.py +0 -0
  130. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/scripts/exectime.py +0 -0
  131. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/scripts/importtrace.py +0 -0
  132. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/scripts/slowcat.py +0 -0
  133. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/scripts/tmpexec.py +0 -0
  134. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/secrets.py +0 -0
  135. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/toml/__init__.py +0 -0
  136. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/toml/parser.py +0 -0
  137. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/toml/writer.py +0 -0
  138. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/tools/__init__.py +0 -0
  139. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/tools/doc.py +0 -0
  140. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/tools/docker.py +0 -0
  141. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/tools/git.py +0 -0
  142. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/tools/importscan.py +0 -0
  143. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/tools/mkrelimp.py +0 -0
  144. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/tools/notebook.py +0 -0
  145. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/tools/pawk/__init__.py +0 -0
  146. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/tools/pawk/__main__.py +0 -0
  147. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/tools/pawk/pawk.py +0 -0
  148. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/tools/pip.py +0 -0
  149. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/tools/prof.py +0 -0
  150. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/tools/qr.py +0 -0
  151. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/tools/sqlrepl.py +0 -0
  152. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev/wheelfile.py +0 -0
  153. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev.egg-info/SOURCES.txt +0 -0
  154. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev.egg-info/dependency_links.txt +0 -0
  155. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev.egg-info/entry_points.txt +0 -0
  156. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/omdev.egg-info/top_level.txt +0 -0
  157. {omdev-0.0.0.dev126 → omdev-0.0.0.dev128}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev126
3
+ Version: 0.0.0.dev128
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.dev126
15
+ Requires-Dist: omlish==0.0.0.dev128
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=24.10; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -232,13 +232,13 @@ def _is_typing(
232
232
  return True
233
233
 
234
234
  wts = list(tks.ignore_ws(lts))
235
- if not (
236
- len(wts) >= 5 and
237
- wts[0].name == 'NAME' and
238
- wts[1].name == 'OP' and wts[1].src == '=' and
239
- wts[2].name == 'NAME' and wts[2].src == 'ta' and
240
- wts[3].name == 'OP' and wts[3].src == '.'
241
- ):
235
+ if not tks.match_toks(wts, [
236
+ ('NAME', None),
237
+ ('OP', '='),
238
+ ('NAME', 'ta'),
239
+ ('OP', '.'),
240
+ (None, None),
241
+ ]):
242
242
  return False
243
243
 
244
244
  if exclude_newtypes:
@@ -273,6 +273,19 @@ def make_typing(
273
273
  ##
274
274
 
275
275
 
276
+ def is_root_level_if_type_checking_block(lts: Tokens) -> bool:
277
+ return tks.match_toks(tks.ignore_ws(lts, keep=['INDENT']), [
278
+ ('NAME', 'if'),
279
+ ('NAME', 'ta'),
280
+ ('OP', '.'),
281
+ ('NAME', 'TYPE_CHECKING'),
282
+ ('OP', ':'),
283
+ ])
284
+
285
+
286
+ ##
287
+
288
+
276
289
  @dc.dataclass(frozen=True, kw_only=True)
277
290
  class SrcFile:
278
291
  path: str
@@ -352,6 +365,13 @@ def make_src_file(
352
365
  for ml in mls
353
366
  ])
354
367
 
368
+ elif is_root_level_if_type_checking_block(line):
369
+ while True:
370
+ nl = cls[i]
371
+ if nl and nl[0].name != 'INDENT':
372
+ break
373
+ i += 1
374
+
355
375
  else:
356
376
  ctls.append(line)
357
377
 
@@ -73,7 +73,7 @@ def get_python_version():
73
73
  Return a string containing the major and minor Python version, leaving off the patchlevel. Sample return values
74
74
  could be '1.5' or '2.2'.
75
75
  """
76
- return '%d.%d' % sys.version_info[:2]
76
+ return '%d.%d' % sys.version_info[:2] # noqa
77
77
 
78
78
 
79
79
  def get_python_inc(plat_specific=0, prefix=None):
@@ -193,9 +193,9 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
193
193
 
194
194
  if prefix is None:
195
195
  if standard_lib:
196
- prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX
196
+ prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX # noqa
197
197
  else:
198
- prefix = plat_specific and EXEC_PREFIX or PREFIX
198
+ prefix = plat_specific and EXEC_PREFIX or PREFIX # noqa
199
199
 
200
200
  if os.name == 'posix':
201
201
  if plat_specific or standard_lib:
@@ -21,11 +21,11 @@ class CliCli(ap.Cli):
21
21
 
22
22
  #
23
23
 
24
- @ap.command(name='version')
24
+ @ap.command(name='version', aliases=['ver'])
25
25
  def print_version(self) -> None:
26
26
  print(__about__.__version__)
27
27
 
28
- @ap.command(name='revision')
28
+ @ap.command(name='revision', aliases=['rev'])
29
29
  def print_revision(self) -> None:
30
30
  print(__about__.__revision__)
31
31
 
@@ -1316,7 +1316,7 @@ class StandardLogFormatter(logging.Formatter):
1316
1316
  return ct.strftime(datefmt) # noqa
1317
1317
  else:
1318
1318
  t = ct.strftime('%Y-%m-%d %H:%M:%S')
1319
- return '%s.%03d' % (t, record.msecs)
1319
+ return '%s.%03d' % (t, record.msecs) # noqa
1320
1320
 
1321
1321
 
1322
1322
  ##
@@ -2841,7 +2841,7 @@ class StandardLogFormatter(logging.Formatter):
2841
2841
  return ct.strftime(datefmt) # noqa
2842
2842
  else:
2843
2843
  t = ct.strftime('%Y-%m-%d %H:%M:%S')
2844
- return '%s.%03d' % (t, record.msecs)
2844
+ return '%s.%03d' % (t, record.msecs) # noqa
2845
2845
 
2846
2846
 
2847
2847
  ##
@@ -29,8 +29,16 @@ def is_ws(tok: 'trt.Token') -> bool:
29
29
  return tok.name in WS_NAMES
30
30
 
31
31
 
32
- def ignore_ws(toks: ta.Iterable['trt.Token']) -> ta.Iterable['trt.Token']:
33
- return (t for t in toks if not is_ws(t))
32
+ def ignore_ws(
33
+ toks: ta.Iterable['trt.Token'],
34
+ *,
35
+ keep: ta.Container[str] = (),
36
+ ) -> ta.Iterable['trt.Token']:
37
+ return (
38
+ t
39
+ for t in toks
40
+ if t.name in keep or t.name not in WS_NAMES
41
+ )
34
42
 
35
43
 
36
44
  ##
@@ -46,3 +54,23 @@ def join_toks(ts: Tokens) -> str:
46
54
 
47
55
  def join_lines(ls: ta.Iterable[Tokens]) -> str:
48
56
  return ''.join(map(join_toks, ls))
57
+
58
+
59
+ ##
60
+
61
+
62
+ def match_toks(
63
+ ts: ta.Iterable['trt.Token'],
64
+ pat: ta.Sequence[tuple[str | None, str | None]],
65
+ ) -> bool:
66
+ it = iter(ts)
67
+ for pn, ps in pat:
68
+ try:
69
+ t = next(it)
70
+ except StopIteration:
71
+ return False
72
+ if pn is not None and t.name != pn:
73
+ return False
74
+ if ps is not None and t.src != ps:
75
+ return False
76
+ return True
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev126
3
+ Version: 0.0.0.dev128
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.dev126
15
+ Requires-Dist: omlish==0.0.0.dev128
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.dev126
1
+ omlish==0.0.0.dev128
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.dev126'
15
+ version = '0.0.0.dev128'
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.dev126',
25
+ 'omlish == 0.0.0.dev128',
26
26
  ]
27
27
 
28
28
  [project.optional-dependencies]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes