omlish 0.0.0.dev194__py3-none-any.whl → 0.0.0.dev196__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- omlish/__about__.py +3 -3
- omlish/asyncs/bluelet/runner.py +1 -1
- omlish/codecs/base.py +5 -5
- omlish/codecs/text.py +1 -2
- omlish/io/compress/adapters.py +4 -4
- omlish/io/compress/base.py +4 -4
- omlish/io/compress/bz2.py +4 -4
- omlish/io/compress/codecs.py +2 -2
- omlish/io/compress/gzip.py +10 -10
- omlish/io/compress/lz4.py +5 -5
- omlish/io/compress/lzma.py +4 -4
- omlish/io/compress/zlib.py +4 -4
- omlish/io/coro/__init__.py +56 -0
- omlish/io/coro/direct.py +13 -0
- omlish/io/{generators → coro}/readers.py +31 -31
- omlish/io/{generators → coro}/stepped.py +28 -28
- omlish/multiprocessing/__init__.py +32 -0
- omlish/{multiprocessing.py → multiprocessing/death.py} +3 -88
- omlish/multiprocessing/proxies.py +30 -0
- omlish/multiprocessing/spawn.py +59 -0
- omlish/os/atomics.py +2 -2
- omlish/outcome.py +250 -0
- omlish/sockets/server.py +1 -2
- omlish/term/vt100/terminal.py +1 -1
- omlish/testing/pytest/plugins/asyncs/__init__.py +1 -0
- omlish/testing/pytest/plugins/asyncs/backends/__init__.py +16 -0
- omlish/testing/pytest/plugins/asyncs/backends/asyncio.py +35 -0
- omlish/testing/pytest/plugins/asyncs/backends/base.py +30 -0
- omlish/testing/pytest/plugins/asyncs/backends/trio.py +91 -0
- omlish/testing/pytest/plugins/asyncs/backends/trio_asyncio.py +89 -0
- omlish/testing/pytest/plugins/asyncs/consts.py +3 -0
- omlish/testing/pytest/plugins/asyncs/fixtures.py +273 -0
- omlish/testing/pytest/plugins/asyncs/plugin.py +182 -0
- omlish/testing/pytest/plugins/asyncs/utils.py +10 -0
- omlish/text/indent.py +1 -1
- omlish/text/minja.py +2 -2
- {omlish-0.0.0.dev194.dist-info → omlish-0.0.0.dev196.dist-info}/METADATA +5 -5
- {omlish-0.0.0.dev194.dist-info → omlish-0.0.0.dev196.dist-info}/RECORD +43 -30
- {omlish-0.0.0.dev194.dist-info → omlish-0.0.0.dev196.dist-info}/WHEEL +1 -1
- omlish/io/generators/__init__.py +0 -56
- omlish/io/generators/direct.py +0 -13
- omlish/testing/pytest/plugins/asyncs.py +0 -162
- /omlish/io/{generators → coro}/consts.py +0 -0
- {omlish-0.0.0.dev194.dist-info → omlish-0.0.0.dev196.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev194.dist-info → omlish-0.0.0.dev196.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev194.dist-info → omlish-0.0.0.dev196.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,5 @@
|
|
1
1
|
omlish/.manifests.json,sha256=dyIpveH7Z8OnQp2pTn6NVv7LCDXVrozJWAzbk8PBavg,7950
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=nxbjDnaovkyE-nMQ2f3nKoT_fTMcghr_b2v84nrqD6U,3409
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
4
4
|
omlish/c3.py,sha256=ubu7lHwss5V4UznbejAI0qXhXahrU01MysuHOZI9C4U,8116
|
5
5
|
omlish/cached.py,sha256=UI-XTFBwA6YXWJJJeBn-WkwBkfzDjLBBaZf4nIJA9y0,510
|
@@ -8,7 +8,7 @@ omlish/datetimes.py,sha256=HajeM1kBvwlTa-uR1TTZHmZ3zTPnnUr1uGGQhiO1XQ0,2152
|
|
8
8
|
omlish/defs.py,sha256=9uUjJuVIbCBL3g14fyzAp-9gH935MFofvlfOGwcBIaM,4913
|
9
9
|
omlish/dynamic.py,sha256=35C_cCX_Vq2HrHzGk5T-zbrMvmUdiIiwDzDNixczoDo,6541
|
10
10
|
omlish/libc.py,sha256=8r7Ejyhttk9ruCfBkxNTrlzir5WPbDE2vmY7VPlceMA,15362
|
11
|
-
omlish/
|
11
|
+
omlish/outcome.py,sha256=ABIE0zjjTyTNtn-ZqQ_9_mUzLiBQ3sDAyqc9JVD8N2k,7852
|
12
12
|
omlish/runmodule.py,sha256=PWvuAaJ9wQQn6bx9ftEL3_d04DyotNn8dR_twm2pgw0,700
|
13
13
|
omlish/shlex.py,sha256=bsW2XUD8GiMTUTDefJejZ5AyqT1pTgWMPD0BMoF02jE,248
|
14
14
|
omlish/subprocesses.py,sha256=KOvt5gvpq2uisjYKyU_XUPZyM6yq8ywgbfWjz-lx9CQ,8686
|
@@ -106,7 +106,7 @@ omlish/asyncs/bluelet/api.py,sha256=yeM5SauiIbvKj26mDdxn5mOj8s5fFIw2xBSe-P6HVC0,
|
|
106
106
|
omlish/asyncs/bluelet/core.py,sha256=NpGQhb865aeXPKV_67l-6FiuQzdDJJ85zjfvCR5R8Pc,5430
|
107
107
|
omlish/asyncs/bluelet/events.py,sha256=iXpRWmy64YcshT_nuyiJ39jbketZdtj8LrdlX3JmpoY,2440
|
108
108
|
omlish/asyncs/bluelet/files.py,sha256=pgcLV_3oGbpqQmOrii8SeizyYLp8XKofQJhqM82RlKw,2389
|
109
|
-
omlish/asyncs/bluelet/runner.py,sha256=
|
109
|
+
omlish/asyncs/bluelet/runner.py,sha256=F6Ep0th09f-FkIRJfMN3_u-iG21jNNv11WyqnHyITYU,15475
|
110
110
|
omlish/asyncs/bluelet/sockets.py,sha256=RrC2vU52dOEBYKzvoh1qA39uUE8p3uCB_oxnhaP1AeA,6752
|
111
111
|
omlish/bootstrap/__init__.py,sha256=-Rtsg7uPQNhh1dIT9nqrz96XlqizwoLnWf-FwOEstJI,730
|
112
112
|
omlish/bootstrap/__main__.py,sha256=4jCwsaogp0FrJjJZ85hzF4-WqluPeheHbfeoKynKvNs,194
|
@@ -117,13 +117,13 @@ omlish/bootstrap/main.py,sha256=yZhOHDDlj4xB5a89dRdT8z58FsqqnpoBg1-tvY2CJe4,5903
|
|
117
117
|
omlish/bootstrap/marshal.py,sha256=ZxdAeMNd2qXRZ1HUK89HmEhz8tqlS9OduW34QBscKw0,516
|
118
118
|
omlish/bootstrap/sys.py,sha256=aqMzxZa_lPj78cgz4guYZAkjT6En32e2LptfEo20NIM,8769
|
119
119
|
omlish/codecs/__init__.py,sha256=-FDwRJFGagg-fZyQ8wup4GPuR6gHpmaChzthlykn-kY,876
|
120
|
-
omlish/codecs/base.py,sha256=
|
120
|
+
omlish/codecs/base.py,sha256=uFrDvP7SZdeBbpuUzGHvyOdFNAmhjkBG2cVaVydRsjw,2221
|
121
121
|
omlish/codecs/bytes.py,sha256=jlZ87OmZ52HhQDNyL87R3OIviK2qV5iU2jZYOTOLWjk,2157
|
122
122
|
omlish/codecs/chain.py,sha256=DrBi5vbaFfObfoppo6alwOmyW2XbrH2051cjExwr2Gs,527
|
123
123
|
omlish/codecs/funcs.py,sha256=p4imNt7TobyZVXWC-WhntHVu9KfJrO4QwdtPRh-cVOk,850
|
124
124
|
omlish/codecs/registry.py,sha256=8ySUG-kwGJoUN1HCRnz8VjcykB0wlIzoWF5WTAE1ny0,3860
|
125
125
|
omlish/codecs/standard.py,sha256=eiZ4u9ep0XrA4Z_D1zJI0vmWyuN8HLrX4Se_r_Cq_ZM,60
|
126
|
-
omlish/codecs/text.py,sha256=
|
126
|
+
omlish/codecs/text.py,sha256=JzrdwMpQPo2NBBg3K1EZszzQy5vEWmd82SIerJd4yeQ,5723
|
127
127
|
omlish/collections/__init__.py,sha256=zeUvcAz073ekko37QKya6sElTMfKTuF1bKrdbMtaRpI,2142
|
128
128
|
omlish/collections/abc.py,sha256=sP7BpTVhx6s6C59mTFeosBi4rHOWC6tbFBYbxdZmvh0,2365
|
129
129
|
omlish/collections/coerce.py,sha256=g68ROb_-5HgH-vI8612mU2S0FZ8-wp2ZHK5_Zy_kVC0,7037
|
@@ -329,27 +329,27 @@ omlish/io/pyio.py,sha256=q4RBFVpBE5PYjnGPGT-_4pcZb7dFJmLJ4LtI8OoDRQY,95433
|
|
329
329
|
omlish/io/trampoline.py,sha256=oUKTQg1F5xQS1431Kt7MbK-NZpX509ubcXU-s86xJr8,7171
|
330
330
|
omlish/io/compress/__init__.py,sha256=qV-aDfPWykTMYcoQmE8THZ4KFDRzqwN3QPPNEJVarXY,86
|
331
331
|
omlish/io/compress/abc.py,sha256=P9YoQX8XYoq2UfBsinKLUuwwqV1ODUIJzjTraRWGF1M,3090
|
332
|
-
omlish/io/compress/adapters.py,sha256=
|
333
|
-
omlish/io/compress/base.py,sha256=
|
332
|
+
omlish/io/compress/adapters.py,sha256=LJHhjwMHXstoLyX_q0QhGoBAcqyYGWfzhzQbGBXHzHY,6148
|
333
|
+
omlish/io/compress/base.py,sha256=zwPnicyrEY-zersxdhxGHXxn02ycl8ew2uZXEecJea4,615
|
334
334
|
omlish/io/compress/brotli.py,sha256=Q2t9uRqBEgRyJCSPsTaJv5w7d-rhsjDMluA4VRBHa_A,1182
|
335
|
-
omlish/io/compress/bz2.py,sha256=
|
336
|
-
omlish/io/compress/codecs.py,sha256=
|
337
|
-
omlish/io/compress/gzip.py,sha256=
|
338
|
-
omlish/io/compress/lz4.py,sha256=
|
339
|
-
omlish/io/compress/lzma.py,sha256=
|
335
|
+
omlish/io/compress/bz2.py,sha256=HtwBuBYHJ3MyWO9xJ0XhWpyIYTA3OszLrpu_J4kRRPA,1534
|
336
|
+
omlish/io/compress/codecs.py,sha256=VBc_MAz0W8lVKTKavot3aVKOuPmEUquzarMtpyuteiU,1804
|
337
|
+
omlish/io/compress/gzip.py,sha256=tSjZmLWc7BZugYhmv07Pjr_TaVD1X-0JnZIlAk67iyQ,12213
|
338
|
+
omlish/io/compress/lz4.py,sha256=qaze1yVXexjJyN18Adh8fbTm_5pEeyytx66KoMUNpCU,2759
|
339
|
+
omlish/io/compress/lzma.py,sha256=qDyshBgBUSPcZpAyXiRXnqI7zx7x60UpPxn8K3nN8aM,2469
|
340
340
|
omlish/io/compress/snappy.py,sha256=JFoH_9l0Tr9AGaQ0jHRiP4TsFnG071l27mprCBcqt4c,704
|
341
|
-
omlish/io/compress/zlib.py,sha256=
|
341
|
+
omlish/io/compress/zlib.py,sha256=dE38zBY4qNihUYtPjSpNRXweiw6mB6xsYqsBJklTDXM,2364
|
342
342
|
omlish/io/compress/zstd.py,sha256=wik_HWLq_8fGAJgGyMGq9fhFQovot1aCH4lwMpihQmg,949
|
343
|
+
omlish/io/coro/__init__.py,sha256=cfeng1ESiMlCU_ubI1aWcBD9IK0Im7emOTsggmlEjtI,1046
|
344
|
+
omlish/io/coro/consts.py,sha256=4r6IMLBMic6MJHVn9UiORIkkPAuxsqtzFT3KV0fatC0,33
|
345
|
+
omlish/io/coro/direct.py,sha256=Y--rP3wvBAYMeYctokb5IGd8UyQGmEFChyKISmRg5k0,294
|
346
|
+
omlish/io/coro/readers.py,sha256=9VcXuBQ7BSoFen8UVuYFwnl2jJVjyilWV7QeqLNQtKU,4131
|
347
|
+
omlish/io/coro/stepped.py,sha256=eAppRniUZ00rk3goWLU4zsd52MhZB2_YrOmFqs3RfR4,4929
|
343
348
|
omlish/io/fdio/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
344
349
|
omlish/io/fdio/handlers.py,sha256=VDPEff3yXPnCj2jZEkrzuI42bKC8wD8fLmOG97hKrgo,1350
|
345
350
|
omlish/io/fdio/kqueue.py,sha256=YgGBQibkAUYODYDiGl7Enjtx1oQsJXuDsBLBXgqlLQw,3832
|
346
351
|
omlish/io/fdio/manager.py,sha256=q4wWf7nKrNtjx6yPEvrVnFt4UtK_BTvVlquEGw7poEo,1250
|
347
352
|
omlish/io/fdio/pollers.py,sha256=yNadAt3W5wd90PFmd3vD77bq5QwoVb2A6SM2JjZpKRs,5507
|
348
|
-
omlish/io/generators/__init__.py,sha256=YsSLJY9uw72eX3iXd_A0pM69g7EvEqMFdCdR_BBD4RA,1216
|
349
|
-
omlish/io/generators/consts.py,sha256=4r6IMLBMic6MJHVn9UiORIkkPAuxsqtzFT3KV0fatC0,33
|
350
|
-
omlish/io/generators/direct.py,sha256=A9VJB1rNKU3l-NatpYIwyCLI3R_ybGglmdx6sAtoTo4,324
|
351
|
-
omlish/io/generators/readers.py,sha256=MolTFCzcnD5XoP0su0YUNHJ0xlHC3KTihvWAi75y8Bo,4336
|
352
|
-
omlish/io/generators/stepped.py,sha256=WZnLpCzv5pA6jLdb1lplXoKRPbREw9wO586Dew5EzV4,5129
|
353
353
|
omlish/iterators/__init__.py,sha256=yMavf5FofiS1EU4UFuWPXiFZ03W0H-y7MuMxW8FUaEE,358
|
354
354
|
omlish/iterators/iterators.py,sha256=ghI4dO6WPyyFOLTIIMaHQ_IOy2xXaFpGPqveZ5YGIBU,3158
|
355
355
|
omlish/iterators/recipes.py,sha256=53mkexitMhkwXQZbL6DrhpT0WePQ_56uXd5Jaw3DfzI,467
|
@@ -457,8 +457,12 @@ omlish/math/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
457
457
|
omlish/math/bits.py,sha256=yip1l8agOYzT7bFyMGc0RR3XlnGCfHMpjw_SECLLh1I,3477
|
458
458
|
omlish/math/floats.py,sha256=UimhOT7KRl8LXTzOI5cQWoX_9h6WNWe_3vcOuO7-h_8,327
|
459
459
|
omlish/math/stats.py,sha256=MegzKVsmv2kra4jDWLOUgV0X7Ee2Tbl5u6ql1v4-dEY,10053
|
460
|
+
omlish/multiprocessing/__init__.py,sha256=hFAym2y_ws4JUMiB216J45LDajrlnfAqsTq214gvHFc,588
|
461
|
+
omlish/multiprocessing/death.py,sha256=_JV88yxwYIalamIMuqmGTQ4KYd0t-UHLjVkdoliPWL8,2943
|
462
|
+
omlish/multiprocessing/proxies.py,sha256=bInhGds2rv6xT9q3qRMlZuSXFAjwfspkiohXZ36aUpY,484
|
463
|
+
omlish/multiprocessing/spawn.py,sha256=sTvPLIJGYnjjI6ASqhFzHF-97tCnaOXX7u7s-33SUMw,1875
|
460
464
|
omlish/os/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
461
|
-
omlish/os/atomics.py,sha256=
|
465
|
+
omlish/os/atomics.py,sha256=KhWNeh4mzU3M-TF0v8uR6hUqMfZJW42MeyIK9Jl6R0k,5246
|
462
466
|
omlish/os/deathsig.py,sha256=hk9Yq2kyDdI-cI7OQH7mOfpRbOKzY_TfPKEqgrjVYbA,641
|
463
467
|
omlish/os/files.py,sha256=1tNy1z5I_CgYKA5c6lOfsXc-hknP4tQDbSShdz8HArw,1308
|
464
468
|
omlish/os/journald.py,sha256=2nI8Res1poXkbLc31--MPUlzYMESnCcPUkIxDOCjZW0,3903
|
@@ -482,7 +486,7 @@ omlish/secrets/subprocesses.py,sha256=ffjfbgPbEE_Pwb_87vG4yYR2CGZy3I31mHNCo_0JtH
|
|
482
486
|
omlish/sockets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
483
487
|
omlish/sockets/addresses.py,sha256=ZQFacDsXo6cKSgEjzN525IcUJPyfubXETzbY-_BBAro,1285
|
484
488
|
omlish/sockets/handlers.py,sha256=9kkNMj1DTJa4xo_3hcBvSkjKc-dy_Ho5he2ubJieJ2A,621
|
485
|
-
omlish/sockets/server.py,sha256=
|
489
|
+
omlish/sockets/server.py,sha256=96vCNBvHSf8lWI3kd3RBbY0M2qXGaD_TksMhnBQ0_q0,1600
|
486
490
|
omlish/specs/__init__.py,sha256=zZwF8yXTEkSstYtORkDhVLK-_hWU8WOJCuBpognb_NY,118
|
487
491
|
omlish/specs/jmespath/LICENSE,sha256=IH-ZZlZkS8XMkf_ubNVD1aYHQ2l_wd0tmHtXrCcYpRU,1113
|
488
492
|
omlish/specs/jmespath/__init__.py,sha256=9tsrquw1kXe1KAhTP3WeL0GlGBiTguQVxsC-lUYTWP4,2087
|
@@ -566,7 +570,7 @@ omlish/term/progressbar.py,sha256=TiwdmPSMa5jQj35i1NQURTWQGy4eWUNx_XiPM38JtvQ,31
|
|
566
570
|
omlish/term/vt100/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
567
571
|
omlish/term/vt100/c.py,sha256=cAhDKXI81PZRtFmTotfad3HZGREP1QnOlWYoAw6v-Fw,3532
|
568
572
|
omlish/term/vt100/states.py,sha256=OxPUxfFTcfz56MhtDgIigEApChOtN6XO1g6R2H08mu4,8303
|
569
|
-
omlish/term/vt100/terminal.py,sha256=
|
573
|
+
omlish/term/vt100/terminal.py,sha256=KUlg331ele7P6SHsBKdbpdQFDKsxSply1Ds27NkppTs,9359
|
570
574
|
omlish/testing/__init__.py,sha256=M_BQrcCHkoL-ZvE-UpQ8XxXNYRRawhjUz4rCJnAqM2A,152
|
571
575
|
omlish/testing/testing.py,sha256=TT2wwSzPZ_KhIvKxpM1qc1yHKD-LHDNgGrcr_h8vs7c,2895
|
572
576
|
omlish/testing/pytest/__init__.py,sha256=B2nyJrjIoNcEopbg0IZ5UUDs4OHmQ8qqElFJfGcDdas,257
|
@@ -577,7 +581,6 @@ omlish/testing/pytest/inject/__init__.py,sha256=pdRKv1HcDmJ_yArKJbYITPXXZthRSGgB
|
|
577
581
|
omlish/testing/pytest/inject/harness.py,sha256=_Qf7lLcYc_dpauYOE68u_a65jPCFWmQUYv9m_OOdNqs,5724
|
578
582
|
omlish/testing/pytest/plugins/__init__.py,sha256=ys1zXrYrNm7Uo6YOIVJ6Bd3dQo6kv387k7MbTYlqZSI,467
|
579
583
|
omlish/testing/pytest/plugins/_registry.py,sha256=IK04KlBgiOJxKAyCCgjpX2R-9tE-btalYJkgjLc8Te8,77
|
580
|
-
omlish/testing/pytest/plugins/asyncs.py,sha256=CG-cWWxCtxVIyKJKEjxfFV0MVwYBHPo1mb-umCGz9X8,5532
|
581
584
|
omlish/testing/pytest/plugins/depskip.py,sha256=xithY-OMtjwhv8mcRNkv-WI_PSQtHldQ8H1s60MIXkk,2673
|
582
585
|
omlish/testing/pytest/plugins/logging.py,sha256=Y1I_3DiiuDSynObkm8bNPZxdvljUWXbqD6YUM5uI34o,391
|
583
586
|
omlish/testing/pytest/plugins/managermarks.py,sha256=AP3ty-QB-8O5DkulwUOudBlUOvXMHhBfNyY-0yCmejk,1520
|
@@ -587,17 +590,27 @@ omlish/testing/pytest/plugins/skips.py,sha256=EoZDg1uWccgbAegmzqI85c7RliycD1e2J4
|
|
587
590
|
omlish/testing/pytest/plugins/spacing.py,sha256=JQQhi9q3c523Ro1a_K_9RGAb7HotiO74N8bYX2VESFE,707
|
588
591
|
omlish/testing/pytest/plugins/switches.py,sha256=CflHe6gLhkLt_9OcAmzskuZsrhZhwOuL_bIdogibARc,3815
|
589
592
|
omlish/testing/pytest/plugins/utils.py,sha256=L5C622UXcA_AUKDcvyh5IMiRfqSGGz0McdhwZWvfMlU,261
|
593
|
+
omlish/testing/pytest/plugins/asyncs/__init__.py,sha256=TTNhFmP_krug1973sq_bpWBTIvg68-1nbuVLSs92Z6k,41
|
594
|
+
omlish/testing/pytest/plugins/asyncs/consts.py,sha256=0NOCkzV43dOu3u97BqYMQ4mPG8JuFncpWibkOZpCqX4,55
|
595
|
+
omlish/testing/pytest/plugins/asyncs/fixtures.py,sha256=HyhtZLq5Qai7pS9Z4Ejl0f0NyVtDjJJL9fhbUKVUx2M,11299
|
596
|
+
omlish/testing/pytest/plugins/asyncs/plugin.py,sha256=-gVLHZb78nEfMOnmWKY0gdT3BOHjY3bp-GnBGshOvPo,6021
|
597
|
+
omlish/testing/pytest/plugins/asyncs/utils.py,sha256=K-nQxSJQL-3N_xtLqfCX11KSLYCG_gPQ6hZqLQZIHNQ,294
|
598
|
+
omlish/testing/pytest/plugins/asyncs/backends/__init__.py,sha256=DpJGt5KA2N2pNXy59raVyJH1969M1AP80pJAqIlNEAs,359
|
599
|
+
omlish/testing/pytest/plugins/asyncs/backends/asyncio.py,sha256=0b8pmbXNW2qI8qo1ARxpONdqw8DWf0v5J2-9mkM9hrc,820
|
600
|
+
omlish/testing/pytest/plugins/asyncs/backends/base.py,sha256=fTZ6R_iKpAp-8DVw8js8rxC_VNqj6onFD4KKBWnmtXk,587
|
601
|
+
omlish/testing/pytest/plugins/asyncs/backends/trio.py,sha256=xty9TR7-Kk6n0cdOqErLilPLLCchJe6zmEyhpypTmKM,3330
|
602
|
+
omlish/testing/pytest/plugins/asyncs/backends/trio_asyncio.py,sha256=VcGVwf4V-1ZFK_70FrFS9b11EU1dOy1ozhhIDXGNSEo,3169
|
590
603
|
omlish/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
591
604
|
omlish/text/asdl.py,sha256=AS3irh-sag5pqyH3beJif78PjCbOaFso1NeKq-HXuTs,16867
|
592
605
|
omlish/text/delimit.py,sha256=ubPXcXQmtbOVrUsNh5gH1mDq5H-n1y2R4cPL5_DQf68,4928
|
593
606
|
omlish/text/glyphsplit.py,sha256=kqqjglRdxGo0czYZxOz9Vi8aBmVsCOq8h6lPwRA5xe0,3803
|
594
|
-
omlish/text/indent.py,sha256=
|
595
|
-
omlish/text/minja.py,sha256=
|
607
|
+
omlish/text/indent.py,sha256=YjtJEBYWuk8--b9JU_T6q4yxV85_TR7VEVr5ViRCFwk,1336
|
608
|
+
omlish/text/minja.py,sha256=jZC-fp3Xuhx48ppqsf2Sf1pHbC0t8XBB7UpUUoOk2Qw,5751
|
596
609
|
omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
|
597
610
|
omlish/text/random.py,sha256=jNWpqiaKjKyTdMXC-pWAsSC10AAP-cmRRPVhm59ZWLk,194
|
598
|
-
omlish-0.0.0.
|
599
|
-
omlish-0.0.0.
|
600
|
-
omlish-0.0.0.
|
601
|
-
omlish-0.0.0.
|
602
|
-
omlish-0.0.0.
|
603
|
-
omlish-0.0.0.
|
611
|
+
omlish-0.0.0.dev196.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
612
|
+
omlish-0.0.0.dev196.dist-info/METADATA,sha256=UQWrSXv_IXEoC7OUH5wA3bWZ3z8s6N1WYqTRzRmpXyg,4264
|
613
|
+
omlish-0.0.0.dev196.dist-info/WHEEL,sha256=A3WOREP4zgxI0fKrHUG8DC8013e3dK3n7a6HDbcEIwE,91
|
614
|
+
omlish-0.0.0.dev196.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
615
|
+
omlish-0.0.0.dev196.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
616
|
+
omlish-0.0.0.dev196.dist-info/RECORD,,
|
omlish/io/generators/__init__.py
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
from .consts import ( # noqa
|
2
|
-
DEFAULT_BUFFER_SIZE,
|
3
|
-
)
|
4
|
-
|
5
|
-
from .direct import ( # noqa
|
6
|
-
DirectGenerator,
|
7
|
-
|
8
|
-
BytesDirectGenerator,
|
9
|
-
StrDirectGenerator,
|
10
|
-
)
|
11
|
-
|
12
|
-
from .readers import ( # noqa
|
13
|
-
ReaderGenerator,
|
14
|
-
BytesReaderGenerator,
|
15
|
-
StrReaderGenerator,
|
16
|
-
|
17
|
-
ExactReaderGenerator,
|
18
|
-
BytesExactReaderGenerator,
|
19
|
-
StrExactReaderGenerator,
|
20
|
-
|
21
|
-
GeneratorReader,
|
22
|
-
|
23
|
-
PrependableGeneratorReader,
|
24
|
-
PrependableBytesGeneratorReader,
|
25
|
-
PrependableStrGeneratorReader,
|
26
|
-
prependable_bytes_generator_reader,
|
27
|
-
prependable_str_generator_reader,
|
28
|
-
|
29
|
-
BufferedGeneratorReader,
|
30
|
-
BufferedBytesGeneratorReader,
|
31
|
-
BufferedStrGeneratorReader,
|
32
|
-
buffered_bytes_generator_reader,
|
33
|
-
buffered_str_generator_reader,
|
34
|
-
)
|
35
|
-
|
36
|
-
from .stepped import ( # noqa
|
37
|
-
SteppedGenerator,
|
38
|
-
BytesSteppedGenerator,
|
39
|
-
StrSteppedGenerator,
|
40
|
-
BytesToStrSteppedGenerator,
|
41
|
-
StrToBytesSteppedGenerator,
|
42
|
-
|
43
|
-
SteppedReaderGenerator,
|
44
|
-
BytesSteppedReaderGenerator,
|
45
|
-
StrSteppedReaderGenerator,
|
46
|
-
|
47
|
-
flatmap_stepped_generator,
|
48
|
-
|
49
|
-
joined_bytes_stepped_generator,
|
50
|
-
joined_str_stepped_generator,
|
51
|
-
|
52
|
-
read_into_bytes_stepped_generator,
|
53
|
-
read_into_str_stepped_generator,
|
54
|
-
|
55
|
-
buffer_bytes_stepped_reader_generator,
|
56
|
-
)
|
omlish/io/generators/direct.py
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
import typing as ta
|
2
|
-
|
3
|
-
|
4
|
-
O = ta.TypeVar('O')
|
5
|
-
I = ta.TypeVar('I')
|
6
|
-
R = ta.TypeVar('R')
|
7
|
-
|
8
|
-
|
9
|
-
# Direct generators yield outputs 1:1 with inputs.
|
10
|
-
DirectGenerator: ta.TypeAlias = ta.Generator[O, I, R]
|
11
|
-
|
12
|
-
BytesDirectGenerator: ta.TypeAlias = DirectGenerator[bytes, bytes, R]
|
13
|
-
StrDirectGenerator: ta.TypeAlias = DirectGenerator[str, str, R]
|
@@ -1,162 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
TODO:
|
3
|
-
- auto drain_asyncio
|
4
|
-
|
5
|
-
==
|
6
|
-
|
7
|
-
_pytest:
|
8
|
-
https://github.com/pytest-dev/pytest/blob/ef9b8f9d748b6f50eab5d43e32d93008f7880899/src/_pytest/python.py#L155
|
9
|
-
"async def function and no async plugin installed (see warnings)"
|
10
|
-
|
11
|
-
pytest_trio:
|
12
|
-
https://github.com/python-trio/pytest-trio/blob/f03160aa1dd355a12d39fa21f4aee4e1239efea3/pytest_trio/plugin.py
|
13
|
-
- pytest_addoption
|
14
|
-
- pytest_configure
|
15
|
-
- pytest_collection_modifyitems
|
16
|
-
- pytest_runtest_call @(hookwrapper=True)
|
17
|
-
- pytest_fixture_setup
|
18
|
-
|
19
|
-
pytest_asyncio:
|
20
|
-
https://github.com/pytest-dev/pytest-asyncio/blob/f45aa18cf3eeeb94075de16a1d797858facab863/pytest_asyncio/plugin.py
|
21
|
-
- pytest_addoption
|
22
|
-
- pytest_configure
|
23
|
-
- pytest_pycollect_makeitem_preprocess_async_fixtures @(specname="pytest_pycollect_makeitem", tryfirst=True)
|
24
|
-
- pytest_pycollect_makeitem_convert_async_functions_to_subclass @(specname="pytest_pycollect_makeitem", hookwrapper=True)
|
25
|
-
- pytest_generate_tests @(tryfirst=True)
|
26
|
-
- pytest_runtest_setup(item: pytest.Item) -> None:
|
27
|
-
- pytest_pyfunc_call @(tryfirst=True, hookwrapper=True)
|
28
|
-
- pytest_collectstart @()
|
29
|
-
- pytest_report_header @(tryfirst=True)
|
30
|
-
- pytest_fixture_setup @(hookwrapper=True)
|
31
|
-
|
32
|
-
anyio.pytest_plugin:
|
33
|
-
https://github.com/agronholm/anyio/blob/8907964926a24461840eee0925d3f355e729f15d/src/anyio/pytest_plugin.py
|
34
|
-
- pytest_configure
|
35
|
-
- pytest_pycollect_makeitem @(tryfirst=True)
|
36
|
-
- pytest_pyfunc_call @(tryfirst=True)
|
37
|
-
- pytest_fixture_setup
|
38
|
-
|
39
|
-
""" # noqa
|
40
|
-
import functools
|
41
|
-
import inspect
|
42
|
-
import sys
|
43
|
-
import typing as ta
|
44
|
-
import warnings
|
45
|
-
|
46
|
-
import pytest
|
47
|
-
|
48
|
-
from .... import lang
|
49
|
-
from ....asyncs import trio_asyncio as trai
|
50
|
-
from ....diag import pydevd as pdu
|
51
|
-
from ._registry import register
|
52
|
-
|
53
|
-
|
54
|
-
if ta.TYPE_CHECKING:
|
55
|
-
import trio_asyncio
|
56
|
-
else:
|
57
|
-
trio_asyncio = lang.proxy_import('trio_asyncio')
|
58
|
-
|
59
|
-
|
60
|
-
ASYNCS_MARK = 'asyncs'
|
61
|
-
|
62
|
-
KNOWN_BACKENDS = (
|
63
|
-
'asyncio',
|
64
|
-
'trio',
|
65
|
-
'trio_asyncio',
|
66
|
-
)
|
67
|
-
|
68
|
-
PARAM_NAME = '__async_backend'
|
69
|
-
|
70
|
-
|
71
|
-
def iscoroutinefunction(func: ta.Any) -> bool:
|
72
|
-
return inspect.iscoroutinefunction(func) or getattr(func, '_is_coroutine', False)
|
73
|
-
|
74
|
-
|
75
|
-
def is_async_function(func: ta.Any) -> bool:
|
76
|
-
return iscoroutinefunction(func) or inspect.isasyncgenfunction(func)
|
77
|
-
|
78
|
-
|
79
|
-
@register
|
80
|
-
class AsyncsPlugin:
|
81
|
-
ASYNC_BACKENDS: ta.ClassVar[ta.Sequence[str]] = [
|
82
|
-
*[s for s in KNOWN_BACKENDS if lang.can_import(s)],
|
83
|
-
]
|
84
|
-
|
85
|
-
def pytest_cmdline_main(self, config):
|
86
|
-
if (aio_plugin := sys.modules.get('pytest_asyncio.plugin')):
|
87
|
-
# warnings.filterwarnings is clobbered by pytest using warnings.catch_warnings
|
88
|
-
def aio_plugin_warn(message, *args, **kwargs):
|
89
|
-
if (
|
90
|
-
isinstance(message, pytest.PytestDeprecationWarning) and
|
91
|
-
message.args[0].startswith('The configuration option "asyncio_default_fixture_loop_scope" is unset.') # noqa
|
92
|
-
):
|
93
|
-
return
|
94
|
-
warnings.warn(message, *args, **kwargs)
|
95
|
-
|
96
|
-
aio_plugin.warnings = lang.proxy_import('warnings') # type: ignore
|
97
|
-
aio_plugin.warnings.warn = aio_plugin_warn # type: ignore
|
98
|
-
|
99
|
-
def pytest_configure(self, config):
|
100
|
-
config.addinivalue_line('markers', f'{ASYNCS_MARK}: marks for all async backends')
|
101
|
-
config.addinivalue_line('markers', 'trio_asyncio: marks for trio_asyncio backend')
|
102
|
-
|
103
|
-
def pytest_generate_tests(self, metafunc):
|
104
|
-
if (m := metafunc.definition.get_closest_marker(ASYNCS_MARK)) is not None:
|
105
|
-
if m.args:
|
106
|
-
bes = m.args
|
107
|
-
else:
|
108
|
-
bes = self.ASYNC_BACKENDS
|
109
|
-
elif metafunc.definition.get_closest_marker('trio_asyncio') is not None:
|
110
|
-
bes = ['trio_asyncio']
|
111
|
-
else:
|
112
|
-
return
|
113
|
-
|
114
|
-
if 'trio_asyncio' in bes:
|
115
|
-
# NOTE: Importing it here is apparently necessary to get its patching working - otherwise fails later with
|
116
|
-
# `no running event loop` in anyio._backends._asyncio and such.
|
117
|
-
import trio_asyncio # noqa
|
118
|
-
|
119
|
-
if pdu.is_present():
|
120
|
-
pdu.patch_for_trio_asyncio()
|
121
|
-
|
122
|
-
metafunc.fixturenames.append(PARAM_NAME)
|
123
|
-
metafunc.parametrize(PARAM_NAME, bes)
|
124
|
-
|
125
|
-
for c in metafunc._calls: # noqa
|
126
|
-
be = c.params[PARAM_NAME]
|
127
|
-
if be == 'trio_asyncio':
|
128
|
-
c.marks.extend([
|
129
|
-
pytest.mark.trio.mark,
|
130
|
-
pytest.mark.trio_asyncio.mark,
|
131
|
-
])
|
132
|
-
|
133
|
-
else:
|
134
|
-
c.marks.append(getattr(pytest.mark, be).mark)
|
135
|
-
|
136
|
-
if pdu.is_present():
|
137
|
-
c.marks.append(pytest.mark.drain_asyncio.mark)
|
138
|
-
|
139
|
-
@pytest.hookimpl(hookwrapper=True)
|
140
|
-
def pytest_runtest_call(self, item):
|
141
|
-
bes = [be for be in self.ASYNC_BACKENDS if item.get_closest_marker(be) is not None]
|
142
|
-
if len(bes) > 1 and set(bes) != {'trio', 'trio_asyncio'}:
|
143
|
-
raise Exception(f'{item.nodeid}: multiple async backends specified: {bes}')
|
144
|
-
elif is_async_function(item.obj) and not bes:
|
145
|
-
from _pytest.unittest import UnitTestCase # noqa
|
146
|
-
if isinstance(item.parent, UnitTestCase):
|
147
|
-
# unittest handles these itself.
|
148
|
-
pass
|
149
|
-
else:
|
150
|
-
raise Exception(f'{item.nodeid}: async def function and no async plugin specified')
|
151
|
-
|
152
|
-
if 'trio_asyncio' in bes:
|
153
|
-
obj = item.obj
|
154
|
-
|
155
|
-
@functools.wraps(obj)
|
156
|
-
@trai.with_trio_asyncio_loop(wait=True)
|
157
|
-
async def run(*args, **kwargs):
|
158
|
-
await trio_asyncio.aio_as_trio(obj)(*args, **kwargs)
|
159
|
-
|
160
|
-
item.obj = run
|
161
|
-
|
162
|
-
yield
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|