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.
Files changed (46) hide show
  1. omlish/__about__.py +3 -3
  2. omlish/asyncs/bluelet/runner.py +1 -1
  3. omlish/codecs/base.py +5 -5
  4. omlish/codecs/text.py +1 -2
  5. omlish/io/compress/adapters.py +4 -4
  6. omlish/io/compress/base.py +4 -4
  7. omlish/io/compress/bz2.py +4 -4
  8. omlish/io/compress/codecs.py +2 -2
  9. omlish/io/compress/gzip.py +10 -10
  10. omlish/io/compress/lz4.py +5 -5
  11. omlish/io/compress/lzma.py +4 -4
  12. omlish/io/compress/zlib.py +4 -4
  13. omlish/io/coro/__init__.py +56 -0
  14. omlish/io/coro/direct.py +13 -0
  15. omlish/io/{generators → coro}/readers.py +31 -31
  16. omlish/io/{generators → coro}/stepped.py +28 -28
  17. omlish/multiprocessing/__init__.py +32 -0
  18. omlish/{multiprocessing.py → multiprocessing/death.py} +3 -88
  19. omlish/multiprocessing/proxies.py +30 -0
  20. omlish/multiprocessing/spawn.py +59 -0
  21. omlish/os/atomics.py +2 -2
  22. omlish/outcome.py +250 -0
  23. omlish/sockets/server.py +1 -2
  24. omlish/term/vt100/terminal.py +1 -1
  25. omlish/testing/pytest/plugins/asyncs/__init__.py +1 -0
  26. omlish/testing/pytest/plugins/asyncs/backends/__init__.py +16 -0
  27. omlish/testing/pytest/plugins/asyncs/backends/asyncio.py +35 -0
  28. omlish/testing/pytest/plugins/asyncs/backends/base.py +30 -0
  29. omlish/testing/pytest/plugins/asyncs/backends/trio.py +91 -0
  30. omlish/testing/pytest/plugins/asyncs/backends/trio_asyncio.py +89 -0
  31. omlish/testing/pytest/plugins/asyncs/consts.py +3 -0
  32. omlish/testing/pytest/plugins/asyncs/fixtures.py +273 -0
  33. omlish/testing/pytest/plugins/asyncs/plugin.py +182 -0
  34. omlish/testing/pytest/plugins/asyncs/utils.py +10 -0
  35. omlish/text/indent.py +1 -1
  36. omlish/text/minja.py +2 -2
  37. {omlish-0.0.0.dev194.dist-info → omlish-0.0.0.dev196.dist-info}/METADATA +5 -5
  38. {omlish-0.0.0.dev194.dist-info → omlish-0.0.0.dev196.dist-info}/RECORD +43 -30
  39. {omlish-0.0.0.dev194.dist-info → omlish-0.0.0.dev196.dist-info}/WHEEL +1 -1
  40. omlish/io/generators/__init__.py +0 -56
  41. omlish/io/generators/direct.py +0 -13
  42. omlish/testing/pytest/plugins/asyncs.py +0 -162
  43. /omlish/io/{generators → coro}/consts.py +0 -0
  44. {omlish-0.0.0.dev194.dist-info → omlish-0.0.0.dev196.dist-info}/LICENSE +0 -0
  45. {omlish-0.0.0.dev194.dist-info → omlish-0.0.0.dev196.dist-info}/entry_points.txt +0 -0
  46. {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=EGlq5fZGiyJg2x9ba9tOUhbLf6OjV9lr0mNkhwX1DnU,3409
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/multiprocessing.py,sha256=QZT4C7I-uThCAjaEY3xgUYb-5GagUlnE4etN01LDyU4,5186
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=cwgVjwRRXzqfOqRD0rkPHjt_Udyt9ZKpVs36uAJ_Q7c,15473
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=JXTFSLnX5qPbi4NSbbI5uB3tYhs2SN0g_eWN2UskPYE,2242
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=8inuZbi_ODJB4G6eZfj2wBvCLgtpvhcTebKdGSori5c,5728
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=DQvbiqTiaVE-GsawpOpUTX07Gjg125Iuwd6IhjuSaxE,6180
333
- omlish/io/compress/base.py,sha256=yx8ifzs_j8y66gMCQcssjZ936NNBFhYn_kBRwNh3SWQ,647
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=2ULaZwcpAkHKV-JargrLoXgL9G-gxrVnPqE_pGqNUrg,1566
336
- omlish/io/compress/codecs.py,sha256=ySLHZdNKLx_CiBW9aGIu0gHbALGzF-uyH0usloU7s-8,1820
337
- omlish/io/compress/gzip.py,sha256=ZKZdg0wg_nIgFdkfemOv8xZpHneBXZAiCH0n6gIibWY,12281
338
- omlish/io/compress/lz4.py,sha256=4kppXZCXpSAQw6wJvCs9LLHFzukekENja7RiwmN8uMc,2790
339
- omlish/io/compress/lzma.py,sha256=4bWNKk7uTFiRT_HogW2ZldgaNy1IukmqfVDVkf5M2Ok,2501
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=BQ0BvX-wEN-0NwktcqFECYHTGwVe-VHCVCNarspGQ8o,2396
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=AKap761fcRqr44jnJNLbNwh6ju5drWJc3WWqTO0BcAs,5256
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=g9CSL0m6Ox10usyysXw4YRFr9H3LlQUH-9GftFCLeFw,1606
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=sYLddUSrubCJPnI6f2t5Pzp0tFGLLBKyYdDfKmkwREM,9363
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=XixaVnk9bvtBlH0n_cwN6yS5IyfrTWpe_alfu3_saLY,1341
595
- omlish/text/minja.py,sha256=KAmZ2POcLcxwF4DPKxdWa16uWxXmVz1UnJXLSwt4oZo,5761
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.dev194.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
599
- omlish-0.0.0.dev194.dist-info/METADATA,sha256=nhNsVPo6hNygJ8DxnRbJE-iqP-emALofRYUylUQkyJc,4264
600
- omlish-0.0.0.dev194.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
601
- omlish-0.0.0.dev194.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
602
- omlish-0.0.0.dev194.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
603
- omlish-0.0.0.dev194.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (75.7.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -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
- )
@@ -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