omlish 0.0.0.dev346__py3-none-any.whl → 0.0.0.dev348__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.
omlish/__about__.py CHANGED
@@ -1,5 +1,5 @@
1
- __version__ = '0.0.0.dev346'
2
- __revision__ = '22379be8a53062cec833d7d5e73c8d5580cf26e4'
1
+ __version__ = '0.0.0.dev348'
2
+ __revision__ = '9221487d58c929807a19dfe3fbba6bf334f1a942'
3
3
 
4
4
 
5
5
  #
@@ -56,10 +56,26 @@ def _convert_to_string(s: str | bytes) -> str:
56
56
  return s
57
57
 
58
58
 
59
+ def _handle_encode_quote_args(
60
+ q: str | None,
61
+ lq: str | None,
62
+ rq: str | None,
63
+ ) -> tuple[str, str]:
64
+ if q is None:
65
+ q = '"'
66
+ if lq is None:
67
+ lq = q
68
+ if rq is None:
69
+ rq = q
70
+ return (lq, rq)
71
+
72
+
59
73
  def encode_string(
60
74
  s: str | bytes,
61
- q: str = '"',
75
+ q: str | None = None,
62
76
  *,
77
+ lq: str | None = None,
78
+ rq: str | None = None,
63
79
  escape_map: ta.Mapping[str, str] | None = None,
64
80
  ) -> str:
65
81
  """Return a JSON representation of a Python string."""
@@ -72,13 +88,21 @@ def encode_string(
72
88
  def replace(m):
73
89
  return escape_map[m.group(0)]
74
90
 
75
- return q + _ESCAPE_PAT.sub(replace, s) + q
91
+ lq, rq = _handle_encode_quote_args(q, lq, rq)
92
+
93
+ return ''.join([
94
+ lq,
95
+ _ESCAPE_PAT.sub(replace, s),
96
+ rq,
97
+ ])
76
98
 
77
99
 
78
100
  def encode_string_ascii(
79
101
  s: str | bytes,
80
- q: str = '"',
102
+ q: str | None = None,
81
103
  *,
104
+ lq: str | None = None,
105
+ rq: str | None = None,
82
106
  escape_map: ta.Mapping[str, str] | None = None,
83
107
  ) -> str:
84
108
  """Return an ASCII-only JSON representation of a Python string."""
@@ -105,7 +129,13 @@ def encode_string_ascii(
105
129
  s2 = 0xDC00 | (n & 0x3FF)
106
130
  return f'\\u{s1:04x}\\u{s2:04x}'
107
131
 
108
- return q + str(_ESCAPE_ASCII_PAT.sub(replace, s)) + q
132
+ lq, rq = _handle_encode_quote_args(q, lq, rq)
133
+
134
+ return ''.join([
135
+ lq,
136
+ str(_ESCAPE_ASCII_PAT.sub(replace, s)),
137
+ rq,
138
+ ])
109
139
 
110
140
 
111
141
  ##
@@ -77,7 +77,7 @@ class AbstractJsonRenderer(lang.Abstract, ta.Generic[I]):
77
77
  self._indent_cache[self._level] = ret
78
78
  return ret
79
79
 
80
- def _format_scalar(self, o: Scalar) -> str:
80
+ def _format_scalar(self, o: Scalar, state: State | None = None) -> str:
81
81
  if o is None or isinstance(o, bool):
82
82
  return self._literals[o]
83
83
 
@@ -129,7 +129,13 @@ class JsonRenderer(AbstractJsonRenderer[ta.Any]):
129
129
  post = None
130
130
 
131
131
  if isinstance(o, SCALAR_TYPES):
132
- self._write(self._format_scalar(o)) # type: ignore
132
+ # FIXME: `less` workaround, doesn't carry color code across newlines
133
+ # f = self._format_scalar(o, state)
134
+ # if isinstance(o, str) and '\n' in f and self._style is not None and pre:
135
+ # f = f'\n{pre}'.join(f.split('\n'))
136
+ # self._write(f)
137
+
138
+ self._write(self._format_scalar(o, state)) # type: ignore[arg-type]
133
139
 
134
140
  elif isinstance(o, ta.Mapping):
135
141
  self._write('{')
@@ -29,16 +29,21 @@ class Json5Renderer(JsonRenderer):
29
29
 
30
30
  self._multiline_strings = multiline_strings
31
31
 
32
- def _format_scalar(self, o: Scalar) -> str:
32
+ def _format_scalar(self, o: Scalar, state: JsonRenderer.State | None = None) -> str:
33
33
  if (
34
34
  self._multiline_strings and
35
35
  isinstance(o, str) and
36
36
  '\n' in o
37
37
  ):
38
+ kw: dict = dict(
39
+ escape_map=MULTILINE_STRINGS_ESCAPE_MAP,
40
+ lq='"\\\n',
41
+ )
42
+
38
43
  if self._ensure_ascii:
39
- return encode_string_ascii(o, escape_map=MULTILINE_STRINGS_ESCAPE_MAP)
44
+ return encode_string_ascii(o, **kw)
40
45
  else:
41
- return encode_string(o, escape_map=MULTILINE_STRINGS_ESCAPE_MAP)
46
+ return encode_string(o, **kw)
42
47
 
43
48
  else:
44
49
  return super()._format_scalar(o)
@@ -1,3 +1,7 @@
1
+ """
2
+ TODO:
3
+ - cext?
4
+ """
1
5
  import numbers
2
6
  import operator
3
7
  import typing as ta
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omlish
3
- Version: 0.0.0.dev346
3
+ Version: 0.0.0.dev348
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=orgsRvtpHu8tdhaCvlP9v3P495OJopYYiHKjK68WtWg,8587
2
- omlish/__about__.py,sha256=v1uCf71x36T3T0yERINIvFHOFBExfNLZcZ3_CSeZdKc,3478
2
+ omlish/__about__.py,sha256=VPo5EP7eKAN0kzg-6HJR4oMaz9fJ8yfitXPyfJ9iFDU,3478
3
3
  omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
4
4
  omlish/c3.py,sha256=rer-TPOFDU6fYq_AWio_AmA-ckZ8JDY5shIzQ_yXfzA,8414
5
5
  omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
@@ -265,8 +265,8 @@ omlish/formats/json/__init__.py,sha256=i41uhoyXjuLjj5JmdRj4Ud2sfKD0j6KAyk_XyyCIB
265
265
  omlish/formats/json/codecs.py,sha256=wvPHZw8cDHaOV6u7e9rfpCH3JVF_IjA6ND_fQUhcCXU,844
266
266
  omlish/formats/json/consts.py,sha256=A0cTAGGLyjo-gcYIQrL4JIaardI0yPMhQoNmh42BaRg,387
267
267
  omlish/formats/json/encoding.py,sha256=iwoYyJePibgvRDZ6e9b2OlXmOBJEczquRNoiffVf3hE,502
268
- omlish/formats/json/literals.py,sha256=MMou9UIoztL9EyX2Zhv3Kzfq8eaKMfGNCFhL16n-fTk,7532
269
- omlish/formats/json/rendering.py,sha256=0S_ppr5ihkUW7PP0mipZXHr72otqwUCNfanwopcboag,4571
268
+ omlish/formats/json/literals.py,sha256=sJb4c1FhM9Ms0c0suByMA5i7WXI-pSLsmnPVaQd-qCw,8106
269
+ omlish/formats/json/rendering.py,sha256=5p8kG1t3aGm2GXsb82h1S90Mmz4lzbX8sX9_qh7fH1U,4915
270
270
  omlish/formats/json/types.py,sha256=ueO9-uOU2eVWowJf0LH1fHFLjZ6fTIZyq9qybcLQaiQ,147
271
271
  omlish/formats/json/backends/__init__.py,sha256=K5nAP-fCgUvaSylHqgRvmJp6j6PTWdMjrNhvMouKrFc,161
272
272
  omlish/formats/json/backends/base.py,sha256=WqtyoM82pyM0NyqpPwndrebr1bUVU1QlpmVQNrcAO8c,1114
@@ -288,7 +288,7 @@ omlish/formats/json5/codec.py,sha256=ldnxCRo0JP1fkGLt0mMxJlLvNxqIF_1KUCcSp1HtI-M
288
288
  omlish/formats/json5/errors.py,sha256=AHkR9ySjAoQdUrizpqgL8fg0M5oe5mHZkml3KZHEvC4,38
289
289
  omlish/formats/json5/literals.py,sha256=rj4-9KFXfgdq5oK_eUkp57cgoMQ8T0gRaG9ga430he4,2429
290
290
  omlish/formats/json5/parsing.py,sha256=CWJHfe_FXCQuyDk00a7PI5wOdROq7Tc3fbWrNuwaKCw,2346
291
- omlish/formats/json5/rendering.py,sha256=Kf-yA4AB3BqyjellBOFTGrMxxpIUsmgHIFzVRSJkQnE,1112
291
+ omlish/formats/json5/rendering.py,sha256=tHo-Zrb5obxNFgz4PAg-L1IU4El_4Pu8F-eoPj5XARY,1212
292
292
  omlish/formats/json5/_antlr/Json5Lexer.py,sha256=LnURBD0tL35VHNpxqM4DOPrTkE_9oONHtbftRM26tak,23239
293
293
  omlish/formats/json5/_antlr/Json5Listener.py,sha256=37Jhzu7tQEw6gLIxtcZtV5Yjn08kS-GkxF7d0KjXyo8,2097
294
294
  omlish/formats/json5/_antlr/Json5Parser.py,sha256=YU9bP89nq97A8ZCrjIcbgoBg4z76-N-6IMFGQe_ws54,19679
@@ -625,7 +625,7 @@ omlish/specs/jmespath/functions.py,sha256=YnuwlgkcbUJWlqOvSpN3LGXZpF0fpImKa--FLk
625
625
  omlish/specs/jmespath/lexer.py,sha256=WGxkwQe_dcHWcJcGg9q6K-8_Q0oRdWkw09dYGFNTHbk,12639
626
626
  omlish/specs/jmespath/parser.py,sha256=yfkydotVR4LBhrUTsptL_kLYDoGZrRN9zSEs_76kvZM,24441
627
627
  omlish/specs/jmespath/scope.py,sha256=UyDsl9rv_c8DCjJBuVIA2ESu1jrgYvuwEKiaJDQKnT0,1590
628
- omlish/specs/jmespath/visitor.py,sha256=HVro_6aBGL0CMBy8NRy6vJzWgwsHGB1qJXldX8H7wSg,16592
628
+ omlish/specs/jmespath/visitor.py,sha256=J1vI5WMt8v0TxCXz1EfeU_Po-t-RxaqeoSoOeL99TxE,16615
629
629
  omlish/specs/jsonrpc/__init__.py,sha256=ugIdqHXWZjSy1R1SkwoxstO2GCHEF4W95Ogl3_5_DV4,544
630
630
  omlish/specs/jsonrpc/conns.py,sha256=zvWnBHuSoGnvbGVk72Usp4IFsLscrzPozqR2hmFjnDI,7029
631
631
  omlish/specs/jsonrpc/errors.py,sha256=-Zgmlo6bV6J8w5f8h9axQgLquIFBHDgIwcpufEH5NsE,707
@@ -864,9 +864,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
864
864
  omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
865
865
  omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
866
866
  omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
867
- omlish-0.0.0.dev346.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
868
- omlish-0.0.0.dev346.dist-info/METADATA,sha256=tGdSN_DIuDhQAq4ducgWC8yO4_ys4aFIlMZhJESAQFA,4416
869
- omlish-0.0.0.dev346.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
870
- omlish-0.0.0.dev346.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
871
- omlish-0.0.0.dev346.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
872
- omlish-0.0.0.dev346.dist-info/RECORD,,
867
+ omlish-0.0.0.dev348.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
868
+ omlish-0.0.0.dev348.dist-info/METADATA,sha256=keSC0b7sKQuzPGKZZOOvIvBbQGN0650E6LUOdMyB4GY,4416
869
+ omlish-0.0.0.dev348.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
870
+ omlish-0.0.0.dev348.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
871
+ omlish-0.0.0.dev348.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
872
+ omlish-0.0.0.dev348.dist-info/RECORD,,