omlish 0.0.0.dev295__py3-none-any.whl → 0.0.0.dev296__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/text/indent.py CHANGED
@@ -11,7 +11,7 @@ from ..lite.check import check
11
11
 
12
12
 
13
13
  class IndentWriter:
14
- DEFAULT_INDENT = ' ' * 4
14
+ DEFAULT_INDENT: ta.ClassVar[str] = ' ' * 4
15
15
 
16
16
  def __init__(
17
17
  self,
@@ -24,6 +24,7 @@ class IndentWriter:
24
24
  self._buf = buf if buf is not None else io.StringIO()
25
25
  self._indent = check.isinstance(indent, str) if indent is not None else self.DEFAULT_INDENT
26
26
  self._level = 0
27
+ self._cache: ta.Dict[int, str] = {}
27
28
  self._has_indented = False
28
29
 
29
30
  @contextlib.contextmanager
@@ -35,7 +36,10 @@ class IndentWriter:
35
36
  self._level -= num
36
37
 
37
38
  def write(self, s: str) -> None:
38
- indent = self._indent * self._level
39
+ try:
40
+ indent = self._cache[self._level]
41
+ except KeyError:
42
+ indent = self._cache[self._level] = self._indent * self._level
39
43
  i = 0
40
44
  while i < len(s):
41
45
  if not self._has_indented:
@@ -1,7 +1,3 @@
1
- """
2
- TODO:
3
- - dc.Box, or some other kind of meta
4
- """
5
1
  import typing as ta
6
2
 
7
3
  from .. import dataclasses as dc
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omlish
3
- Version: 0.0.0.dev295
3
+ Version: 0.0.0.dev296
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -42,6 +42,7 @@ Requires-Dist: asyncpg~=0.30; extra == "all"
42
42
  Requires-Dist: apsw~=3.49; extra == "all"
43
43
  Requires-Dist: sqlean.py~=3.47; extra == "all"
44
44
  Requires-Dist: duckdb~=1.2; extra == "all"
45
+ Requires-Dist: markupsafe~=3.0; extra == "all"
45
46
  Requires-Dist: jinja2~=3.1; extra == "all"
46
47
  Requires-Dist: pytest~=8.3; extra == "all"
47
48
  Requires-Dist: anyio~=4.9; extra == "all"
@@ -90,6 +91,7 @@ Requires-Dist: apsw~=3.49; extra == "sqldrivers"
90
91
  Requires-Dist: sqlean.py~=3.47; extra == "sqldrivers"
91
92
  Requires-Dist: duckdb~=1.2; extra == "sqldrivers"
92
93
  Provides-Extra: templates
94
+ Requires-Dist: markupsafe~=3.0; extra == "templates"
93
95
  Requires-Dist: jinja2~=3.1; extra == "templates"
94
96
  Provides-Extra: testing
95
97
  Requires-Dist: pytest~=8.3; extra == "testing"
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=pjGUyLHaoWpPqRP3jz2u1fC1qoRc2lvrEcpU_Ax2tdg,8253
2
- omlish/__about__.py,sha256=wD22RGksGSW1PDUEALPAENAGSmlrc4y1ZYZC7fiH8w8,3444
2
+ omlish/__about__.py,sha256=jTgxySKrGVTPE4uqRZMqrQi6EEy4LVIalO39VBQclwQ,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
@@ -144,7 +144,7 @@ omlish/codecs/funcs.py,sha256=p4imNt7TobyZVXWC-WhntHVu9KfJrO4QwdtPRh-cVOk,850
144
144
  omlish/codecs/registry.py,sha256=2FnO5YP7ui1LzkguwESY0MP3WIdwgPTIJTM_4RyTOEg,3896
145
145
  omlish/codecs/standard.py,sha256=eiZ4u9ep0XrA4Z_D1zJI0vmWyuN8HLrX4Se_r_Cq_ZM,60
146
146
  omlish/codecs/text.py,sha256=JzrdwMpQPo2NBBg3K1EZszzQy5vEWmd82SIerJd4yeQ,5723
147
- omlish/collections/__init__.py,sha256=siU1M4MpCWECesuYyqjIWZuMaOyJT5-LyhvALhTwdIo,2234
147
+ omlish/collections/__init__.py,sha256=YHnllmObi8oL_q3h6SMjim7VaNaABmCGUSIiOh2cF2c,2333
148
148
  omlish/collections/abc.py,sha256=ikTJlJ5dhXjU6tlNsI0Wm0_7GaIEpe3mftpvdGY_nc8,2620
149
149
  omlish/collections/coerce.py,sha256=tAls15v_7p5bUN33R7Zbko87KW5toWHl9fRialCqyNY,7030
150
150
  omlish/collections/errors.py,sha256=shcS-NCnEUudF8qC_SmO2TQyjivKlS4TDjaz_faqQ0c,44
@@ -168,12 +168,12 @@ omlish/collections/kv/mappings.py,sha256=Y67h6mY4MpBfOUXZCyW_Gi7xuiAzTq7KzB4qIld
168
168
  omlish/collections/kv/transformed.py,sha256=2ge9RTqTCA6ftWn4twgFjHokg4zNzHnKCh9cclblHE0,3046
169
169
  omlish/collections/kv/wrappers.py,sha256=nUtoiArK1Fu2TgxFrqZU69bEoAxKJ_nA7qMeeihIz3U,1985
170
170
  omlish/collections/persistent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
- omlish/collections/persistent/persistent.py,sha256=6CuzeZjZMqBLflU-CuWu32SrtZXFrJOV-H_UUuYoTkg,880
171
+ omlish/collections/persistent/persistent.py,sha256=boBSZ9yEhVfnxxxv1LrCBzWYfHCa_roPvZpSdNsGA4E,1365
172
172
  omlish/collections/persistent/treap.py,sha256=o7vhnn8kHde_Plk0sojlJZkkKwp8hpj2IekhcvbYqHs,7739
173
- omlish/collections/persistent/treapmap.py,sha256=lLxjHeR5pFFperrlw3tKIpe20xtszETG3_26EMAwhB4,5793
173
+ omlish/collections/persistent/treapmap.py,sha256=BdqZC6WvwJ0iF0rMgdoRie6PxqrApE2PKQ3j-hFLOR4,6311
174
174
  omlish/collections/sorted/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
175
- omlish/collections/sorted/skiplist.py,sha256=4BqAAxOAb0VM33bny-rdrFM9d2jVbyxsN7yHz3jrqG4,6035
176
- omlish/collections/sorted/sorted.py,sha256=IWQm5uyxuskCoX1fCtlBcYlGKdyxQQNMwnTj__eoZS8,3356
175
+ omlish/collections/sorted/skiplist.py,sha256=ezXBHGDD0C8jBbo-F83-xAMu8jhbTD2g1-kTRx7CaXc,6193
176
+ omlish/collections/sorted/sorted.py,sha256=Y_-7bA8hXG1KXEx5sS_EoLiH-Ru6ERJEsjHIcJ-8-IA,3968
177
177
  omlish/concurrent/__init__.py,sha256=9p-s8MvBEYDqHIoYU3OYoe-Nni22QdkW7nhZGEukJTM,197
178
178
  omlish/concurrent/executors.py,sha256=mF-rjJWzNFxwB1-_H7rHuwoImpl4FtNM6W3wcqM3NEE,1291
179
179
  omlish/concurrent/futures.py,sha256=870tx8ELI8THvMnTrQoYIlEFKO9hM4KUrlehckJqKBU,4238
@@ -249,7 +249,7 @@ omlish/dataclasses/generation/mangling.py,sha256=AUtTMjAAuQ_kUfE-CypnpRsiM10EAkM
249
249
  omlish/dataclasses/generation/manifests.py,sha256=tRLO59eysC13z_lbPxaErPy-xM3BIBRpj8MhmbYoGnE,309
250
250
  omlish/dataclasses/generation/ops.py,sha256=dWse_SsoXtpDqXzDPJOqBeb9G5F7RrEChfGl4iTL0QE,1718
251
251
  omlish/dataclasses/generation/plans.py,sha256=c3TRwa20quN-DrM-eI2KoTG4XVyL3n12RcwZoJxEgB0,536
252
- omlish/dataclasses/generation/processor.py,sha256=_rt_GHdx_pi5seRMzIu6DvLEx4MYGsG8CKykxqDiu1s,4689
252
+ omlish/dataclasses/generation/processor.py,sha256=vdsy8AgJrNAAXbcKFLPilfoYFLUUbRlwZEn2rDTsFPU,4796
253
253
  omlish/dataclasses/generation/registry.py,sha256=_Cfvs9QY6f8Pvf9cKUi-OTI-qaDem3z5jcWkSDNk3kQ,1006
254
254
  omlish/dataclasses/generation/utils.py,sha256=u6DWRvzxgqrxqyfAGzNOyDvnOJYdMTYyZ7l1oOOiXrI,2089
255
255
  omlish/dataclasses/metaclass/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -258,8 +258,8 @@ omlish/dataclasses/metaclass/confer.py,sha256=dErYZbTXBKgvGAi2eu3FocxTvd9lNSqv03
258
258
  omlish/dataclasses/metaclass/meta.py,sha256=0MQG7Sl1y8QccGRgLOC0VoLDTMBG6VoyT-wZdthO1zI,2639
259
259
  omlish/dataclasses/metaclass/specs.py,sha256=djzkHK95h06Cgrx8rr3SGkv2gOvL-fPOhWOBWbbN8h4,789
260
260
  omlish/dataclasses/processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
261
- omlish/dataclasses/processing/base.py,sha256=wkPDfeojZ2mg72yifMW7VNpJBEgEbaC3Qr_bd8_aV5E,1827
262
- omlish/dataclasses/processing/driving.py,sha256=AwT4kvh_GdSDfYVLBjBdkVmbO7U5LK95A_K3qTK01MY,1031
261
+ omlish/dataclasses/processing/base.py,sha256=v_XC7XlU5BHOhEJJoNirrI-wbQBOHvrhDCgo3CdnNyk,1997
262
+ omlish/dataclasses/processing/driving.py,sha256=k_0R0wxRaAKHp82snYeM5JGPWuTjYkVYpvTNdhv-QCA,1056
263
263
  omlish/dataclasses/processing/priority.py,sha256=57jdwUZ29Z9ZtKWIzyar4raNLHNrWd0c29ZLv2hcfjo,260
264
264
  omlish/dataclasses/processing/registry.py,sha256=iNDHwW1gsq8gTMi4XvNBBzab0OYdSKvDLQw9gCBt2FI,1884
265
265
  omlish/dataclasses/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -304,6 +304,10 @@ omlish/docker/manifests.py,sha256=LR4FpOGNUT3bZQ-gTjB6r_-1C3YiG30QvevZjrsVUQM,70
304
304
  omlish/docker/ns1.py,sha256=75L_9zjXK5qZbvi20Kd0cus-bm3n4oKFYcmEtk1c5-o,2470
305
305
  omlish/docker/ports.py,sha256=ov4Lq5JweAThD3qwnjaJbONcHAkRhEx96-NU7ftMcK0,2083
306
306
  omlish/docker/timebomb.py,sha256=EnFt8pJeXkowF_F5NXnN0ogDmxUmVymV4h1CYPwyJr4,356
307
+ omlish/dom/__init__.py,sha256=RYkv9inuebWIKsRuPXr3j0njgLFKzIo-ujKc4JEp0wc,301
308
+ omlish/dom/building.py,sha256=VPMbGxv730dYjS_jlrrp0qiZhuGT8OheFamUAgtQdF4,1022
309
+ omlish/dom/content.py,sha256=1NkE1eb0ITfps-yJ-Lbtm6kGnvUmQy6HWo01gnvSkiU,2775
310
+ omlish/dom/rendering.py,sha256=5cQK3A_uifh3Th5v3c0nx-tW8d1KyGL6C9tASPaNVNI,4336
307
311
  omlish/formats/__init__.py,sha256=T0AG1gFnqQ5JiHN0UPQjQ-7g5tnxMIG-mgOvMYExYAM,21
308
312
  omlish/formats/cbor.py,sha256=o_Hbe4kthO9CeXK-FySrw0dHVlrdyTo2Y8PpGRDfZ3c,514
309
313
  omlish/formats/cloudpickle.py,sha256=16si4yUp_pAdDWGECAWf6HLA2PwSANGGgDoMLGZUem8,579
@@ -582,10 +586,13 @@ omlish/marshal/trivial/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
582
586
  omlish/marshal/trivial/any.py,sha256=YjbHgUtwktXuFfkPCSQIxdwC6tA70CPA3-msAE4slKs,791
583
587
  omlish/marshal/trivial/forbidden.py,sha256=w-U_tZB7X0IuFpV4j1DxCQmOL02InmZSICROtq-w3-s,1033
584
588
  omlish/marshal/trivial/nop.py,sha256=EoxaCbfkLbDfSGdE_xJbH1ghIeYwaptmqq3OGHKgmAg,471
585
- omlish/math/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
586
- omlish/math/bits.py,sha256=LC3dTgrvodNbfxy9dvlya61eQuDEy0azzQLCvEbFHj4,3476
587
- omlish/math/floats.py,sha256=UimhOT7KRl8LXTzOI5cQWoX_9h6WNWe_3vcOuO7-h_8,327
588
- omlish/math/stats.py,sha256=iQh-g6M_ig0mJJ4Frs4njxDmpw515HjGSpQSiggJH4U,10042
589
+ omlish/math/__init__.py,sha256=sejGr6RkG6WaowGKSfICtHKqgb_BgqEaGCnj9mWaZiY,1185
590
+ omlish/math/bits.py,sha256=pcTuWxNXXfG-CtTITNNbW3YConAkCeU8PLNcglCc43E,533
591
+ omlish/math/c.py,sha256=JUHHZfVUUE4sb-6_LxJksbcLOLi9za0LdPs4dky5Ba8,308
592
+ omlish/math/fixed.py,sha256=Ql9JP1MPr8ny--xz7rSDf_Wlcri6jHhyjH0-UyLcXUA,7211
593
+ omlish/math/floats.py,sha256=xbuGQccA3wC0DoTDqR4awgrzfwoOEYQLdQmFgw7c6-w,332
594
+ omlish/math/histogram.py,sha256=gDYJG9Cq2sZEjae0cFOb-ADzwNY_xKSnF73Tyd34EPQ,3859
595
+ omlish/math/stats.py,sha256=HxWJhZD5vdPcCAZ2HO9jYz798EPl2JtyEbXLoJdlRjE,6225
589
596
  omlish/multiprocessing/__init__.py,sha256=jwlWGOaSGcX8DkzyZwJ49nfkHocWWeKgKb7kMpgcj_Y,485
590
597
  omlish/multiprocessing/proxies.py,sha256=bInhGds2rv6xT9q3qRMlZuSXFAjwfspkiohXZ36aUpY,484
591
598
  omlish/multiprocessing/spawn.py,sha256=sTvPLIJGYnjjI6ASqhFzHF-97tCnaOXX7u7s-33SUMw,1875
@@ -713,7 +720,7 @@ omlish/specs/proto/_antlr/Protobuf3Listener.py,sha256=hjzAJjcj4xWRim-68v-6QwIsPV
713
720
  omlish/specs/proto/_antlr/Protobuf3Parser.py,sha256=VmkUyJx3WxIgAecOa1BGwbO9fVNysZt5-arQ-wDubpk,132411
714
721
  omlish/specs/proto/_antlr/Protobuf3Visitor.py,sha256=zEVBXly2k9Cqmgdb45QwpLR-fZCEq8hpp2WQj-s7Wps,8782
715
722
  omlish/specs/proto/_antlr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
716
- omlish/sql/__init__.py,sha256=TpZLsEJKJzvJ0eMzuV8hwOJJbkxBCV1RZPUMLAVB6io,173
723
+ omlish/sql/__init__.py,sha256=AFcSRUcz9sYMqlOsv8oZWai3Oi1PLygJbZ2YSzWUvhc,459
717
724
  omlish/sql/abc.py,sha256=3hrCjB4jnPVMef_YXClCblzYUZ9l9yaxJJdd5_Nu9GM,4043
718
725
  omlish/sql/dbapi.py,sha256=DfMxCyltpMj6hUiLti1omUvJyMGbrkGxcz2ywolOpPA,2979
719
726
  omlish/sql/dbs.py,sha256=65e388987upJpsFX8bNL7uhiYv2sCsmk9Y04V0MXdsI,1873
@@ -726,7 +733,7 @@ omlish/sql/alchemy/duckdb.py,sha256=kr7pIhiBLNAuZrcigHDtFg9zHkVcrRW3LfryO9VJ4mk,
726
733
  omlish/sql/alchemy/exprs.py,sha256=gO4Fj4xEY-PuDgV-N8hBMy55glZz7O-4H7v1LWabfZY,323
727
734
  omlish/sql/alchemy/secrets.py,sha256=WEeaec1ejQcE3Yaa7p5BSP9AMGEzy1lwr7QMSRL0VBw,180
728
735
  omlish/sql/alchemy/sqlean.py,sha256=RbkuOuFIfM4fowwKk8-sQ6Dxk-tTUwxS94nY5Kxt52s,403
729
- omlish/sql/api/__init__.py,sha256=IdyBdYdYiAUxpxmSe1yW5kuc9uiJWnMS9NwTy2CNly0,477
736
+ omlish/sql/api/__init__.py,sha256=QmNO4EpT0_xiemhA5u55GHoH17j0k7ezyO_lEyjs34M,570
730
737
  omlish/sql/api/base.py,sha256=-AePkKy4uxYuob2J4GEwsSvtbFyvNIunNyE3u7p1Uas,1529
731
738
  omlish/sql/api/columns.py,sha256=UBol4bfwZ1nhcjv2gE1JhUMzRFeqtiCDo2T9CUGYb64,1943
732
739
  omlish/sql/api/dbapi.py,sha256=H3bFoWI-ox81APX3xBbjylNWyMUXh78ICMQjRrlDNxw,2426
@@ -815,7 +822,7 @@ omlish/text/decoding.py,sha256=sQWGckWzRslRHYKpj1SBeoo6AVqXm5HFlWFRARN1QpM,1286
815
822
  omlish/text/delimit.py,sha256=z9uIuWJdbp7M3ku2KQRHo-lzJYZUJCqZTLse1sIUI4Q,4932
816
823
  omlish/text/filecache.py,sha256=U3sHtHzUYtPeXr8WrSw3eJ1m7zipJf_yu1jExcTcXgY,5411
817
824
  omlish/text/glyphsplit.py,sha256=HI8TWDUaF_tJG5RnIdIjtUH_lYnjYZ7KZBANSxOXGZc,3808
818
- omlish/text/indent.py,sha256=LOQgHskHMLVrRC6HLL9uIWay517dpvPEYQK0Igm-wm8,1341
825
+ omlish/text/indent.py,sha256=ohCbLCNPntLpAG2c1qtOvVIInlE-nwQQQmkKlr9oIj0,1518
819
826
  omlish/text/linecache.py,sha256=hRYlEhD63ZfA6_ZOTkQIcnON-3W56QMAhcG3vEJqj9M,1858
820
827
  omlish/text/mangle.py,sha256=d7j2_HPxoxF5VrLD1TShOSfnhBLH_-lQe_OH2kl0yHg,2790
821
828
  omlish/text/minja.py,sha256=FH2xcZUby-yB1CQwCUGmpvHmE1nCmfNX1h0Nm6ix8ck,7515
@@ -832,10 +839,10 @@ omlish/typedvalues/generic.py,sha256=byWG_gMXhNelckUwdmOoJE9FKkL71Q4BSi4ZLyy0XZ0
832
839
  omlish/typedvalues/holder.py,sha256=ZTnHiw-K38ciOBLEdwgrltr7Xp8jjEs_0Lp69DH-G-o,1128
833
840
  omlish/typedvalues/marshal.py,sha256=hWHRLcrGav7lvXJDtb9bNI0ickl4SKPQ6F4BbTpqw3A,4219
834
841
  omlish/typedvalues/reflect.py,sha256=Ih1YgU-srUjsvBn_P7C66f73_VCvcwqE3ffeBnZBgt4,674
835
- omlish/typedvalues/values.py,sha256=CEL8xeeneJBe8CrV3NXyZcC6sZ0FR6Cgz2YtaCBug6A,1359
836
- omlish-0.0.0.dev295.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
837
- omlish-0.0.0.dev295.dist-info/METADATA,sha256=CeHzRdEoHLWJZJEZp8lOMhCmPeGbhkwiv0rqDN7zpdw,4316
838
- omlish-0.0.0.dev295.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
839
- omlish-0.0.0.dev295.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
840
- omlish-0.0.0.dev295.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
841
- omlish-0.0.0.dev295.dist-info/RECORD,,
842
+ omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
843
+ omlish-0.0.0.dev296.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
844
+ omlish-0.0.0.dev296.dist-info/METADATA,sha256=ab1hautqVw1AqWHUX53JxwiOist4T03rq46W2FzILPg,4416
845
+ omlish-0.0.0.dev296.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
846
+ omlish-0.0.0.dev296.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
847
+ omlish-0.0.0.dev296.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
848
+ omlish-0.0.0.dev296.dist-info/RECORD,,