MeUtils 2025.4.18.14.53.20__py3-none-any.whl → 2025.4.19.13.52.36__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.
- {MeUtils-2025.4.18.14.53.20.dist-info → MeUtils-2025.4.19.13.52.36.dist-info}/METADATA +263 -263
- {MeUtils-2025.4.18.14.53.20.dist-info → MeUtils-2025.4.19.13.52.36.dist-info}/RECORD +21 -21
- meutils/_utils.py +9 -4
- meutils/apis/baidu/bdaitpzs.py +3 -1
- meutils/apis/images/recraft.py +7 -5
- meutils/apis/oneapi/channel.py +1 -1
- meutils/apis/proxy/kdlapi.py +4 -4
- meutils/apis/volcengine_apis/images.py +3 -1
- meutils/caches/acache.py +30 -32
- meutils/caches/common.py +15 -7
- meutils/data/VERSION +1 -1
- meutils/decorators/contextmanagers.py +24 -34
- meutils/io/files_utils.py +20 -16
- meutils/llm/openai_polling/chat.py +43 -7
- meutils/notice/feishu.py +12 -8
- meutils/schemas/oneapi/common.py +8 -2
- meutils/serving/fastapi/dependencies/headers.py +1 -1
- {MeUtils-2025.4.18.14.53.20.dist-info → MeUtils-2025.4.19.13.52.36.dist-info}/LICENSE +0 -0
- {MeUtils-2025.4.18.14.53.20.dist-info → MeUtils-2025.4.19.13.52.36.dist-info}/WHEEL +0 -0
- {MeUtils-2025.4.18.14.53.20.dist-info → MeUtils-2025.4.19.13.52.36.dist-info}/entry_points.txt +0 -0
- {MeUtils-2025.4.18.14.53.20.dist-info → MeUtils-2025.4.19.13.52.36.dist-info}/top_level.txt +0 -0
@@ -249,7 +249,7 @@ examples/wget/demo.py,sha256=b-wASDBKND8_TtdIorNXV45sMjbWnfsYCBVk6XXee3o,438
|
|
249
249
|
examples/wget/progress_bar/__init__.py,sha256=mlmNLOEplBy1h_Me-UWbgidVNrkie5okV1A8HQ0Ihy8,271
|
250
250
|
examples/文档智能/__init__.py,sha256=JKHlkF5vTvwFJnFLIT7raQxsvBoK12b8lvVz-c03Uec,271
|
251
251
|
meutils/__init__.py,sha256=X_i77Bvnt4-c4XUwuzGZTvXP2doPtTBqQsHl9DE455E,348
|
252
|
-
meutils/_utils.py,sha256=
|
252
|
+
meutils/_utils.py,sha256=bnT4-8C_o4ctat-iWAMzaGX21ppjkr0WI-YSOaqf5HA,2107
|
253
253
|
meutils/cache_utils.py,sha256=6vz3G8wZ5iOXH91J-dp7ciU_BuLDzjjQUi4Hl8rrzOY,8425
|
254
254
|
meutils/common.py,sha256=3Baz2iIIgrMCdxkSZCtLOlvihcLMGMLIeS2Du6vAhhg,16851
|
255
255
|
meutils/date_utils.py,sha256=--rh58qfa2iagLjgA0eh1myyvaZ0hgxHiy-WCsrNsuk,2497
|
@@ -344,7 +344,7 @@ meutils/apis/audio/__init__.py,sha256=y7Rpn90LocHhA0ywrDP_fT4QAK7sr4JsIX5wLJgkNH
|
|
344
344
|
meutils/apis/audio/deepinfra.py,sha256=O-IpAnHfx25QCjhB5xaIYVBy5AbyPzmVz-Pr40gpnsM,1773
|
345
345
|
meutils/apis/audio/fish.py,sha256=jPvTveRcDtvGDgRT6EA9WJitAQxftneHxvEJ63yY_cM,8392
|
346
346
|
meutils/apis/baidu/__init__.py,sha256=XPkz3DHrDdxCneaZct3y7MaX0Aw9IIseOYOn1YuVBII,243
|
347
|
-
meutils/apis/baidu/bdaitpzs.py,sha256=
|
347
|
+
meutils/apis/baidu/bdaitpzs.py,sha256=d8UStmi0ABEr8Zy1uoTux-ryAs2aw3XNwAJSRhi40BQ,12685
|
348
348
|
meutils/apis/baidu/test.py,sha256=nb9ivelHIw84-d1V-MNGRpGoTpLFsNXPk-TTKpjwOfQ,2058
|
349
349
|
meutils/apis/chatglm/__init__.py,sha256=uFuc9qY-ZjGqbsfcdGZkcEkhjATojWpzk2WXTTujc70,271
|
350
350
|
meutils/apis/chatglm/glm_video.py,sha256=9LA9pyeIcDDHXGhJbZSJfjxrLeNC3SIuCKJwDIXRKR8,14015
|
@@ -395,7 +395,7 @@ meutils/apis/images/deepinfra.py,sha256=lMqfU0LIXEzHiAS31dCcoTnPIE6tpoDJhq61H0TV
|
|
395
395
|
meutils/apis/images/demo.py,sha256=Cjk-EKMKbp44czykW_44qR0TzElX8nNCALqXBBw5sJA,4405
|
396
396
|
meutils/apis/images/edits.py,sha256=4DDBkr-n_5F6N1bLkSS2puznyPv1cROFhohZc7wVSpY,10155
|
397
397
|
meutils/apis/images/eidt.py,sha256=s8IBbCjwwoogIUf-d2O7nkawUmly9n19nvLYPaLEeg4,1217
|
398
|
-
meutils/apis/images/recraft.py,sha256=
|
398
|
+
meutils/apis/images/recraft.py,sha256=E-hr6lCzqA6z732DPwbtZFTlu-g04aQ7rHk8OUPyg54,72356
|
399
399
|
meutils/apis/images/flux/__init__.py,sha256=W_PZabQm6EmtJYmzEiEpL_WCXTAW0AiJ-t_n5UTrE8c,271
|
400
400
|
meutils/apis/images/flux/fluxpro.py,sha256=NFl9t9C3R3jsNJpez4o9tOz3r-fjRXj-vKMxCSTRDTU,4022
|
401
401
|
meutils/apis/images/flux/mystic.py,sha256=cUkqaMAbd3dSBCvFEoNBBoEoWCGzvBJWPEkEq1Q8xzw,3616
|
@@ -438,7 +438,7 @@ meutils/apis/monica/llm.py,sha256=gYyBPOTvmoNFaa1KmW3OlSsRKeN7C97EyPUa264nJ08,26
|
|
438
438
|
meutils/apis/napkin/__init__.py,sha256=EWwpRJEbN46d6Dk9PHAZvsYmqD_EOK0jjKQL1kYtcKs,271
|
439
439
|
meutils/apis/napkin/icons.py,sha256=_L8EaSeQ6ChT5w7q3jnj_AcRhKvNiBg3-qUKo9JQ12o,2217
|
440
440
|
meutils/apis/oneapi/__init__.py,sha256=wg_kqNkFqOkP70vnOHvAeKREps57Rqliu5yKC0gsgLk,284
|
441
|
-
meutils/apis/oneapi/channel.py,sha256=
|
441
|
+
meutils/apis/oneapi/channel.py,sha256=o-nNTrTUObWhhkYp23pFqSNKXNRYpQhlm9FPkmiJplU,2039
|
442
442
|
meutils/apis/oneapi/common.py,sha256=AIs8ro-1qui3FG42msBY6dL_zt9QJ0jS63qtp-XTlY4,3617
|
443
443
|
meutils/apis/oneapi/log.py,sha256=dOmyldX5DyJO7mMw4EzYorTIsdLKqZ3AZiV0z0tEpWE,1377
|
444
444
|
meutils/apis/oneapi/token.py,sha256=LaKwkHXNvF46wXEVtbSNwfi0ujuQo7oRyln39MOPKX0,1638
|
@@ -450,7 +450,7 @@ meutils/apis/pixverse/pixverse.py,sha256=dvnyYVUXCEY_cLnmX9lvq9TesvplCMCuJmmP7Sh
|
|
450
450
|
meutils/apis/proxy/__init__.py,sha256=by7_6GT3xeDjAWLLqbw8uvGaZ3RdprEW-zJ2DFLOdwA,271
|
451
451
|
meutils/apis/proxy/demo.py,sha256=-huvtmltbKXa6cS77k61ts-Kjd5ccSAgXzNrotIvIKA,1642
|
452
452
|
meutils/apis/proxy/ips.py,sha256=3McLniROteSBqAtcMH8xKbUBfhVc4ZyGuRwMvgEryKg,5023
|
453
|
-
meutils/apis/proxy/kdlapi.py,sha256=
|
453
|
+
meutils/apis/proxy/kdlapi.py,sha256=1JDknUVBQDQgGeNIdxNcVjyH1j_0EurJ1B-U8V3RBPs,1557
|
454
454
|
meutils/apis/remini/__init__.py,sha256=8TbAnbI_bDfH8g0Y9EHXHBum7C0rZt9MzgAAz_MbAeI,271
|
455
455
|
meutils/apis/remini/remini.py,sha256=bJjvtqrCNlAu7No4gYGjoWAM0ch6dCsofYSy2jPZrXg,4239
|
456
456
|
meutils/apis/replicateai/__init__.py,sha256=PK7e7-xhn5aj5WOyGHLzpsHQvpeM5uTOiMylvj40ZmU,272
|
@@ -507,7 +507,7 @@ meutils/apis/voice_clone/__init__.py,sha256=y7Rpn90LocHhA0ywrDP_fT4QAK7sr4JsIX5w
|
|
507
507
|
meutils/apis/voice_clone/fish.py,sha256=6m8zcS2KEqmalKy2ArnOaNovyxsQp_sw4d_O1kVZR2s,7146
|
508
508
|
meutils/apis/voice_clone/fish_api.py,sha256=pDpE-B8HFiGIOV3NVd1HmFrCC2GQc3wH-81oNbTS0mY,307
|
509
509
|
meutils/apis/volcengine_apis/__init__.py,sha256=PnngoI3Qk6n_axdOLgENCFYlKsmohgzYVW1HUg7L8gI,271
|
510
|
-
meutils/apis/volcengine_apis/images.py,sha256=
|
510
|
+
meutils/apis/volcengine_apis/images.py,sha256=lFuwFjHKYnoYnC-9PKWgox3LOZGCZMivWUJ8I5rTfPM,5117
|
511
511
|
meutils/async_task/__init__.py,sha256=45cUr-GWvQ1JFYGOYPOIkHLyTR3JbfP_PEYrmktpMLo,367
|
512
512
|
meutils/async_task/celery_config.py,sha256=BX1h3jY34aO6UmUFakdBUwOdsEiOxCGuUtYDUKFtafc,3461
|
513
513
|
meutils/async_task/common.py,sha256=ZJ4e0CsEJf1ppPmGSwPCwhZBAkUL5xsi_t1ny-bJuko,845
|
@@ -527,8 +527,8 @@ meutils/async_utils/background.py,sha256=dl6UaMIFBZDB1uxSZzGFJdSnpt3Xo0flK7gwsok
|
|
527
527
|
meutils/async_utils/common.py,sha256=bfZkUlQz21WHAh2W7SDxFtrvUYNBnRfVxIUgMmT7o1Q,5212
|
528
528
|
meutils/async_utils/test.py,sha256=lkZdgSzzgVg8hYVcaBNEJ3KBvFTEfjbXZVvtknQZsRQ,1155
|
529
529
|
meutils/caches/__init__.py,sha256=hIUEqNnmhukkbKK2F39bXe-MGDwzeUoTOf_sYly53xo,291
|
530
|
-
meutils/caches/acache.py,sha256=
|
531
|
-
meutils/caches/common.py,sha256=
|
530
|
+
meutils/caches/acache.py,sha256=iykItx1iSEmTTg8zmM02LZm09M-HuEDN413sKr15QLY,2900
|
531
|
+
meutils/caches/common.py,sha256=GvAPsXjZchhlBL8KczGAII6xAtUy_BqB7NmNLPWNHcc,1962
|
532
532
|
meutils/caches/redis_cache.py,sha256=oXGk_CZhjp9P_z1TG_zhmma4iGepK-iIWY_ZYQWSkFg,1395
|
533
533
|
meutils/caches/redis_mulit.py,sha256=WQrNmH98S0D9mG5eixqPtrYvOPi62T4w2ZvNETB4eU4,597
|
534
534
|
meutils/clis/__init__.py,sha256=2Fhn43X8kFP6FpAnnAMiPcdnjUwQaukiIr2uGB6mGAY,279
|
@@ -556,7 +556,7 @@ meutils/config_utils/lark_utils/demo.py,sha256=3g0Fs7oLaeW75T60gYWMLgyNg1OnfOjfH
|
|
556
556
|
meutils/config_utils/lark_utils/x.py,sha256=MlMQGhehP9xMEgetxVCX68XFaosfKoW1JA5cZ3JqN2w,1857
|
557
557
|
meutils/crawlers/__init__.py,sha256=TBU4xA-IOsHV-0yIkW7YXxn_QT7TT8NncqxO7IykEfs,271
|
558
558
|
meutils/data/SimHei.ttf,sha256=-XEnekS5yHP_URkT4XBI2w22ylV-KxudhkeIYFbrILA,10062565
|
559
|
-
meutils/data/VERSION,sha256=
|
559
|
+
meutils/data/VERSION,sha256=l_srvdhRZQK6C91QKKv188SIHfXIQN46T8Mq-TWrgos,19
|
560
560
|
meutils/data/_FLAG,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
561
561
|
meutils/data/_SUCCESS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
562
562
|
meutils/data/__init__.py,sha256=Hfwkkxs4zHqKhxht0YrhS566a9P5axtmgNvM5wF8ceQ,243
|
@@ -576,7 +576,7 @@ meutils/decorators/__init__.py,sha256=hgpHo40pfFWYXEnrW74o8W7SIfCD0GHr3gnujBw1hI
|
|
576
576
|
meutils/decorators/cache.py,sha256=-sqhCuiSYZK1UtsRw7bBog19G65O9N27DVTAp_nlBk4,2972
|
577
577
|
meutils/decorators/catch.py,sha256=JMYXNQ-9P0qic-Jtjtm8o9gCisTvDeUvVkSbPZxcdUM,1555
|
578
578
|
meutils/decorators/common.py,sha256=Y-6FIQf4GqllYOGmyzorrLFEbx3MguLsjFmWcnbIaKg,14334
|
579
|
-
meutils/decorators/contextmanagers.py,sha256=
|
579
|
+
meutils/decorators/contextmanagers.py,sha256=DXInOzFrRF2k00lvtTT1wTOnng4c6Ul6fCUU0scVtdg,5000
|
580
580
|
meutils/decorators/decorator.py,sha256=njwKhWhnvAXgHd_8h50V5jj5XZoK7_HM12rFDlmXc8c,15570
|
581
581
|
meutils/decorators/decorator_demo.py,sha256=JLCulTW04uYHzLg6jRxVseaAdU-YeyL8Z2p-e_y-rsg,754
|
582
582
|
meutils/decorators/demo.py,sha256=VmHYNkQQG_CT8js3uxXCaO7HmBbvVy0bQeE7QgPDdTw,1980
|
@@ -603,7 +603,7 @@ meutils/init/evn.py,sha256=GPw9Un8YbgYJmjwd-uYWQ8JeVr6pRxwyYbDv3W8fb1s,1588
|
|
603
603
|
meutils/init/oo.py,sha256=jXWaCWWFYVPGgTIas47Z3J7sIq-CD7DyK6fKDBsq8GA,12884
|
604
604
|
meutils/io/__init__.py,sha256=uW43ZfdWu7adRvwvcTzUGtn4CseRmbzEJdlZV-oqHEA,2107
|
605
605
|
meutils/io/_openai_files.py,sha256=UIiu6Zg7iSFIn1xIcpLznFlnfCxAJFGuvuPtxvTNHfI,1005
|
606
|
-
meutils/io/files_utils.py,sha256=
|
606
|
+
meutils/io/files_utils.py,sha256=PoWfh2L6bC5QrS5fBPoVOEhwjuIJrswBEbhAB0wClfA,8660
|
607
607
|
meutils/io/image.py,sha256=BJmYzx7o66X7C32gOfVmfr5tBRXOi0IYQY7BpGLsGrg,6926
|
608
608
|
meutils/io/minio_utils.py,sha256=i1YuxwDJzLse0smMXuPqnD1wirBBb8psmB_kd1oPoVU,1274
|
609
609
|
meutils/io/openai_files.py,sha256=wi4qp-olva8aF6AfBiUBfb_QlHzHolJJbH4UbHpRrB0,6032
|
@@ -674,7 +674,7 @@ meutils/llm/completions/rag/qwen.py,sha256=1dBNLLbQDRsM-7EGaStcWFU8HRa-rp3RxJ9cp
|
|
674
674
|
meutils/llm/completions/rag/rag.py,sha256=mnC4bZUMuNYuPFXMBqXMofj_ms8uP5MMw1leJ5jXA_k,1209
|
675
675
|
meutils/llm/functions/__init__.py,sha256=It6pcNwRBSh3Em45ooi61lc5tFg8eOYv0BvEFuRjSGQ,271
|
676
676
|
meutils/llm/openai_polling/__init__.py,sha256=qmAMITPtrTD-y57RiJXewuOic7iLKBhx8mz5uvcxsy8,270
|
677
|
-
meutils/llm/openai_polling/chat.py,sha256=
|
677
|
+
meutils/llm/openai_polling/chat.py,sha256=l8qRBFlVd-asLWAphMfNAArswDPmgH0ny3FqoVF5xOo,6592
|
678
678
|
meutils/llm/openai_polling/images.py,sha256=qKMk3vCvamS_48ceC-_y2LPpP5XsD476FHG9MUu8kks,1042
|
679
679
|
meutils/llm/openai_utils/__init__.py,sha256=MWyNhP2K49oaHGEZlInZc3XlwqlStFultP8k7HDPAwk,290
|
680
680
|
meutils/llm/openai_utils/common.py,sha256=GGctOMlg8xT2A5H-8hMow0VfOZHCDdIPjd12597Nohs,9754
|
@@ -690,7 +690,7 @@ meutils/logging/log_utils.py,sha256=Sa5-Y4fWNTKQw2fIb1dbPgOypl6S6m7EOrbciSqEt5A,
|
|
690
690
|
meutils/logging/logger.py,sha256=-J_tWYfAvPhSTshVWIiN-6zTZnjkFuwDfMtxUtuNkuY,6183
|
691
691
|
meutils/notice/__init__.py,sha256=BVbcBx4ks-BH_63gEcjMxL67oX1_aWdaM8r3TDo8Ogg,248
|
692
692
|
meutils/notice/emails.py,sha256=TvC1xv3MpFC2HU0lTQW5SmNuj7UMlgjpsUImMp9jKOw,2403
|
693
|
-
meutils/notice/feishu.py,sha256=
|
693
|
+
meutils/notice/feishu.py,sha256=Sp3gaxDiUFHc_XvFRZFbN-g1zu3hxybq4U0gr599TrY,4417
|
694
694
|
meutils/notice/file_post.py,sha256=KQ8iQUM30vF7T6ZZPahdLps4dLXK2s3nzdFYbty6M5E,953
|
695
695
|
meutils/notice/load_emailfile - 副本.py,sha256=f-Kq3UKZut_P0bmumV1y4PXuPtatjl-5SLUH5LShBUY,7331
|
696
696
|
meutils/notice/wechat.py,sha256=-HU5oSvpZrVnjjU76ky7_j0yg5ivn5mIlJ7JJVtlrnY,4082
|
@@ -818,7 +818,7 @@ meutils/schemas/db/__init__.py,sha256=m1maURVoM6dIW0yt6ELZrZTzULtkHybVOSXtHNJRVI
|
|
818
818
|
meutils/schemas/db/oneapi_types.py,sha256=3t2m0H80saEXmYUZfVFrtEaY117GjZTsSa1GKgkJzqQ,3896
|
819
819
|
meutils/schemas/oneapi/__init__.py,sha256=uevbi3QAvFzN9WPbx9bYKTDyKt7P2ueZO6W0nSiD0sk,289
|
820
820
|
meutils/schemas/oneapi/_types.py,sha256=ClvAaNy3SahEN8lL8KEErHTD6HANelXUeKc_3iLfosQ,1488
|
821
|
-
meutils/schemas/oneapi/common.py,sha256=
|
821
|
+
meutils/schemas/oneapi/common.py,sha256=UMc9oftLv-DK-YO7r8DOa30y-rRkgPD6rC03L_Z5Eyo,35496
|
822
822
|
meutils/schemas/oneapi/icons.py,sha256=T7W5gInBJoHe62wzMimbG_UI-wn3_-rmQ1O4O2z-CQY,1089
|
823
823
|
meutils/schemas/oneapi/model_group_info.py,sha256=rGtflYJuFIjk5MsVEvK9JUR4IciX8jfErqeLqf8DIlQ,1586
|
824
824
|
meutils/schemas/oneapi/model_info.py,sha256=_uwKEPIIqm7ZYfhmpxtXB2QNsS83SpJY-OaBzvogC9w,772
|
@@ -844,7 +844,7 @@ meutils/serving/fastapi/__demo/__init__.py,sha256=TxXjqy2ZxAkadPxqN92Xq3ixCUYkQ-
|
|
844
844
|
meutils/serving/fastapi/__demo/异步任务.py,sha256=60_ruA4ljlTLIP5zxcejmm9WJ0SDuqpsO49SZK9vA_s,1444
|
845
845
|
meutils/serving/fastapi/dependencies/__init__.py,sha256=TQcxvWqZdA2jZZX84NtAij-bhS7ihcMLx1-xsbSpV4g,384
|
846
846
|
meutils/serving/fastapi/dependencies/auth.py,sha256=3dgfBLbu6VdzB1-7vaEtfXy6oOawIcGiaQZU2fBNXZM,2166
|
847
|
-
meutils/serving/fastapi/dependencies/headers.py,sha256=
|
847
|
+
meutils/serving/fastapi/dependencies/headers.py,sha256=ddifDCJyELqfPwuUX12x-lH0KNylu2iidc7Mupcvl6k,922
|
848
848
|
meutils/serving/fastapi/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
849
849
|
meutils/serving/fastapi/exceptions/http_error.py,sha256=-cBBWNJH3qp1GMSaa9AlojJ18lBLFEk0KHoGUnmV3u4,2601
|
850
850
|
meutils/serving/fastapi/exceptions/validation_error.py,sha256=Q71wYfzGsVjLA-SQ3R5a8iT0kDG01mwriVUXHhvsTv0,1234
|
@@ -947,9 +947,9 @@ meutils/tools/seize.py,sha256=nOKAS63w-Lbi48I0m2MPhdsokUTwxco0laPxYVmW4Mw,1064
|
|
947
947
|
meutils/tools/service_monitor.py,sha256=ibsLtBN2g2DL7ZnLJ8vhiZOiOcqTAyx711djDdBK-3M,1255
|
948
948
|
meutils/tools/sys_monitor.py,sha256=6MoyzrItqDUOSjfHcMJmMofQkEPTW36CT_aKui0rg84,429
|
949
949
|
meutils/tools/token_monitor.py,sha256=Np-YK-R4P4IPAXyZvMxwvXI4sFmNJQAQK1lSegNaYpA,997
|
950
|
-
MeUtils-2025.4.
|
951
|
-
MeUtils-2025.4.
|
952
|
-
MeUtils-2025.4.
|
953
|
-
MeUtils-2025.4.
|
954
|
-
MeUtils-2025.4.
|
955
|
-
MeUtils-2025.4.
|
950
|
+
MeUtils-2025.4.19.13.52.36.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
951
|
+
MeUtils-2025.4.19.13.52.36.dist-info/METADATA,sha256=ljsvi_qp_xMGVNMji003BG00arcfVl8djOoauFm_1PI,32834
|
952
|
+
MeUtils-2025.4.19.13.52.36.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
953
|
+
MeUtils-2025.4.19.13.52.36.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
|
954
|
+
MeUtils-2025.4.19.13.52.36.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
|
955
|
+
MeUtils-2025.4.19.13.52.36.dist-info/RECORD,,
|
meutils/_utils.py
CHANGED
@@ -45,14 +45,15 @@ list4log = lambda ls: "\n\t" + "\n\t".join(ls)
|
|
45
45
|
|
46
46
|
|
47
47
|
def bjson(json_data):
|
48
|
-
if isinstance(json_data,
|
48
|
+
if isinstance(json_data, (str,)):
|
49
|
+
json_data = {"metadata": json_data}
|
50
|
+
|
51
|
+
if isinstance(json_data, (dict, list)):
|
49
52
|
return json.dumps(json_data, indent=4, ensure_ascii=False)
|
53
|
+
|
50
54
|
elif isinstance(json_data, BaseModel):
|
51
55
|
return json_data.model_dump_json(indent=4)
|
52
56
|
|
53
|
-
else:
|
54
|
-
return json_data
|
55
|
-
|
56
57
|
|
57
58
|
dict2json = bjson
|
58
59
|
json2dict = lambda s: json.loads(s.replace("'", '"'))
|
@@ -98,3 +99,7 @@ def dict_merge(dicts):
|
|
98
99
|
for k, v in d.items():
|
99
100
|
dic.setdefault(k, []).append(v)
|
100
101
|
return dic
|
102
|
+
|
103
|
+
|
104
|
+
if __name__ == '__main__':
|
105
|
+
print(bjson('xx'))
|
meutils/apis/baidu/bdaitpzs.py
CHANGED
@@ -64,6 +64,8 @@ async def create_task(
|
|
64
64
|
"proxy": await get_one_proxy()
|
65
65
|
}
|
66
66
|
|
67
|
+
logger.debug(request_kwargs)
|
68
|
+
|
67
69
|
async with httpx.AsyncClient(base_url=BASE_URL, headers=headers, timeout=100, **request_kwargs) as client:
|
68
70
|
|
69
71
|
response = await client.post('/aigc/pccreate', data=payload)
|
@@ -205,7 +207,7 @@ if __name__ == '__main__':
|
|
205
207
|
# # token='BAIDUID=F2185337B2F3F85DAB5D2E661BC00C8D:FG=1; BDUSS=hNQkdpbjBOT05EVjRCSFp3TUF-TXFKWHktcFppUGNyd0xZZGp3Mkp6TmVnbFptSVFBQUFBJCQAAAAAAAAAAAEAAACsbZVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF71LmZe9S5mOX; BDUSS_BFESS=hNQkdpbjBOT05EVjRCSFp3TUF-TXFKWHktcFppUGNyd0xZZGp3Mkp6TmVnbFptSVFBQUFBJCQAAAAAAAAAAAEAAACsbZVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF71LmZe9S5mOX; MAWEBCUID=web_axHhqlIWargVQsXuskqOnMzVXDWQHqQXOpFPkPVSvXFIwTNYaC; PSTM=1716434076; BIDUPSID=5FEB509ECAE0F7843030FD4ECC0800F8; newlogin=1; MCITY=-315%3A; H_WISE_SIDS_BFESS=60360_60674; indexPageSugList=%5B%22%E8%AF%81%E4%BB%B6%E7%85%A7%20%E7%94%B7%22%2C%22%E6%85%88%E7%A6%A7%E5%92%8C%E6%9D%8E%E8%8E%B2%E8%8B%B1%22%2C%22%E7%AE%80%E9%A1%BF%E7%81%AF%E5%85%B7%20%E9%81%A5%E6%8E%A7%E5%99%A8%22%2C%22%E5%88%B0%E5%BD%93%E9%81%93%E5%A3%AB%E9%82%A3%E4%BA%9B%E5%B9%B4%20%E8%B1%86%E7%93%A3%22%2C%22%E9%81%93%E5%A3%AB%20%E5%8D%A1%E9%80%9A%22%2C%22%E9%81%93%E5%A3%AB%22%2C%22%E6%88%91%E5%BD%93%E9%81%93%E5%A3%AB%E9%82%A3%E4%BA%9B%E5%B9%B4%22%2C%22%E8%AF%BB%E6%9E%B6%22%2C%22%E6%9D%B0%E8%AF%BA%E6%AF%94%E5%88%A9%20%E5%AF%B9%E6%AF%94%E7%85%A7%20%E5%8D%95%E8%86%9D%E8%B7%AA%E5%9C%B0%22%5D; BAIDUID_BFESS=F2185337B2F3F85DAB5D2E661BC00C8D:FG=1; BDRCVFR[C0p6oIjvx-c]=I67x6TjHwwYf0; delPer=0; PSINO=5; BDRCVFR[C0sZzZJZb70]=mk3SLVN4HKm; BA_HECTOR=alal0125ah0h0h0l8k8l0l01blu4191jd049m1u; ZFY=C8vEYu7ZbY0zTEITG3A0aWCevri4:BT:B0H1NpNZdQWKM:C; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=60360_60674_60683_60694_60572; BCLID=11757829139010941756; BCLID_BFESS=11757829139010941756; BDSFRCVID=pZCOJexroG3bGRntFj9auQWaJgKKv3JTDYLE8yu9T4VNR5DVYtg8EG0Pt_ZYMak-XolpogKKL2OTHm_F_2uxOjjg8UtVJeC6EG0Ptf8g0M5; BDSFRCVID_BFESS=pZCOJexroG3bGRntFj9auQWaJgKKv3JTDYLE8yu9T4VNR5DVYtg8EG0Pt_ZYMak-XolpogKKL2OTHm_F_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF=tJkH_KthJIP3e4515Pr_q4tJbq58etJXfaO4Vp7F54nKDp0R0JbI0J0h5p6vaP3m066MaM-ELDOxsMT4QfJJhxuH-qoKel5tQH5MXprN3KJmf-Op2hO0ytDNbHOE2-biW2tH2Mbdax7P_IoG2Mn8M4bb3qOpBtQmJeTxoUJ25DnJhhCGe6KbD6bQDH8Oq-jeHDrKBRbaHJOoDDv8QxRcy4LbKxnxJhoe0H6JXt3LBJnfEpjlbURxqqjy3-OkbfQ9babTQ-tbBp3k8MQXbn7FQfbQ0hOe5RvnMe5a2JK2MJ7JOpvsDxnxy-umQRPH-Rv92DQMVU52QqcqEIQHQT3m5-5bbN3ut6IHJbufoID2fIvDqTrP-trf5DCShUFs5J3dB2Q-XPoO3KOGqpoh5b6b2xKJb-bCb4biQPjNoMbgy4op8P3y0bb2DUA1y4vpX4bOBeTxoUJ2-bjWS-cV-xTqjbIebPRiWTj9QgbLMhQ7tt5W8ncFbT7l5hKpbt-q0x-jLTnhVn0MBCK0MD8xDT8Bj6Pq5fcj2nQXK4_tVTrJabC3qMcJXU6q2bDeQNba0hjXbgcBVRjaLx3HOR3oynD5yl0vWtv4qnctfGPJ-qr4Jlb4otbTeMonDh83Bn6kW4oWHGbyWPJO5hvv8KoO3M7VBUKmDloOW-TB5bbPLUQF5l8-sq0x0bOte-bQXH_E5bj2qRAHoK-h3j; H_BDCLCKID_SF_BFESS=tJkH_KthJIP3e4515Pr_q4tJbq58etJXfaO4Vp7F54nKDp0R0JbI0J0h5p6vaP3m066MaM-ELDOxsMT4QfJJhxuH-qoKel5tQH5MXprN3KJmf-Op2hO0ytDNbHOE2-biW2tH2Mbdax7P_IoG2Mn8M4bb3qOpBtQmJeTxoUJ25DnJhhCGe6KbD6bQDH8Oq-jeHDrKBRbaHJOoDDv8QxRcy4LbKxnxJhoe0H6JXt3LBJnfEpjlbURxqqjy3-OkbfQ9babTQ-tbBp3k8MQXbn7FQfbQ0hOe5RvnMe5a2JK2MJ7JOpvsDxnxy-umQRPH-Rv92DQMVU52QqcqEIQHQT3m5-5bbN3ut6IHJbufoID2fIvDqTrP-trf5DCShUFs5J3dB2Q-XPoO3KOGqpoh5b6b2xKJb-bCb4biQPjNoMbgy4op8P3y0bb2DUA1y4vpX4bOBeTxoUJ2-bjWS-cV-xTqjbIebPRiWTj9QgbLMhQ7tt5W8ncFbT7l5hKpbt-q0x-jLTnhVn0MBCK0MD8xDT8Bj6Pq5fcj2nQXK4_tVTrJabC3qMcJXU6q2bDeQNba0hjXbgcBVRjaLx3HOR3oynD5yl0vWtv4qnctfGPJ-qr4Jlb4otbTeMonDh83Bn6kW4oWHGbyWPJO5hvv8KoO3M7VBUKmDloOW-TB5bbPLUQF5l8-sq0x0bOte-bQXH_E5bj2qRAHoK-h3j; BDRCVFR[dG2JNJb_ajR]=mk3SLVN4HKm; userFrom=null; BDRCVFR[-pGxjrCMryR]=mk3SLVN4HKm; ab_sr=1.0.1_NTY4Y2RjNTU5MWYzM2IyZjY4M2EzMWNjYWM1MWRhYjdlZDhmZTdkZGQ1NGE0MGFkZDU0NWQzNTU1OWJiZDllZmU4YjcyZDIyNTJiNzYxOWQ4OGM1MjQ2ODQzYTM2OGQ3YjdkMzQxZWI4Y2U5ZjQ3ZWZkYTQ2M2I3Yzc2MDkxMjBhZjczODNjMDNmNTAxMzhiZDg2ZmU0MTIwZTUxYWMxNQ==; H_WISE_SIDS=60360_60674_60683_60694_60572'
|
206
208
|
# request = BDAITPZSRequest(original_url=url, thumb_url=url)
|
207
209
|
|
208
|
-
url = "https://
|
210
|
+
url = "https://oss.ffire.cc/files/shuiyin.jpg"
|
209
211
|
|
210
212
|
request = BDAITPZSRequest(
|
211
213
|
type="1",
|
meutils/apis/images/recraft.py
CHANGED
@@ -43,7 +43,8 @@ async def get_access_token(token: str):
|
|
43
43
|
|
44
44
|
|
45
45
|
async def edit_image(image, task: Literal["vectorize", "super_resolution",] = "super_resolution"):
|
46
|
-
token = await get_next_token_for_polling(feishu_url=FEISHU_URL, check_token=check_token, from_redis=True
|
46
|
+
token = await get_next_token_for_polling(feishu_url=FEISHU_URL, check_token=check_token, from_redis=True,
|
47
|
+
min_points=1)
|
47
48
|
token = await get_access_token(token)
|
48
49
|
headers = {"Authorization": f"Bearer {token}"}
|
49
50
|
|
@@ -142,13 +143,14 @@ async def check_token(token, threshold: float = 1):
|
|
142
143
|
response = await client.get("/users/me")
|
143
144
|
response.raise_for_status()
|
144
145
|
data = response.json()
|
145
|
-
logger.debug(data)
|
146
|
-
|
146
|
+
# logger.debug(data)
|
147
|
+
_ = data["credits"] >= threshold
|
148
|
+
_ or logger.debug(data["credits"])
|
149
|
+
return _
|
147
150
|
|
148
|
-
return data["credits"] >= threshold
|
149
151
|
except Exception as e:
|
150
152
|
logger.error(e)
|
151
|
-
logger.debug(token)
|
153
|
+
# logger.debug(token)
|
152
154
|
return False
|
153
155
|
|
154
156
|
|
meutils/apis/oneapi/channel.py
CHANGED
@@ -42,7 +42,7 @@ async def edit_channel(models, token: Optional[str] = None):
|
|
42
42
|
"auto_ban": 0,
|
43
43
|
"other_info": "",
|
44
44
|
|
45
|
-
"group": "default,china", # ','.join(GROUP_RATIO),
|
45
|
+
"group": "default,openai,china,chatfire,enterprise", # ','.join(GROUP_RATIO),
|
46
46
|
"groups": ['default']
|
47
47
|
}
|
48
48
|
headers = {
|
meutils/apis/proxy/kdlapi.py
CHANGED
@@ -5,11 +5,11 @@ from meutils.pipe import *
|
|
5
5
|
from meutils.caches import rcache
|
6
6
|
from meutils.decorators.retry import retrying
|
7
7
|
|
8
|
-
username = "d1999983904"
|
8
|
+
username = "d1999983904" # 包月
|
9
9
|
password = "1h29rymg"
|
10
10
|
|
11
11
|
|
12
|
-
@rcache(ttl=60 -
|
12
|
+
@rcache(ttl=60 - 20)
|
13
13
|
@retrying()
|
14
14
|
async def get_proxy_list():
|
15
15
|
secret_id = os.getenv("KDLAPI_SECRET_ID") or "owklc8tk3ypo00ohu80o"
|
@@ -35,8 +35,8 @@ if __name__ == '__main__':
|
|
35
35
|
|
36
36
|
|
37
37
|
async def fetch(url):
|
38
|
-
|
39
|
-
proxy="http://154.9.253.9:38443"
|
38
|
+
proxy = await get_one_proxy()
|
39
|
+
# proxy = "http://154.9.253.9:38443"
|
40
40
|
|
41
41
|
async with httpx.AsyncClient(proxy=proxy, timeout=20) as client:
|
42
42
|
resp = await client.get(url)
|
@@ -12,6 +12,7 @@ https://www.volcengine.com/docs/85128/1526761
|
|
12
12
|
Seedream 通用3.0文生图模型是基于字节跳动视觉大模型打造的新一代文生图模型,本次升级模型综合能力(图文,结构,美感)均显著提升。V3.0参数量更大,对语义有更好的理解,实体结构也更加自然真实,支持 2048 以下分辨率直出,各类场景下的效果均大幅提升。
|
13
13
|
https://www.volcengine.com/docs/6791/1384311
|
14
14
|
"""
|
15
|
+
import os
|
15
16
|
|
16
17
|
from meutils.pipe import *
|
17
18
|
from meutils.io.files_utils import to_url
|
@@ -83,6 +84,7 @@ async def generate(request: ImageRequest, token: Optional[str] = None):
|
|
83
84
|
|
84
85
|
|
85
86
|
if __name__ == '__main__':
|
87
|
+
token = f"""{os.getenv("VOLC_ACCESSKEY")}|{os.getenv("VOLC_SECRETKEY")}"""
|
86
88
|
prompt = """
|
87
89
|
3D魔童哪吒 c4d 搬砖 很开心, 很快乐, 精神抖擞, 背景是数不清的敖丙虚化 视觉冲击力强 大师构图 色彩鲜艳丰富 吸引人 背景用黄金色艺术字写着“搬砖挣钱” 冷暖色对比
|
88
90
|
"""
|
@@ -98,7 +100,7 @@ if __name__ == '__main__':
|
|
98
100
|
response_format="url",
|
99
101
|
)
|
100
102
|
|
101
|
-
arun(generate(request))
|
103
|
+
arun(generate(request, token=token))
|
102
104
|
|
103
105
|
# with timer():
|
104
106
|
# visual_service = VisualService()
|
meutils/caches/acache.py
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
import os
|
11
11
|
|
12
12
|
from meutils.pipe import *
|
13
|
-
from meutils.
|
13
|
+
from meutils.caches import cache, rcache
|
14
14
|
|
15
15
|
from aiocache import cached, Cache, RedisCache, caches
|
16
16
|
from aiocache import multi_cached
|
@@ -21,31 +21,6 @@ from meutils.schemas.image_types import ImageRequest
|
|
21
21
|
REDIS_URL = "redis://:chatfirechatfire@110.42.51.143:6379"
|
22
22
|
|
23
23
|
|
24
|
-
def rcache(**kwargs): # todo
|
25
|
-
"""
|
26
|
-
:param endpoint: str with the endpoint to connect to. Default is "127.0.0.1".
|
27
|
-
:param port: int with the port to connect to. Default is 6379.
|
28
|
-
:param db: int indicating database to use. Default is 0.
|
29
|
-
:param password: str indicating password to use. Default is None.
|
30
|
-
"""
|
31
|
-
|
32
|
-
connection_kwargs = {}
|
33
|
-
if REDIS_URL := os.getenv("REDIS_URL"):
|
34
|
-
user_password, base_url = REDIS_URL.split("@")
|
35
|
-
endpoint, port = base_url.split(':')
|
36
|
-
password = user_password.split(":")[-1]
|
37
|
-
|
38
|
-
connection_kwargs['endpoint'] = endpoint
|
39
|
-
connection_kwargs['port'] = port
|
40
|
-
connection_kwargs['password'] = password
|
41
|
-
|
42
|
-
return cached(
|
43
|
-
cache=RedisCache,
|
44
|
-
**connection_kwargs,
|
45
|
-
**kwargs
|
46
|
-
)
|
47
|
-
|
48
|
-
|
49
24
|
@cached(ttl=60)
|
50
25
|
@cached(ttl=60)
|
51
26
|
async def cached_fc(user_id, **kwargs):
|
@@ -59,6 +34,7 @@ async def cached_fc(user_id, **kwargs):
|
|
59
34
|
# key_builder = lambda *args, **kwargs: args[0].prompt
|
60
35
|
key_builder = lambda *args, **kwargs: args[1].prompt
|
61
36
|
|
37
|
+
|
62
38
|
def key_builder(*args, **kwargs):
|
63
39
|
print(args)
|
64
40
|
return args[1].prompt
|
@@ -71,6 +47,28 @@ async def redis_fcc(user_id, **kwargs):
|
|
71
47
|
return False
|
72
48
|
|
73
49
|
|
50
|
+
skip_cache_func = lambda x: False
|
51
|
+
|
52
|
+
|
53
|
+
# def key_builder(*args, **kwargs):
|
54
|
+
# len(str(args[1]))
|
55
|
+
|
56
|
+
def skip_cache_func(*args, **kwargs):
|
57
|
+
logger.debug(f"skip_cache_func: {args} {kwargs}") # todo:缓存下载文件
|
58
|
+
return False
|
59
|
+
logger.debug(x)
|
60
|
+
|
61
|
+
|
62
|
+
@rcache(ttl=30, skip_cache_func=skip_cache_func)
|
63
|
+
async def skip_cache_fccc(*args, **kwargs):
|
64
|
+
logger.debug(f"第一次调用:{args} {kwargs}")
|
65
|
+
|
66
|
+
return # 没缓存
|
67
|
+
# return False # 缓存
|
68
|
+
# return True # 缓存
|
69
|
+
# return 'xxxxxxx' # 缓存
|
70
|
+
|
71
|
+
|
74
72
|
# @multi_cached(ttl=60) # 多key缓存
|
75
73
|
# async def complex_function(user_id, **kwargs):
|
76
74
|
# logger.debug(user_id)
|
@@ -120,13 +118,13 @@ if __name__ == '__main__':
|
|
120
118
|
|
121
119
|
from aiocache import cached, Cache, RedisCache, caches
|
122
120
|
|
121
|
+
fn = skip_cache_fccc
|
123
122
|
|
124
|
-
async def main():
|
125
|
-
for i in range(10):
|
126
|
-
# logger.debug(i)
|
127
123
|
|
128
|
-
|
129
|
-
|
124
|
+
async def main(fn):
|
125
|
+
for i in range(3):
|
126
|
+
_ = await fn(i)
|
127
|
+
# logger.debug(f"第{i}次: {_}")
|
130
128
|
|
131
129
|
|
132
|
-
arun(main())
|
130
|
+
arun(main(fn))
|
meutils/caches/common.py
CHANGED
@@ -15,6 +15,8 @@ from aiocache import cached, Cache, RedisCache, caches
|
|
15
15
|
|
16
16
|
cache = memory_cache = cached
|
17
17
|
|
18
|
+
RedisCache.delete_all = lambda *args, **kwargs: caches.get(RedisCache).clear(*args, **kwargs)
|
19
|
+
|
18
20
|
|
19
21
|
def rcache(**kwargs):
|
20
22
|
"""serializer="pickle"
|
@@ -54,23 +56,29 @@ if __name__ == '__main__':
|
|
54
56
|
|
55
57
|
@cache(ttl=10)
|
56
58
|
async def fn(a):
|
57
|
-
logger.debug(
|
59
|
+
logger.debug("第一次")
|
60
|
+
return a
|
61
|
+
|
62
|
+
|
63
|
+
@cached(ttl=60)
|
64
|
+
async def fn2(a):
|
65
|
+
logger.debug("第一次")
|
58
66
|
return a
|
59
67
|
|
60
68
|
|
61
69
|
# @cache(ttl=3)
|
62
70
|
@rcache(ttl=10)
|
63
71
|
async def mfn(a):
|
64
|
-
logger.debug(
|
72
|
+
logger.debug("第一次")
|
65
73
|
return a
|
66
74
|
|
67
75
|
|
68
|
-
async def main():
|
76
|
+
async def main(fn):
|
69
77
|
for i in range(10):
|
70
|
-
|
71
|
-
await mfn(11111)
|
78
|
+
await fn(i)
|
72
79
|
|
73
|
-
await asyncio.sleep(1)
|
74
80
|
|
81
|
+
# arun(main(fn))
|
82
|
+
# arun(main(fn2))
|
75
83
|
|
76
|
-
arun(main())
|
84
|
+
arun(main(mfn))
|
meutils/data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2025.04.
|
1
|
+
2025.04.19.13.52.36
|
@@ -105,20 +105,18 @@ async def atry_catch(
|
|
105
105
|
is_trace: bool = False,
|
106
106
|
**kwargs,
|
107
107
|
):
|
108
|
-
callback = callback or send_message_for_try_catch
|
109
|
-
|
110
|
-
task_name = task or "Unnamed TryCatch Task"
|
111
|
-
|
112
|
-
data = {
|
113
|
-
"task_name": task_name,
|
114
|
-
}
|
115
|
-
|
116
108
|
try:
|
117
109
|
yield
|
118
110
|
except Exception as e:
|
119
|
-
|
120
|
-
|
111
|
+
task = task or "Unnamed TryCatch Task"
|
112
|
+
|
113
|
+
callback = callback or send_message_for_try_catch
|
114
|
+
|
115
|
+
data = {
|
116
|
+
"task": task,
|
117
|
+
"error": f"""{traceback.format_exc()}""" if is_trace else f"{e}"
|
121
118
|
|
119
|
+
}
|
122
120
|
for k, v in kwargs.items():
|
123
121
|
if isinstance(v, BaseModel):
|
124
122
|
v = v.model_dump(exclude_none=True)
|
@@ -137,35 +135,27 @@ def try_catch(
|
|
137
135
|
is_trace: bool = False,
|
138
136
|
**kwargs,
|
139
137
|
):
|
140
|
-
callback = callback or send_message_for_try_catch
|
141
|
-
|
142
|
-
task_name = task or "Unnamed TryCatch Task"
|
143
|
-
|
144
|
-
data = {
|
145
|
-
"task_name": task_name,
|
146
|
-
}
|
147
|
-
for k, v in kwargs.items():
|
148
|
-
if isinstance(v, BaseModel):
|
149
|
-
v = v.model_dump(exclude_none=True)
|
150
|
-
elif isinstance(v, typing.Mapping):
|
151
|
-
v = dict(v)
|
152
|
-
|
153
|
-
data[k] = v
|
154
|
-
|
155
|
-
# logger.debug(data)
|
156
|
-
|
157
138
|
try:
|
158
139
|
yield
|
159
140
|
except Exception as e:
|
160
|
-
|
161
|
-
error_msg = f"""{traceback.format_exc()}"""
|
162
|
-
else:
|
163
|
-
error_msg = f"{e}"
|
141
|
+
task = task or "Unnamed TryCatch Task"
|
164
142
|
|
165
|
-
|
143
|
+
callback = callback or send_message_for_try_catch
|
144
|
+
|
145
|
+
data = {
|
146
|
+
"task": task,
|
147
|
+
"error": f"""{traceback.format_exc()}""" if is_trace else f"{e}"
|
148
|
+
|
149
|
+
}
|
150
|
+
for k, v in kwargs.items():
|
151
|
+
if isinstance(v, BaseModel):
|
152
|
+
v = v.model_dump(exclude_none=True)
|
153
|
+
data[k] = v
|
154
|
+
|
155
|
+
# logger.debug(data)
|
166
156
|
|
167
157
|
callback(data)
|
168
|
-
raise
|
158
|
+
raise
|
169
159
|
|
170
160
|
|
171
161
|
if __name__ == '__main__':
|
@@ -190,7 +180,7 @@ if __name__ == '__main__':
|
|
190
180
|
# except TimeoutError:
|
191
181
|
# print("Task did not complete in time.")
|
192
182
|
async def main():
|
193
|
-
async with atry_catch("test"):
|
183
|
+
async with atry_catch("test", a=1):
|
194
184
|
1 / 0
|
195
185
|
|
196
186
|
|
meutils/io/files_utils.py
CHANGED
@@ -49,7 +49,6 @@ def base64_to_bytes(base64_image_string):
|
|
49
49
|
return base64.b64decode(base64_image_string.split(",", 1)[-1])
|
50
50
|
|
51
51
|
|
52
|
-
@retrying()
|
53
52
|
async def to_bytes(
|
54
53
|
file: Union[UploadFile, str, bytes],
|
55
54
|
headers: Optional[dict] = None
|
@@ -67,28 +66,32 @@ async def to_bytes(
|
|
67
66
|
logger.debug(f"FileType: BYTES")
|
68
67
|
return file
|
69
68
|
|
70
|
-
|
71
|
-
|
72
|
-
|
69
|
+
elif isinstance(file, str):
|
70
|
+
if file.startswith('http'):
|
71
|
+
logger.debug(f"FileType: HTTP")
|
72
|
+
async with AsyncClient(headers=headers or {}, timeout=120) as cilent: # todo: 缓存 根据大小
|
73
|
+
resp = await cilent.get(file)
|
74
|
+
file_bytes = resp.content
|
73
75
|
|
74
|
-
|
75
|
-
|
76
|
+
elif file.startswith('data:') and ";base64," in file:
|
77
|
+
logger.debug(f"FileType: BASE64")
|
76
78
|
|
77
|
-
|
78
|
-
resp = await cilent.get(file)
|
79
|
-
file_bytes = resp.content
|
79
|
+
file_bytes = base64_to_bytes(file)
|
80
80
|
|
81
|
-
|
82
|
-
|
81
|
+
elif Path(file).is_file(): # file
|
82
|
+
logger.debug(f"FileType: PATH")
|
83
83
|
|
84
|
-
|
84
|
+
file_bytes = Path(file).read_bytes()
|
85
85
|
|
86
|
-
|
87
|
-
|
86
|
+
else:
|
87
|
+
logger.debug(f"FileType: MAY BASE64")
|
88
|
+
file_bytes = base64_to_bytes(file)
|
88
89
|
|
89
|
-
file_bytes
|
90
|
+
return file_bytes
|
90
91
|
|
91
|
-
|
92
|
+
elif isinstance(file, UploadFile):
|
93
|
+
file_bytes = await file.read()
|
94
|
+
return file_bytes
|
92
95
|
|
93
96
|
|
94
97
|
@asynccontextmanager
|
@@ -168,6 +171,7 @@ async def to_base64(file: Union[UploadFile, str, bytes, list], content_type: Opt
|
|
168
171
|
|
169
172
|
if not file: return
|
170
173
|
|
174
|
+
# logger.debug(file)
|
171
175
|
_ = base64.b64encode(await to_bytes(file)).decode('utf-8')
|
172
176
|
|
173
177
|
if content_type: # "image/png"
|