omdev 0.0.0.dev323__py3-none-any.whl → 0.0.0.dev324__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.
omdev/__about__.py CHANGED
@@ -31,7 +31,7 @@ class Project(ProjectBase):
31
31
  ],
32
32
 
33
33
  'mypy': [
34
- 'mypy ~= 1.15',
34
+ 'mypy ~= 1.16',
35
35
  ],
36
36
 
37
37
  'prof': [
omdev/cache/data/cache.py CHANGED
@@ -87,11 +87,11 @@ def _url_retrieve(
87
87
  if size >= 0 and read < size:
88
88
  raise urllib.error.ContentTooShortError(
89
89
  f'retrieval incomplete: got only {read} out of {size} bytes',
90
- result, # type: ignore
90
+ result,
91
91
  )
92
92
 
93
93
  success = True
94
- return result # type: ignore
94
+ return result
95
95
 
96
96
 
97
97
  class Cache:
omdev/mypy/report.py CHANGED
@@ -1,4 +1,9 @@
1
+ """
2
+ TODO:
3
+ - alt mode: --output=json, subprocess / tee
4
+ """
1
5
  import collections
6
+ import dataclasses as dc
2
7
  import typing as ta
3
8
 
4
9
  from .debug import install_debug_path_finder
@@ -13,6 +18,20 @@ if ta.TYPE_CHECKING:
13
18
  ##
14
19
 
15
20
 
21
+ @dc.dataclass(frozen=True, kw_only=True)
22
+ class JsonOutputError:
23
+ file: str
24
+ line: int
25
+ column: int
26
+ message: str
27
+ hint: ta.Any | None
28
+ code: str
29
+ severity: str # 'error' | 'note'
30
+
31
+
32
+ ##
33
+
34
+
16
35
  def _report_build_result(
17
36
  result: 'mypy.build.BuildResult',
18
37
  ) -> None:
@@ -32,6 +51,7 @@ def _report_build_result(
32
51
  max_code_len = max(map(len, count_by_code))
33
52
  for code, count in sorted(count_by_code.items(), key=lambda kv: -kv[1]):
34
53
  print(f'{code.rjust(max_code_len)} : {count}')
54
+ print()
35
55
 
36
56
 
37
57
  ##
@@ -190,7 +190,7 @@ class Specifier(BaseSpecifier):
190
190
 
191
191
  self._prereleases = prereleases
192
192
 
193
- @property # type: ignore
193
+ @property
194
194
  def prereleases(self) -> bool:
195
195
  if self._prereleases is not None:
196
196
  return self._prereleases
@@ -210,7 +210,7 @@ class ImportTracer:
210
210
 
211
211
  for child in node.children:
212
212
  seq = self._fixup_node(child, depth=depth + 1, seq=seq + 1)
213
- node.child_stats += child.stats # type: ignore
213
+ node.child_stats += child.stats
214
214
 
215
215
  node.self_stats = node.stats - node.child_stats # type: ignore
216
216
  return seq
omdev/scripts/ci.py CHANGED
@@ -1797,7 +1797,7 @@ class ProxyLogHandler(ProxyLogFilterer, logging.Handler):
1797
1797
  self._underlying.set_name(name)
1798
1798
 
1799
1799
  @property
1800
- def name(self):
1800
+ def name(self): # type: ignore[override]
1801
1801
  return self._underlying.name
1802
1802
 
1803
1803
  @property
omdev/scripts/interp.py CHANGED
@@ -1739,7 +1739,7 @@ class ProxyLogHandler(ProxyLogFilterer, logging.Handler):
1739
1739
  self._underlying.set_name(name)
1740
1740
 
1741
1741
  @property
1742
- def name(self):
1742
+ def name(self): # type: ignore[override]
1743
1743
  return self._underlying.name
1744
1744
 
1745
1745
  @property
@@ -1972,7 +1972,7 @@ class Specifier(BaseSpecifier):
1972
1972
 
1973
1973
  self._prereleases = prereleases
1974
1974
 
1975
- @property # type: ignore
1975
+ @property
1976
1976
  def prereleases(self) -> bool:
1977
1977
  if self._prereleases is not None:
1978
1978
  return self._prereleases
@@ -3203,7 +3203,7 @@ class ProxyLogHandler(ProxyLogFilterer, logging.Handler):
3203
3203
  self._underlying.set_name(name)
3204
3204
 
3205
3205
  @property
3206
- def name(self):
3206
+ def name(self): # type: ignore[override]
3207
3207
  return self._underlying.name
3208
3208
 
3209
3209
  @property
@@ -3667,7 +3667,7 @@ class Specifier(BaseSpecifier):
3667
3667
 
3668
3668
  self._prereleases = prereleases
3669
3669
 
3670
- @property # type: ignore
3670
+ @property
3671
3671
  def prereleases(self) -> bool:
3672
3672
  if self._prereleases is not None:
3673
3673
  return self._prereleases
@@ -1,12 +1,14 @@
1
1
  """
2
2
  TODO:
3
3
  - options lol - csv header, newline, etc
4
+ - edn
4
5
  """
5
6
  import dataclasses as dc
6
7
  import enum
7
8
  import json
8
9
  import typing as ta
9
10
 
11
+ from omlish import check
10
12
  from omlish import lang
11
13
 
12
14
 
@@ -44,6 +46,12 @@ class Format:
44
46
  load: ta.Callable[[ta.TextIO], ta.Any]
45
47
 
46
48
 
49
+ def _load_xml(f: ta.TextIO) -> dict[str, ta.Any]:
50
+ tree = xml.parse_tree(f.read())
51
+ sel = xml.build_simple_element(check.not_none(tree.getroot()))
52
+ return sel.se_dict()
53
+
54
+
47
55
  class Formats(enum.Enum):
48
56
  JSON = Format(['json'], json.load)
49
57
 
@@ -59,7 +67,7 @@ class Formats(enum.Enum):
59
67
 
60
68
  PY = Format(['py', 'python', 'repr'], lambda f: ast.literal_eval(f.read()))
61
69
 
62
- XML = Format(['xml'], lambda f: xml.build_simple_element(xml.parse_tree(f.read()).getroot()).se_dict())
70
+ XML = Format(['xml'], _load_xml)
63
71
 
64
72
  CSV = Format(['csv'], lambda f: list(csv.DictReader(f)))
65
73
  TSV = Format(['tsv'], lambda f: list(csv.DictReader(f, delimiter='\t')))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev323
3
+ Version: 0.0.0.dev324
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.dev323
15
+ Requires-Dist: omlish==0.0.0.dev324
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.15; extra == "all"
24
+ Requires-Dist: mypy~=1.16; 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.15; extra == "mypy"
39
+ Requires-Dist: mypy~=1.16; 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
1
  omdev/.manifests.json,sha256=7rHwJQCTz0jmkxij_rlIAw0D1A38Rb3QqcmJNiRIhOM,11257
2
- omdev/__about__.py,sha256=16xa_1BdZanTpZbkjAOQ11_x5kJcb1m1tKdvb06J7VI,1202
2
+ omdev/__about__.py,sha256=2_6pQyjxqAspvwBSJUWQgdBBcGaDO3zX8yETLaspUQE,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
@@ -27,7 +27,7 @@ omdev/cache/compute/storage.py,sha256=woCUqHg8ZrwLEejRG3zu1L5ZXxGNNXveh3E8FnlEkj
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
30
- omdev/cache/data/cache.py,sha256=aZJotj9kpVHBK7O0UdqMdeV7PtCqf9Rd8tqIwgWtQlQ,7664
30
+ omdev/cache/data/cache.py,sha256=oveyGl6gfTmQ4fKVO-NbB5Zx4rmEcti3BdZIvv5C6CU,7632
31
31
  omdev/cache/data/consts.py,sha256=d6W_aeMqgah6PmPYi9RA8Be54oQ4BcNCy8kDQ7FlB_Q,26
32
32
  omdev/cache/data/defaults.py,sha256=NL_mT7kaSLm2Mk9VO5wdSu-DIcHTR1KgcihJqdSd4TY,312
33
33
  omdev/cache/data/manifests.py,sha256=4BparztsMZo9DDVVPhv6iv5g4kK7QAi8Vqtj3PbKkco,989
@@ -169,7 +169,7 @@ omdev/manifests/dumping.py,sha256=mYXO58oXWQdTIn7A9XTnGv2-3LRPvO_uQmqkwPn9cMw,34
169
169
  omdev/manifests/main.py,sha256=7zRlyE0BDPqITEbChlTBRGulAvG1nUZPHXrerNExriE,2126
170
170
  omdev/mypy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
171
  omdev/mypy/debug.py,sha256=VskRcr9trNhyPG2ErZZ7IX_v1DLKTLBOjp34o-fEWaM,3294
172
- omdev/mypy/report.py,sha256=iILB5a1oy_JB4LEKOprJOv0jne2V7uPnftL7afyp_l8,1207
172
+ omdev/mypy/report.py,sha256=ZpBWibI5PBK28DgGhx5tLHvuL-qdcmG1MT4HSWdFsnc,1515
173
173
  omdev/oci/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
174
174
  omdev/oci/building.py,sha256=g1TY-a2eHgEamYv0mt1L6rOevwOgdp_cW1xdVdjDzTw,5695
175
175
  omdev/oci/compression.py,sha256=5hs7u0hImsm22GcQBHGYnP6g9dr-lBZ3E_PzdNVD4WY,134
@@ -189,7 +189,7 @@ omdev/packaging/marshal.py,sha256=YMXXkoWkjYoOAyD6RHsmaHGwlIsDQjnMtfa6e9-l4_A,23
189
189
  omdev/packaging/names.py,sha256=-a7AykFPVR1i6EYJepbe3ABRrZQ_tPPmK5olzbn9HLI,2528
190
190
  omdev/packaging/requires.py,sha256=PGbH1m17lkFEBvSp3znF-o9dmgFrRCM_PHBl0ARa6lw,15679
191
191
  omdev/packaging/revisions.py,sha256=3u-6vY0mq01tgRENcncozsMLXSgtaQWXuQp0kRkEHvg,4986
192
- omdev/packaging/specifiers.py,sha256=X8xOcwRLXTQYx5mYAS3ijqoTLlCtYESyUu4fX9bvblY,17447
192
+ omdev/packaging/specifiers.py,sha256=S4WZwSFaXz5LB8BiaXcowo1OFXEuY0YsXVxgpLfsl3Y,17431
193
193
  omdev/packaging/versions.py,sha256=K4eUOUvLmYcR4aeUywekeWTBqAvZchrIxLf7dl07MS4,12261
194
194
  omdev/packaging/wheelfile.py,sha256=yfupGcGkbFlmzGzKU64k_vmOKpaKnUlDWxeGn2KdekU,10005
195
195
  omdev/precheck/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -234,7 +234,7 @@ omdev/py/docstrings/rest.py,sha256=c2xPYg_W01W9eYY_KLKX69E4qu4jpkgUshi5K5EyVv8,5
234
234
  omdev/py/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
235
235
  omdev/py/scripts/bumpversion.py,sha256=2NnfRsJiZNTg-LubIwXCm2vklG7-kIR8_xFUEZNxtiY,1119
236
236
  omdev/py/scripts/execstat.py,sha256=eyk_TCeJt-xtMGqaW3X7pnEBe7JZbXrTYsODn_m6lfM,3869
237
- omdev/py/scripts/importtrace.py,sha256=TqALDqR6ODpbMyAtk2q84Xrvmn0UPGaKAdcNB7E62bA,14035
237
+ omdev/py/scripts/importtrace.py,sha256=ry2PwV4h8KvFUHm4pIKN76TAwxC5lFT1A3CzccXlj2o,14019
238
238
  omdev/py/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
239
239
  omdev/py/tools/importscan.py,sha256=4dCH0coX0OqNwesteKaTE8GxuSfLhgXYQlzNUXLiSNY,4640
240
240
  omdev/py/tools/mkrelimp.py,sha256=L6TksQixUc_DQGXKFMOKnYJ-JixeP3ldgkDqHeEs2Ww,4044
@@ -251,9 +251,9 @@ omdev/pyproject/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
251
251
  omdev/pyproject/resources/docker-dev.sh,sha256=DHkz5D18jok_oDolfg2mqrvGRWFoCe9GQo04dR1czcc,838
252
252
  omdev/pyproject/resources/python.sh,sha256=rFaN4SiJ9hdLDXXsDTwugI6zsw6EPkgYMmtacZeTbvw,749
253
253
  omdev/scripts/__init__.py,sha256=MKCvUAEQwsIvwLixwtPlpBqmkMXLCnjjXyAXvVpDwVk,91
254
- omdev/scripts/ci.py,sha256=1IeNGWCyHtonK1PHaKETW7IqCyXMkIkMafXUVlFCtQo,357043
255
- omdev/scripts/interp.py,sha256=ByjO0DdnYF8VDYu04v6oIops4CknA8bUTOmcbjmlXGk,155590
256
- omdev/scripts/pyproject.py,sha256=psPWxTp0FAPrRTMEoLTvHOsbv15fkIf_Lh8LBl3pYZE,265071
254
+ omdev/scripts/ci.py,sha256=UMyGSv7_16YaG-rrrqnMU2bLJg-Vp74WriB_vmtfW6U,357069
255
+ omdev/scripts/interp.py,sha256=eI43dKT99L0LniXC6PDYou2Y5fOU-lrVyElVvPYu92s,155600
256
+ omdev/scripts/pyproject.py,sha256=7vcQBcXd64vnAiVdC9wQ-4z1jGf-un7xyKrt-K_tVwA,265081
257
257
  omdev/scripts/slowcat.py,sha256=lssv4yrgJHiWfOiHkUut2p8E8Tq32zB-ujXESQxFFHY,2728
258
258
  omdev/scripts/tmpexec.py,sha256=WTYcf56Tj2qjYV14AWmV8SfT0u6Y8eIU6cKgQRvEK3c,1442
259
259
  omdev/tokens/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -287,7 +287,7 @@ omdev/tools/git/messages.py,sha256=NWztIK0nAKJIOVzuVQcR_5LHZUgqyVkrOlpl7dFLMdU,2
287
287
  omdev/tools/json/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
288
288
  omdev/tools/json/__main__.py,sha256=wqpkN_NsQyNwKW4qjVj8ADJ4_C98KhrFBtE-Z1UamfU,168
289
289
  omdev/tools/json/cli.py,sha256=WQ8VQ9EkGD6IeIuUci8hLPwfx6y2B8ZzFlTTizwwKXU,9598
290
- omdev/tools/json/formats.py,sha256=RgtPdcs294o9n9czjafHppg1iSzD-olsIc3v8ApM9Os,1908
290
+ omdev/tools/json/formats.py,sha256=0IXHUIkcbKnTVP0a53wYWsBMpfVtGTrHN04zRAs2JZo,2049
291
291
  omdev/tools/json/io.py,sha256=sfj2hJS9Hy3aUR8a_lLzOrYcmL9fSKyvOHiofdUASsI,1427
292
292
  omdev/tools/json/parsing.py,sha256=csoTuG2C2AJB7PgG4TKt2XqdiBAQXtpXRWBxoMkk14g,2103
293
293
  omdev/tools/json/processing.py,sha256=iFm5VqaxJ97WHaun2ed7NEjMxhFeJqf28bLNfoDJft0,1209
@@ -295,9 +295,9 @@ omdev/tools/json/rendering.py,sha256=3HhdlKSetS6iK1tjF2aILzsl8Mb3D8wW92vYwGpRdVA
295
295
  omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
296
296
  omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
297
297
  omdev/tools/pawk/pawk.py,sha256=zsEkfQX0jF5bn712uqPAyBSdJt2dno1LH2oeSMNfXQI,11424
298
- omdev-0.0.0.dev323.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
299
- omdev-0.0.0.dev323.dist-info/METADATA,sha256=hjlKA2IkJS_PYyADH_w2QYrAPiitaD8ichH_6_b_HMY,1674
300
- omdev-0.0.0.dev323.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
301
- omdev-0.0.0.dev323.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
302
- omdev-0.0.0.dev323.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
303
- omdev-0.0.0.dev323.dist-info/RECORD,,
298
+ omdev-0.0.0.dev324.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
299
+ omdev-0.0.0.dev324.dist-info/METADATA,sha256=in-kTKRjJPv5TbNAvuzjie-QDRSqE7zfOG-7hHk4-Fc,1674
300
+ omdev-0.0.0.dev324.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
301
+ omdev-0.0.0.dev324.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
302
+ omdev-0.0.0.dev324.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
303
+ omdev-0.0.0.dev324.dist-info/RECORD,,