omdev 0.0.0.dev424__py3-none-any.whl → 0.0.0.dev425__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/scripts/interp.py CHANGED
@@ -1393,13 +1393,13 @@ def format_num_bytes(num_bytes: int) -> str:
1393
1393
 
1394
1394
 
1395
1395
  ########################################
1396
- # ../../../omlish/logs/filters.py
1396
+ # ../../../omlish/logs/std/filters.py
1397
1397
 
1398
1398
 
1399
1399
  ##
1400
1400
 
1401
1401
 
1402
- class TidLogFilter(logging.Filter):
1402
+ class TidLoggingFilter(logging.Filter):
1403
1403
  def filter(self, record):
1404
1404
  # FIXME: handle better - missing from wasm and cosmos
1405
1405
  if hasattr(threading, 'get_native_id'):
@@ -1410,13 +1410,13 @@ class TidLogFilter(logging.Filter):
1410
1410
 
1411
1411
 
1412
1412
  ########################################
1413
- # ../../../omlish/logs/proxy.py
1413
+ # ../../../omlish/logs/std/proxy.py
1414
1414
 
1415
1415
 
1416
1416
  ##
1417
1417
 
1418
1418
 
1419
- class ProxyLogFilterer(logging.Filterer):
1419
+ class ProxyLoggingFilterer(logging.Filterer):
1420
1420
  def __init__(self, underlying: logging.Filterer) -> None: # noqa
1421
1421
  self._underlying = underlying
1422
1422
 
@@ -1442,9 +1442,9 @@ class ProxyLogFilterer(logging.Filterer):
1442
1442
  return self._underlying.filter(record)
1443
1443
 
1444
1444
 
1445
- class ProxyLogHandler(ProxyLogFilterer, logging.Handler):
1445
+ class ProxyLoggingHandler(ProxyLoggingFilterer, logging.Handler):
1446
1446
  def __init__(self, underlying: logging.Handler) -> None: # noqa
1447
- ProxyLogFilterer.__init__(self, underlying)
1447
+ ProxyLoggingFilterer.__init__(self, underlying)
1448
1448
 
1449
1449
  _underlying: logging.Handler
1450
1450
 
@@ -2754,7 +2754,7 @@ class PredicateTimeout(Timeout):
2754
2754
 
2755
2755
 
2756
2756
  ########################################
2757
- # ../../../omlish/logs/json.py
2757
+ # ../../../omlish/logs/std/json.py
2758
2758
  """
2759
2759
  TODO:
2760
2760
  - translate json keys
@@ -2764,7 +2764,7 @@ TODO:
2764
2764
  ##
2765
2765
 
2766
2766
 
2767
- class JsonLogFormatter(logging.Formatter):
2767
+ class JsonLoggingFormatter(logging.Formatter):
2768
2768
  KEYS: ta.Mapping[str, bool] = {
2769
2769
  'name': False,
2770
2770
  'msg': False,
@@ -4019,6 +4019,7 @@ inj = InjectionApi()
4019
4019
  # ../../../omlish/logs/standard.py
4020
4020
  """
4021
4021
  TODO:
4022
+ - !! move to std !!
4022
4023
  - structured
4023
4024
  - prefixed
4024
4025
  - debug
@@ -4040,7 +4041,7 @@ STANDARD_LOG_FORMAT_PARTS = [
4040
4041
  ]
4041
4042
 
4042
4043
 
4043
- class StandardLogFormatter(logging.Formatter):
4044
+ class StandardLoggingFormatter(logging.Formatter):
4044
4045
  @staticmethod
4045
4046
  def build_log_format(parts: ta.Iterable[ta.Tuple[str, str]]) -> str:
4046
4047
  return ' '.join(v for k, v in parts)
@@ -4059,7 +4060,7 @@ class StandardLogFormatter(logging.Formatter):
4059
4060
  ##
4060
4061
 
4061
4062
 
4062
- class StandardConfiguredLogHandler(ProxyLogHandler):
4063
+ class StandardConfiguredLoggingHandler(ProxyLoggingHandler):
4063
4064
  def __init_subclass__(cls, **kwargs):
4064
4065
  raise TypeError('This class serves only as a marker and should not be subclassed.')
4065
4066
 
@@ -4092,7 +4093,7 @@ def configure_standard_logging(
4092
4093
  target: ta.Optional[logging.Logger] = None,
4093
4094
  force: bool = False,
4094
4095
  handler_factory: ta.Optional[ta.Callable[[], logging.Handler]] = None,
4095
- ) -> ta.Optional[StandardConfiguredLogHandler]:
4096
+ ) -> ta.Optional[StandardConfiguredLoggingHandler]:
4096
4097
  with _locking_logging_module_lock():
4097
4098
  if target is None:
4098
4099
  target = logging.root
@@ -4100,7 +4101,7 @@ def configure_standard_logging(
4100
4101
  #
4101
4102
 
4102
4103
  if not force:
4103
- if any(isinstance(h, StandardConfiguredLogHandler) for h in list(target.handlers)):
4104
+ if any(isinstance(h, StandardConfiguredLoggingHandler) for h in list(target.handlers)):
4104
4105
  return None
4105
4106
 
4106
4107
  #
@@ -4114,14 +4115,14 @@ def configure_standard_logging(
4114
4115
 
4115
4116
  formatter: logging.Formatter
4116
4117
  if json:
4117
- formatter = JsonLogFormatter()
4118
+ formatter = JsonLoggingFormatter()
4118
4119
  else:
4119
- formatter = StandardLogFormatter(StandardLogFormatter.build_log_format(STANDARD_LOG_FORMAT_PARTS))
4120
+ formatter = StandardLoggingFormatter(StandardLoggingFormatter.build_log_format(STANDARD_LOG_FORMAT_PARTS))
4120
4121
  handler.setFormatter(formatter)
4121
4122
 
4122
4123
  #
4123
4124
 
4124
- handler.addFilter(TidLogFilter())
4125
+ handler.addFilter(TidLoggingFilter())
4125
4126
 
4126
4127
  #
4127
4128
 
@@ -4134,7 +4135,7 @@ def configure_standard_logging(
4134
4135
 
4135
4136
  #
4136
4137
 
4137
- return StandardConfiguredLogHandler(handler)
4138
+ return StandardConfiguredLoggingHandler(handler)
4138
4139
 
4139
4140
 
4140
4141
  ########################################
@@ -2962,13 +2962,13 @@ def typing_annotations_attr() -> str:
2962
2962
 
2963
2963
 
2964
2964
  ########################################
2965
- # ../../../omlish/logs/filters.py
2965
+ # ../../../omlish/logs/std/filters.py
2966
2966
 
2967
2967
 
2968
2968
  ##
2969
2969
 
2970
2970
 
2971
- class TidLogFilter(logging.Filter):
2971
+ class TidLoggingFilter(logging.Filter):
2972
2972
  def filter(self, record):
2973
2973
  # FIXME: handle better - missing from wasm and cosmos
2974
2974
  if hasattr(threading, 'get_native_id'):
@@ -2979,13 +2979,13 @@ class TidLogFilter(logging.Filter):
2979
2979
 
2980
2980
 
2981
2981
  ########################################
2982
- # ../../../omlish/logs/proxy.py
2982
+ # ../../../omlish/logs/std/proxy.py
2983
2983
 
2984
2984
 
2985
2985
  ##
2986
2986
 
2987
2987
 
2988
- class ProxyLogFilterer(logging.Filterer):
2988
+ class ProxyLoggingFilterer(logging.Filterer):
2989
2989
  def __init__(self, underlying: logging.Filterer) -> None: # noqa
2990
2990
  self._underlying = underlying
2991
2991
 
@@ -3011,9 +3011,9 @@ class ProxyLogFilterer(logging.Filterer):
3011
3011
  return self._underlying.filter(record)
3012
3012
 
3013
3013
 
3014
- class ProxyLogHandler(ProxyLogFilterer, logging.Handler):
3014
+ class ProxyLoggingHandler(ProxyLoggingFilterer, logging.Handler):
3015
3015
  def __init__(self, underlying: logging.Handler) -> None: # noqa
3016
- ProxyLogFilterer.__init__(self, underlying)
3016
+ ProxyLoggingFilterer.__init__(self, underlying)
3017
3017
 
3018
3018
  _underlying: logging.Handler
3019
3019
 
@@ -5411,7 +5411,7 @@ class PredicateTimeout(Timeout):
5411
5411
 
5412
5412
 
5413
5413
  ########################################
5414
- # ../../../omlish/logs/json.py
5414
+ # ../../../omlish/logs/std/json.py
5415
5415
  """
5416
5416
  TODO:
5417
5417
  - translate json keys
@@ -5421,7 +5421,7 @@ TODO:
5421
5421
  ##
5422
5422
 
5423
5423
 
5424
- class JsonLogFormatter(logging.Formatter):
5424
+ class JsonLoggingFormatter(logging.Formatter):
5425
5425
  KEYS: ta.Mapping[str, bool] = {
5426
5426
  'name': False,
5427
5427
  'msg': False,
@@ -6676,6 +6676,7 @@ inj = InjectionApi()
6676
6676
  # ../../../omlish/logs/standard.py
6677
6677
  """
6678
6678
  TODO:
6679
+ - !! move to std !!
6679
6680
  - structured
6680
6681
  - prefixed
6681
6682
  - debug
@@ -6697,7 +6698,7 @@ STANDARD_LOG_FORMAT_PARTS = [
6697
6698
  ]
6698
6699
 
6699
6700
 
6700
- class StandardLogFormatter(logging.Formatter):
6701
+ class StandardLoggingFormatter(logging.Formatter):
6701
6702
  @staticmethod
6702
6703
  def build_log_format(parts: ta.Iterable[ta.Tuple[str, str]]) -> str:
6703
6704
  return ' '.join(v for k, v in parts)
@@ -6716,7 +6717,7 @@ class StandardLogFormatter(logging.Formatter):
6716
6717
  ##
6717
6718
 
6718
6719
 
6719
- class StandardConfiguredLogHandler(ProxyLogHandler):
6720
+ class StandardConfiguredLoggingHandler(ProxyLoggingHandler):
6720
6721
  def __init_subclass__(cls, **kwargs):
6721
6722
  raise TypeError('This class serves only as a marker and should not be subclassed.')
6722
6723
 
@@ -6749,7 +6750,7 @@ def configure_standard_logging(
6749
6750
  target: ta.Optional[logging.Logger] = None,
6750
6751
  force: bool = False,
6751
6752
  handler_factory: ta.Optional[ta.Callable[[], logging.Handler]] = None,
6752
- ) -> ta.Optional[StandardConfiguredLogHandler]:
6753
+ ) -> ta.Optional[StandardConfiguredLoggingHandler]:
6753
6754
  with _locking_logging_module_lock():
6754
6755
  if target is None:
6755
6756
  target = logging.root
@@ -6757,7 +6758,7 @@ def configure_standard_logging(
6757
6758
  #
6758
6759
 
6759
6760
  if not force:
6760
- if any(isinstance(h, StandardConfiguredLogHandler) for h in list(target.handlers)):
6761
+ if any(isinstance(h, StandardConfiguredLoggingHandler) for h in list(target.handlers)):
6761
6762
  return None
6762
6763
 
6763
6764
  #
@@ -6771,14 +6772,14 @@ def configure_standard_logging(
6771
6772
 
6772
6773
  formatter: logging.Formatter
6773
6774
  if json:
6774
- formatter = JsonLogFormatter()
6775
+ formatter = JsonLoggingFormatter()
6775
6776
  else:
6776
- formatter = StandardLogFormatter(StandardLogFormatter.build_log_format(STANDARD_LOG_FORMAT_PARTS))
6777
+ formatter = StandardLoggingFormatter(StandardLoggingFormatter.build_log_format(STANDARD_LOG_FORMAT_PARTS))
6777
6778
  handler.setFormatter(formatter)
6778
6779
 
6779
6780
  #
6780
6781
 
6781
- handler.addFilter(TidLogFilter())
6782
+ handler.addFilter(TidLoggingFilter())
6782
6783
 
6783
6784
  #
6784
6785
 
@@ -6791,7 +6792,7 @@ def configure_standard_logging(
6791
6792
 
6792
6793
  #
6793
6794
 
6794
- return StandardConfiguredLogHandler(handler)
6795
+ return StandardConfiguredLoggingHandler(handler)
6795
6796
 
6796
6797
 
6797
6798
  ########################################
@@ -8941,7 +8942,7 @@ class PyprojectPackageGenerator(BasePyprojectPackageGenerator):
8941
8942
  # '*.c',
8942
8943
  # '*.cc',
8943
8944
  # '*.h',
8944
- # '.manifests.json',
8945
+ # '.omlish-manifests.json',
8945
8946
  # 'LICENSE',
8946
8947
  # ],
8947
8948
  # }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev424
3
+ Version: 0.0.0.dev425
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
- Requires-Dist: omlish==0.0.0.dev424
17
+ Requires-Dist: omlish==0.0.0.dev425
18
18
  Provides-Extra: all
19
19
  Requires-Dist: black~=25.1; extra == "all"
20
20
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -1,8 +1,8 @@
1
- omdev/.manifests.json,sha256=ZAZsJbIOCRvMs_KnlVkZov1U0KUzvvprzUP3UtLSpX8,12182
1
+ omdev/.omlish-manifests.json,sha256=diaasURIGOs_kTukNgRFlaZ3Vq7kRGYLvOKAP5hqeMU,11909
2
2
  omdev/__about__.py,sha256=fQNmzSa1MntcPSrzg_Vpo6JRU2RbXik2NqRz0oQCApE,1202
3
3
  omdev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  omdev/cmake.py,sha256=gu49t10_syXh_TUJs4POsxeFs8we8Y3XTOOPgIXmGvg,4608
5
- omdev/imgur.py,sha256=oG4jZH2EAk1my0JzoPNes-4LCtF2_aU08vmKbGzmuxo,3129
5
+ omdev/imgur.py,sha256=oqei705LhSnLWQTOMHMHwRecRXcpSEP90Sg4SVINPQ0,3133
6
6
  omdev/pip.py,sha256=PqzAWDO_CbiZvXzJAZcCkFqWynUDls1jIgBWlrswQyA,2012
7
7
  omdev/tagstrings.py,sha256=cBmAc9-TtOBupvGQ9G4T1jjjtzijx4ihQCBu6FezzV0,5490
8
8
  omdev/amalg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -90,7 +90,7 @@ omdev/ci/docker/cmds.py,sha256=1aSLQqbMJpdAMskxfeGI-he5Amb910RWvo2DE6ZgID8,3067
90
90
  omdev/ci/docker/dataserver.py,sha256=v5q5z0HaGMMSbDhh7xsGePwBfmkn-dL8b2JVotbMVRs,5880
91
91
  omdev/ci/docker/imagepulling.py,sha256=Ut-qE7nmuCxNw5l_LpeJdCcu9f7MCX_KuEFyFkBYMd0,1875
92
92
  omdev/ci/docker/inject.py,sha256=vlWoIJHx2hzCai4wWspIcWnR3WhZ2bsOjq7fqq0qozE,2006
93
- omdev/ci/docker/packing.py,sha256=IayecomyP6AdaiKP1-Ki1wcb2ayfZz2mDqHWbPD8y50,2022
93
+ omdev/ci/docker/packing.py,sha256=ePvHU6rtMh7fq8Ijethuw8eCfjOTi-xhzBQbLSk7M0A,2021
94
94
  omdev/ci/docker/repositories.py,sha256=-uNB93u3pOxsOeib4xovixtbhwGhFWVfxQ00V8Yy89Y,1278
95
95
  omdev/ci/docker/utils.py,sha256=7Tobiq2hMxicGpQfTkDoU7oTa8Tyw47LpDh8C554LLs,1135
96
96
  omdev/ci/docker/cacheserved/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -185,7 +185,7 @@ omdev/magic/styles.py,sha256=6LAL7XR3fkkH2rh-8nwUvdCYVHBkQxCfP0oEuPuw1Bg,670
185
185
  omdev/manifests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
186
186
  omdev/manifests/__main__.py,sha256=JqyVDyV7_jo-NZ3wSs5clDU_xCMlxzJv-XFohoZWQ7E,174
187
187
  omdev/manifests/_dumping.py,sha256=LqrqmiiJp774xW2nxNqt4qWOzN-UhLSMJf_eUss8D0s,52703
188
- omdev/manifests/building.py,sha256=vdUJNcuZtJUNDLjnEOIXsptnGh_oxNEclQGMUM6HGKA,13832
188
+ omdev/manifests/building.py,sha256=LHUUuu5a4_uG9kskQIFsHU-lyMnfToHyW2vS34yu35s,13846
189
189
  omdev/manifests/dumping.py,sha256=WUIZDvOyO25AhnCPn5Nxj2OkMcZa1LRjGuCnpyx8AL8,4506
190
190
  omdev/manifests/main.py,sha256=mYb8iM5bdwaO8jSd9_hIBSoYLf2h7e0iLb9aCCbgJ6c,2175
191
191
  omdev/mypy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -266,16 +266,16 @@ omdev/pyproject/cexts.py,sha256=GLD4fe61M_fHhdMcKlcQNUoCb7MeVXY6Fw-grKH4hTU,4264
266
266
  omdev/pyproject/cli.py,sha256=Umsu2bcJUYeeVXICaZFhKckUBT6VWuYDL4htgCGGQIs,8749
267
267
  omdev/pyproject/configs.py,sha256=baNRwHtUW8S8DKCxuKlMbV3Gduujd1PyNURxQ48Nnxk,2813
268
268
  omdev/pyproject/inject.py,sha256=Von8_8ofkITLoCEwDHNRAwY0AEdFQg7r2ILS8kcTMuY,325
269
- omdev/pyproject/pkg.py,sha256=b3lMCIJY9H-c3B2fbrM9h2njZPxJUYw2eabKlarQVXo,14895
269
+ omdev/pyproject/pkg.py,sha256=DYvq5j-Qsfi9ehUx1Dbvq3RhUsYpTq8ebzW_W9twNbQ,14902
270
270
  omdev/pyproject/reqs.py,sha256=PmML_hxPyt7HL4z4gd9Sr7OlExnRLGOYsf8QpD141c0,2418
271
271
  omdev/pyproject/venvs.py,sha256=_vwhcgMxWUpu1ojNyVw2Zlx1gWwpW_c5EfPMijUqwgU,1918
272
272
  omdev/pyproject/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
273
273
  omdev/pyproject/resources/docker-dev.sh,sha256=DHkz5D18jok_oDolfg2mqrvGRWFoCe9GQo04dR1czcc,838
274
274
  omdev/pyproject/resources/python.sh,sha256=rFaN4SiJ9hdLDXXsDTwugI6zsw6EPkgYMmtacZeTbvw,749
275
275
  omdev/scripts/__init__.py,sha256=MKCvUAEQwsIvwLixwtPlpBqmkMXLCnjjXyAXvVpDwVk,91
276
- omdev/scripts/ci.py,sha256=RcaPmV0_M7OYSPrzJWeSOvlfBY1JeI2XgUKaHw_MsNY,371152
277
- omdev/scripts/interp.py,sha256=31eOLNomhUy9OinV3fLXW2Etc4PYqtW_wVi8vWP5Vec,162513
278
- omdev/scripts/pyproject.py,sha256=7P6rscfhfhtDikZb0AVyPSgKfuNlutn3_Bj3_mO2EOQ,278706
276
+ omdev/scripts/ci.py,sha256=a3m2wAGzXGBH7JpWTHBOnBfoMk6GY7tP4l330jqu_GU,374487
277
+ omdev/scripts/interp.py,sha256=cUzE8sCoY0DmCNBl_mK1VV7TJhJ0JZP04UJM8Jrfn10,162610
278
+ omdev/scripts/pyproject.py,sha256=rPADZxS4rElSZCuujtGNt98N_yoGhauGSdsiLCWLGIQ,278810
279
279
  omdev/scripts/slowcat.py,sha256=PwdT-pg62imEEb6kcOozl9_YUi-4KopvjvzWT1OmGb0,2717
280
280
  omdev/scripts/tmpexec.py,sha256=t0nErDRALjTk7H0X8ADjZUIDFjlPNzOOokmjCjBHdzs,1431
281
281
  omdev/tokens/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -296,11 +296,6 @@ omdev/tools/qr.py,sha256=1p4tMJmImDa4YTQQNPwQPkM8FnhGRYj6J79BJR-MNHo,1742
296
296
  omdev/tools/shadow.py,sha256=4E2ilxa16liIvQxvgU37ITkOMrP6ufShRQfeW7wwtRc,1697
297
297
  omdev/tools/shell.py,sha256=5hF_8DCtB3XrzJSfmQDsr7X3Fi9KRV4M70q9qp0KREA,2341
298
298
  omdev/tools/sqlrepl.py,sha256=TcLJlElzfXqYUkfIOwhJHtXiQjXOg4xBTwSoSRDpNkg,5758
299
- omdev/tools/antlr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
300
- omdev/tools/antlr/__main__.py,sha256=7db8YIfCp4GoU-lW7jJJDiLQ6dDrd25M7gUv1AHGj4w,170
301
- omdev/tools/antlr/cli.py,sha256=QeO5vSUJDL43lAa2EYsLnN-jZBcNOTwB1C9Ua_h7qoA,1228
302
- omdev/tools/antlr/consts.py,sha256=4xH4jyNE5czXRWCn65jFF0MrAodMPe_kYMWpgMxWmpo,289
303
- omdev/tools/antlr/gen.py,sha256=spYfyfX_r_1YT4uZ_bEhtGwANenUtZvSOFck5eiNHhQ,5122
304
299
  omdev/tools/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
305
300
  omdev/tools/git/__main__.py,sha256=gI87SBUgTkKUcUM-RtZWnei-UUDDqzbr5aPztb-gvbE,168
306
301
  omdev/tools/git/cli.py,sha256=I4AiCTz4OCzK6s8J2TJF1eYw9FH2JIK_CsdjQH_9UTE,16757
@@ -324,9 +319,9 @@ omdev/tools/jsonview/resources/jsonview.js,sha256=faDvXDOXKvEvjOuIlz4D3F2ReQXb_b
324
319
  omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
325
320
  omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
326
321
  omdev/tools/pawk/pawk.py,sha256=ao5mdrpiSU4AZ8mBozoEaV3UVlmVTnRG9wD9XP70MZE,11429
327
- omdev-0.0.0.dev424.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
328
- omdev-0.0.0.dev424.dist-info/METADATA,sha256=4op3rDPil6eMw7DVQDINlO4nzTc0URmEiz4UU7113oQ,5100
329
- omdev-0.0.0.dev424.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
330
- omdev-0.0.0.dev424.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
331
- omdev-0.0.0.dev424.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
332
- omdev-0.0.0.dev424.dist-info/RECORD,,
322
+ omdev-0.0.0.dev425.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
323
+ omdev-0.0.0.dev425.dist-info/METADATA,sha256=Dd1v3YB72dri1LHiv9gxpaE4K4id4BRMcA6rj4Hooas,5100
324
+ omdev-0.0.0.dev425.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
325
+ omdev-0.0.0.dev425.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
326
+ omdev-0.0.0.dev425.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
327
+ omdev-0.0.0.dev425.dist-info/RECORD,,
File without changes
@@ -1,11 +0,0 @@
1
- from ...cli import CliModule
2
-
3
-
4
- # @omlish-manifest
5
- _CLI_MODULE = CliModule('antlr', __name__)
6
-
7
-
8
- if __name__ == '__main__':
9
- from .cli import _main # noqa
10
-
11
- _main()
omdev/tools/antlr/cli.py DELETED
@@ -1,62 +0,0 @@
1
- import logging
2
- import re
3
- import subprocess
4
- import sys
5
-
6
- from omlish.argparse import all as ap
7
- from omlish.logs import all as logs
8
-
9
- from .consts import ANTLR_RUNTIME_PACKAGE
10
- from .gen import GenPy
11
- from .gen import get_jar_path
12
-
13
-
14
- log = logging.getLogger(__name__)
15
-
16
-
17
- ##
18
-
19
-
20
- class Cli(ap.Cli):
21
- @ap.cmd()
22
- def jar(self) -> None:
23
- print(get_jar_path())
24
-
25
- @ap.cmd()
26
- def latest(self) -> None:
27
- o, _ = subprocess.Popen(
28
- [
29
- sys.executable,
30
- '-m', 'pip',
31
- 'index', 'versions',
32
- ANTLR_RUNTIME_PACKAGE,
33
- ],
34
- stdout=subprocess.PIPE,
35
- ).communicate()
36
- tl = o.decode().splitlines()[0]
37
- m = re.fullmatch(rf'{ANTLR_RUNTIME_PACKAGE} \((?P<version>[^)]+)\)', tl)
38
- if m is None:
39
- raise ValueError(f'Failed to parse version: {tl}')
40
- v = m.groupdict()['version']
41
- print(v)
42
-
43
- #
44
-
45
- @ap.cmd(
46
- ap.arg('roots', nargs='+'),
47
- )
48
- def gen(self) -> None:
49
- gp = GenPy(
50
- self.args.roots,
51
- )
52
- gp.run()
53
-
54
-
55
- def _main() -> None:
56
- logs.configure_standard_logging(logging.INFO)
57
- cli = Cli()
58
- cli()
59
-
60
-
61
- if __name__ == '__main__':
62
- _main()
@@ -1,7 +0,0 @@
1
- ANTLR_VERSION = '4.13.2'
2
- ANTLR_JAR_NAME = f'antlr-{ANTLR_VERSION}-complete.jar'
3
- ANTLR_JAR_URL = f'https://www.antlr.org/download/{ANTLR_JAR_NAME}'
4
- ANTLR_RUNTIME_PACKAGE = 'antlr4-python3-runtime'
5
- ANTLR_GITHUB_REPO = 'antlr/antlr4'
6
-
7
- ANTLR_RUNTIME_VENDOR = 'omlish.text.antlr._runtime._all'
omdev/tools/antlr/gen.py DELETED
@@ -1,188 +0,0 @@
1
- """
2
- TODO:
3
- - mtime cmp
4
- - parallelism
5
- """
6
- import logging
7
- import os.path
8
- import re
9
- import shutil
10
- import subprocess
11
- import typing as ta
12
-
13
- from omlish import check
14
- from omlish import lang
15
- from omlish.os.paths import is_path_in_dir
16
-
17
- from ...cache import data as dcache
18
- from .consts import ANTLR_JAR_URL
19
- from .consts import ANTLR_RUNTIME_VENDOR
20
-
21
-
22
- log = logging.getLogger(__name__)
23
-
24
-
25
- ##
26
-
27
-
28
- ANTLR_JAR_CACHE = dcache.UrlSpec(ANTLR_JAR_URL)
29
-
30
-
31
- @lang.cached_function
32
- def get_jar_path() -> str:
33
- return dcache.default().get(ANTLR_JAR_CACHE)
34
-
35
-
36
- ##
37
-
38
-
39
- def _find_dirs(*base_paths: str, filter: ta.Callable[[str], bool] = lambda _: True) -> ta.Sequence[str]: # noqa
40
- return sorted(
41
- os.path.join(dp, dn)
42
- for base_path in base_paths
43
- for dp, dns, fns in os.walk(base_path)
44
- for dn in dns
45
- if filter(dn)
46
- )
47
-
48
-
49
- def _find_files(*base_paths: str, filter: ta.Callable[[str], bool] = lambda _: True) -> ta.Sequence[str]: # noqa
50
- return sorted(
51
- os.path.join(dp, fn)
52
- for base_path in base_paths
53
- for dp, dns, fns in os.walk(base_path)
54
- for fn in fns
55
- if filter(fn)
56
- )
57
-
58
-
59
- class GenPy:
60
- def __init__(
61
- self,
62
- root_dirs: str, # noqa
63
- *,
64
- out_subdir: str = '_antlr',
65
- runtime_import: str = ANTLR_RUNTIME_VENDOR,
66
- jar_path: str | None = None,
67
- # parallelism: int | None = None,
68
- ) -> None:
69
- super().__init__()
70
-
71
- check.non_empty_str(out_subdir)
72
- check.arg(not os.path.isabs(out_subdir) and '.' not in out_subdir and '/' not in out_subdir)
73
-
74
- self._root_dirs = frozenset(check.non_empty_str(rd) for rd in check.not_isinstance(root_dirs, str))
75
- self._out_subdir = out_subdir
76
- self._runtime_import = runtime_import
77
- self._given_jar_path = jar_path
78
-
79
- #
80
-
81
- def _rmtree(self, tgt: str) -> None: # noqa
82
- if not any(is_path_in_dir(rd, tgt) for rd in self._root_dirs):
83
- raise RuntimeError(f'Refusing to delete {tgt!r} outside of {self._root_dirs!r}')
84
- shutil.rmtree(tgt)
85
-
86
- #
87
-
88
- @lang.cached_function
89
- def jar_path(self) -> str:
90
- if (gjp := self._given_jar_path) is not None:
91
- return gjp
92
- return get_jar_path()
93
-
94
- #
95
-
96
- def process_g4(self, g4_file: str) -> None:
97
- ap = os.path.abspath(g4_file)
98
- check.state(os.path.isfile(ap))
99
-
100
- od = os.path.join(os.path.dirname(ap), self._out_subdir)
101
- os.makedirs(od, exist_ok=True)
102
-
103
- log.info('Compiling grammar %s', g4_file)
104
-
105
- try:
106
- subprocess.check_call([
107
- 'java',
108
- '-jar', self.jar_path(),
109
- '-Dlanguage=Python3',
110
- '-visitor',
111
- '-o', self._out_subdir,
112
- os.path.basename(g4_file),
113
- ], cwd=os.path.dirname(ap))
114
-
115
- except Exception: # noqa
116
- log.exception('Exception in grammar %s', g4_file)
117
- raise
118
-
119
- def process_py(self, py_file: str) -> None:
120
- ap = os.path.abspath(py_file)
121
- with open(ap) as f:
122
- in_lines = list(f)
123
-
124
- pfp = py_file.split(os.sep)
125
- arp = ANTLR_RUNTIME_VENDOR.split('.')
126
- if (cpl := lang.common_prefix_len(pfp, arp)) > 0:
127
- pkg_depth = len(os.path.normpath(py_file).split(os.path.sep))
128
- antlr_imp = '.'.join([*([''] * (pkg_depth - cpl)), *arp[cpl:]])
129
- else:
130
- antlr_imp = ANTLR_RUNTIME_VENDOR
131
-
132
- out_lines = [
133
- '# type: ignore\n',
134
- '# ruff: noqa\n',
135
- '# flake8: noqa\n',
136
- '# @omlish-generated\n',
137
- ]
138
-
139
- for l in in_lines:
140
- l = re.sub(r'^(from antlr4)(.*)', rf'from {antlr_imp}\2', l)
141
- out_lines.append(l)
142
-
143
- with open(ap, 'w') as f:
144
- f.write(''.join(out_lines))
145
-
146
- def process_dir(self, dir: str) -> None: # noqa
147
- log.info('Processing directory %s', dir)
148
-
149
- ad = os.path.join(dir, self._out_subdir)
150
- if os.path.exists(ad):
151
- self._rmtree(ad)
152
-
153
- for f in os.listdir(dir):
154
- fp = os.path.join(dir, f)
155
- if not os.path.isfile(fp) or not f.endswith('.g4'):
156
- continue
157
-
158
- self.process_g4(fp)
159
-
160
- if not os.path.exists(ad):
161
- return
162
-
163
- ip = os.path.join(ad, '__init__.py')
164
- check.state(not os.path.exists(ip))
165
-
166
- for f in list(os.listdir(ad)):
167
- fp = os.path.join(ad, f)
168
- if not os.path.isfile(fp):
169
- continue
170
-
171
- if f.split('.')[-1] in ('interp', 'tokens'):
172
- os.unlink(fp)
173
-
174
- elif f != '__init__.py' and f.endswith('.py'):
175
- self.process_py(fp)
176
-
177
- with open(ip, 'w'):
178
- pass
179
-
180
- def run(self) -> None:
181
- dns = _find_dirs(*self._root_dirs, filter=lambda dn: os.path.basename(dn) == '_antlr')
182
- for dn in dns:
183
- self._rmtree(dn)
184
-
185
- fns = _find_files(*self._root_dirs, filter=lambda fn: fn.endswith('.g4'))
186
- fds = {os.path.dirname(fn) for fn in fns}
187
- for dn in sorted(fds):
188
- self.process_dir(dn)