MeUtils 2024.3.4.13.4.45__py3-none-any.whl → 2025.1.16.17.15.52__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-2024.3.4.13.4.45.dist-info → MeUtils-2025.1.16.17.15.52.dist-info}/METADATA +38 -32
- MeUtils-2025.1.16.17.15.52.dist-info/RECORD +864 -0
- {MeUtils-2024.3.4.13.4.45.dist-info → MeUtils-2025.1.16.17.15.52.dist-info}/WHEEL +1 -1
- {MeUtils-2024.3.4.13.4.45.dist-info → MeUtils-2025.1.16.17.15.52.dist-info}/entry_points.txt +1 -0
- apps/spider.py +24 -8
- examples/_openaisdk/4v.py +110 -0
- examples/_openaisdk/__init__.py +11 -0
- examples/_openaisdk/baichuan.py +38 -0
- examples/_openaisdk/bpo.py +138 -0
- examples/_openaisdk/chat_latex.py +95 -0
- examples/_openaisdk/chattts.py +85 -0
- examples/_openaisdk/copilot.py +48 -0
- examples/_openaisdk/dalle3.py +48 -0
- examples/_openaisdk/deeplx.py +31 -0
- examples/_openaisdk/demo.py +77 -0
- examples/_openaisdk/embeddings.py +34 -0
- examples/_openaisdk/gpt4all.py +69 -0
- examples/_openaisdk/gpt_fc.py +23 -0
- examples/_openaisdk/gr_vl.py +46 -0
- examples/_openaisdk/json_mode.py +12 -0
- examples/_openaisdk/kimi.py +91 -0
- examples/_openaisdk/kimi_qa.py +57 -0
- examples/_openaisdk/minimax.py +75 -0
- examples/_openaisdk/open_router.py +48 -0
- examples/_openaisdk/openai_aiplus.py +54 -0
- examples/_openaisdk/openai_audio.py +20 -0
- examples/_openaisdk/openai_baichuan.py +59 -0
- examples/_openaisdk/openai_cache.py +37 -0
- examples/_openaisdk/openai_chatfire.py +228 -0
- examples/_openaisdk/openai_chatfire_all.py +166 -0
- examples/_openaisdk/openai_deepinfra.py +55 -0
- examples/_openaisdk/openai_deepseek.py +29 -0
- examples/_openaisdk/openai_doubao.py +43 -0
- examples/_openaisdk/openai_embeddings.py +36 -0
- examples/_openaisdk/openai_files.py +57 -0
- examples/_openaisdk/openai_gitee.py +33 -0
- examples/_openaisdk/openai_god.py +45 -0
- examples/_openaisdk/openai_groq.py +240 -0
- examples/_openaisdk/openai_images.py +203 -0
- examples/_openaisdk/openai_json.py +78 -0
- examples/_openaisdk/openai_lingyi.py +59 -0
- examples/_openaisdk/openai_modelscope.py +54 -0
- examples/_openaisdk/openai_moon.py +55 -0
- examples/_openaisdk/openai_oi.py +61 -0
- examples/_openaisdk/openai_ppu.py +47 -0
- examples/_openaisdk/openai_qwen.py +58 -0
- examples/_openaisdk/openai_search.py +42 -0
- examples/_openaisdk/openai_sensenova.py +81 -0
- examples/_openaisdk/openai_siliconflow.py +52 -0
- examples/_openaisdk/openai_step.py +45 -0
- examples/_openaisdk/openai_test.py +66 -0
- examples/_openaisdk/openai_together.py +57 -0
- examples/_openaisdk/openai_tune.py +38 -0
- examples/_openaisdk/openai_zhipu.py +59 -0
- examples/_openaisdk/ppu.py +28 -0
- examples/_openaisdk/rag.py +54 -0
- examples/_openaisdk/rag_.py +26 -0
- examples/_openaisdk/test.py +52 -0
- examples/_openaisdk/x.py +32 -0
- examples/_openaisdk/xx.py +29 -0
- examples/_openaisdk/zhipu_files.py +47 -0
- examples/_openaisdk/zhipu_/346/231/272/350/203/275/344/275/223.py +45 -0
- examples/_openaisdk//345/205/234/345/272/225/346/265/213/350/257/225.py +50 -0
- examples/_openaisdk//345/244/232/346/250/241/346/200/201/346/265/213/350/257/225.py +76 -0
- examples/_openaisdk//345/244/232/346/250/241/346/200/201/346/265/213/350/257/225_.py +56 -0
- examples/_openaisdk//346/226/207/344/273/266/351/227/256/347/255/224.py +36 -0
- examples/_openaisdk//346/226/207/346/241/243/350/247/243/346/236/220.py +34 -0
- examples/_openaisdk//346/250/241/345/236/213/346/265/213/350/257/225.py +53 -0
- examples/_openaisdk//351/230/277/351/207/214.py +80 -0
- {meutils/serving/jina/__demo → examples/ann}/__init__.py +1 -1
- examples/ann/main.py +31 -0
- examples/apis/kl.py +28 -0
- examples/apis/x.py +17 -0
- examples/apis/xx.py +17 -0
- examples/arq_demo/demo.py +3 -0
- examples/backgroundtasks.py +25 -0
- examples/bserver.py +513 -21
- examples/cache_demo/HermesCache_demo.py +81 -0
- examples/cache_demo/acacge.py +26 -0
- examples/cache_demo/x.py +31 -0
- {meutils/docarray_utils → examples/caches}/__init__.py +1 -1
- examples/caches/llmcache.py +18 -0
- examples/celery_demo/product_task.py +2 -0
- examples/demo.py +17 -1
- examples/fastapi_caching.py +59 -0
- {meutils/dependencies → examples/gr}/__init__.py +1 -1
- examples/gr/d.py +22 -0
- examples/gr/demo.py +30 -0
- examples/ip2/345/234/260/345/214/272.py +16 -0
- examples/jinja2_demo/j2_demo.py +20 -1
- examples/json/346/240/207/345/207/206/345/214/226.py +54 -0
- examples/md.py +29 -0
- {meutils/serving/jina → examples/nesc}/__init__.py +1 -1
- examples/nesc/main.py +76 -0
- examples/orm/mysql_orm.py +113 -0
- examples/orm/sql_creater.py +57 -0
- examples/orm/sqlm.py +134 -0
- examples/rq_demo/fns.py +18 -0
- examples/rq_demo/redis/351/230/237/345/210/227.py +14 -7
- examples/rq_demo/redis/351/230/237/345/210/227_add_chatfire.py +30 -0
- examples/size_map.py +43 -0
- examples/test.py +59 -0
- examples/webs/__init__.py +11 -0
- examples/webs/main.py +34 -0
- examples/x.py +13 -0
- examples//345/216/273/346/260/264/345/215/260.py +20 -0
- examples//346/226/207/346/241/243/346/231/272/350/203/275/__init__.py +11 -0
- meutils/_utils.py +15 -6
- meutils/ai_audio/asr/__init__.py +3 -2
- meutils/ai_audio/asr/cf_asr.py +53 -0
- meutils/ai_audio/asr/de.py +11 -0
- meutils/ai_audio/asr/fast_asr.py +15 -7
- meutils/ai_audio/asr/openai_asr.py +83 -6
- meutils/ai_audio/fast_asr.py +8 -4
- meutils/ai_audio/tts/EdgeTTS.py +33 -7
- meutils/ai_audio/tts/openai_tts.py +24 -20
- meutils/ai_audio/tts/tts_ui.py +1 -0
- meutils/ai_audio/utils.py +9 -0
- meutils/ai_cv/__init__.py +0 -1
- meutils/ai_cv/ocr.py +3 -2
- meutils/ai_cv/utils.py +154 -0
- meutils/ai_video/avmerge.py +6 -0
- meutils/ai_video/video.py +11 -2
- meutils/{api → apis}/__init__.py +1 -1
- meutils/apis/ali_apis.py +60 -0
- meutils/apis/audio/__init__.py +10 -0
- meutils/apis/audio/deepinfra.py +59 -0
- meutils/apis/audio/fish.py +248 -0
- meutils/apis/baidu/__init__.py +9 -0
- meutils/apis/baidu/bdaitpzs.py +229 -0
- meutils/apis/baidu/test.py +78 -0
- meutils/apis/chatglm/__init__.py +11 -0
- meutils/apis/chatglm/glm_video.py +273 -0
- meutils/apis/chatglm/glm_video_api.py +116 -0
- meutils/apis/chatglm/images.py +63 -0
- meutils/apis/chatglm/temp.py +259 -0
- meutils/apis/chatglm/x.py +31 -0
- meutils/{api → apis}/common.py +10 -6
- meutils/apis/fal/__init__.py +11 -0
- meutils/apis/fal/files.py +53 -0
- meutils/apis/fal/images.py +57 -0
- meutils/apis/fal/images_.py +72 -0
- meutils/apis/fal/videos.py +77 -0
- meutils/apis/firecrawl.py +45 -0
- meutils/apis/gitee/__init__.py +11 -0
- meutils/apis/gitee/images/__init__.py +9 -0
- meutils/apis/gitee/images/kolors.py +99 -0
- meutils/apis/hailuoai/__init__.py +11 -0
- meutils/apis/hailuoai/demo.py +34 -0
- meutils/apis/hailuoai/hasha_new.py +248 -0
- meutils/apis/hailuoai/music.py +11 -0
- meutils/apis/hailuoai/upload.py +116 -0
- meutils/apis/hailuoai/videos.py +460 -0
- meutils/apis/hailuoai/yy.py +242 -0
- meutils/apis/hf/__init__.py +11 -0
- meutils/apis/hf/got_ocr.py +64 -0
- meutils/apis/hf/gradio.py +34 -0
- meutils/apis/hf/hivisionidphotos.py +80 -0
- meutils/apis/hf/kolors.py +68 -0
- meutils/apis/hf/kolors_virtual_try_on.py +107 -0
- meutils/apis/hf/r.py +53 -0
- meutils/apis/hf/x.py +26 -0
- meutils/apis/hf//350/257/201/344/273/266/347/205/247.py +41 -0
- meutils/apis/hunyuan/__init__.py +11 -0
- meutils/apis/hunyuan/image_tools.py +84 -0
- meutils/apis/images/__init__.py +11 -0
- meutils/apis/images/deepinfra.py +92 -0
- meutils/apis/images/demo.py +150 -0
- meutils/apis/images/eidt.py +36 -0
- meutils/apis/images/flux/__init__.py +11 -0
- meutils/apis/images/flux/fluxpro.py +108 -0
- meutils/apis/images/flux/mystic.py +116 -0
- meutils/apis/images/ideogram/__init__.py +10 -0
- meutils/apis/images/ideogram/ideogram_images.py +193 -0
- meutils/apis/images/prodia/__init__.py +12 -0
- meutils/apis/images/prodia/faceswap.py +76 -0
- meutils/apis/images/recraft.py +152 -0
- meutils/apis/images/virtual_try_on/__init__.py +11 -0
- meutils/apis/images/virtual_try_on/images.py +65 -0
- meutils/apis/jiema/24mail.py +96 -0
- meutils/apis/jiema/__init__.py +11 -0
- meutils/apis/jiema/yezi.py +97 -0
- meutils/apis/jimeng/__init__.py +11 -0
- meutils/apis/jimeng/common.py +328 -0
- meutils/apis/jimeng/doubao.py +68 -0
- meutils/apis/jimeng/doubao_utils.py +175 -0
- meutils/apis/jimeng/files.py +263 -0
- meutils/apis/jimeng/images.py +140 -0
- meutils/apis/jimeng/lip_sync.py +11 -0
- meutils/apis/jina.py +55 -0
- meutils/apis/kling/__init__.py +11 -0
- meutils/apis/kling/api.py +60 -0
- meutils/apis/kling/images.py +174 -0
- meutils/apis/kling/kolors_virtual_try_on.py +111 -0
- meutils/apis/kling/kolors_virtual_try_on_web.py +126 -0
- meutils/apis/kling/videos.py +67 -0
- meutils/apis/kling//351/211/264/346/235/203.py +34 -0
- meutils/apis/kuaidi.py +32 -0
- meutils/apis/kuaishou/__init__.py +10 -0
- meutils/apis/kuaishou/klingai.py +523 -0
- meutils/apis/kuaishou/klingai_video.py +197 -0
- meutils/apis/kuaishou/kolors.py +189 -0
- meutils/apis/llm_qa.py +55 -0
- meutils/apis/luma/__init__.py +11 -0
- meutils/apis/luma/luma.py +123 -0
- meutils/apis/minicpm/__init__.py +9 -0
- meutils/apis/minicpm/luca.py +137 -0
- meutils/apis/monica/__init__.py +11 -0
- meutils/apis/monica/llm.py +11 -0
- meutils/apis/napkin/__init__.py +11 -0
- meutils/apis/napkin/icons.py +42 -0
- meutils/apis/niutrans.py +73 -0
- meutils/apis/oneapi/__init__.py +11 -0
- meutils/apis/oneapi/channel.py +68 -0
- meutils/apis/oneapi/common.py +135 -0
- meutils/apis/oneapi/log.py +47 -0
- meutils/apis/oneapi/token.py +48 -0
- meutils/apis/oneapi/token_.py +112 -0
- meutils/apis/oneapi/user.py +100 -0
- meutils/apis/oneapi/utils.py +47 -0
- meutils/apis/pixverse/__init__.py +11 -0
- meutils/apis/pixverse/pixverse.py +150 -0
- meutils/apis/proxy/__init__.py +11 -0
- meutils/apis/proxy/ips.py +178 -0
- meutils/apis/remini/__init__.py +11 -0
- meutils/apis/remini/remini.py +89 -0
- meutils/apis/replicateai/__init__.py +11 -0
- meutils/apis/replicateai/images.py +79 -0
- meutils/apis/replicateai/raw.py +53 -0
- meutils/apis/runwayml/__init__.py +10 -0
- meutils/apis/runwayml/gen.py +143 -0
- meutils/apis/search/__init__.py +11 -0
- meutils/apis/search/baichuan.py +11 -0
- meutils/apis/search/metaso.py +218 -0
- meutils/apis/search/metaso_.py +77 -0
- meutils/apis/search/n.py +99 -0
- meutils/apis/search/searxng.py +42 -0
- meutils/apis/search_music.py +39 -0
- meutils/apis/siliconflow/__init__.py +9 -0
- meutils/apis/siliconflow/audio.py +63 -0
- meutils/apis/siliconflow/image_to_image.py +116 -0
- meutils/apis/siliconflow/images.py +154 -0
- meutils/apis/siliconflow/rerankers.py +40 -0
- meutils/apis/siliconflow/text_to_image.py +132 -0
- meutils/apis/siliconflow/utils.py +66 -0
- meutils/apis/siliconflow/videos.py +102 -0
- meutils/apis/sunoai/__init__.py +10 -0
- meutils/apis/sunoai/haimian.py +135 -0
- meutils/apis/sunoai/suno.py +373 -0
- meutils/apis/textcard/__init__.py +11 -0
- meutils/apis/textcard/demo.py +25 -0
- meutils/apis/textcard/hanyuxinjie.py +81 -0
- meutils/apis/textin.py +159 -0
- meutils/apis/to_image/__init__.py +11 -0
- meutils/apis/to_image/html2image.py +29 -0
- meutils/apis/to_image/md.py +29 -0
- meutils/apis/to_image/url2image.py +41 -0
- meutils/apis/together/__init__.py +11 -0
- meutils/apis/together/images.py +80 -0
- meutils/apis/translator/__init__.py +9 -0
- meutils/apis/translator/deeplx.py +55 -0
- meutils/apis/tripo3d/__init__.py +11 -0
- meutils/apis/tripo3d/images.py +106 -0
- meutils/apis/ts.py +60 -0
- meutils/apis/uptime_kuma/__init__.py +11 -0
- meutils/apis/uptime_kuma/common.py +56 -0
- meutils/apis/uptime_kuma//345/233/275/344/272/247/345/210/206/347/273/204.py +68 -0
- meutils/apis/utils.py +47 -0
- meutils/apis/videos/__init__.py +11 -0
- meutils/apis/videos/sora.py +16 -0
- meutils/apis/vidu/__init__.py +9 -0
- meutils/apis/vidu/vidu_video.py +254 -0
- meutils/apis/vidu/x.py +14 -0
- meutils/apis/voice_clone/__init__.py +10 -0
- meutils/apis/voice_clone/fish.py +236 -0
- meutils/apis/voice_clone/fish_api.py +16 -0
- meutils/apis/web_search.py +31 -0
- meutils/apis/yezi.py +97 -0
- meutils/async_task/__init__.py +13 -0
- meutils/async_task/celery_config.py +106 -0
- meutils/async_task/common.py +37 -0
- meutils/async_task/demo_create_tasks.py +73 -0
- meutils/async_task/tasks/__init__.py +11 -0
- meutils/async_task/tasks/_all.py +20 -0
- meutils/async_task/tasks/hailuo.py +24 -0
- meutils/async_task/tasks/kling.py +30 -0
- meutils/async_task/tasks/replicateai.py +24 -0
- meutils/async_task/tasks/test.py +124 -0
- meutils/async_task/tasks/vidu.py +28 -0
- meutils/async_task/utils.py +191 -0
- meutils/async_task//351/200/232/347/224/250/350/256/276/350/256/241.py +119 -0
- meutils/async_utils/asyncer_.py +37 -0
- meutils/async_utils/background.py +68 -0
- meutils/async_utils/common.py +136 -16
- meutils/async_utils/test.py +47 -0
- meutils/cache_utils.py +29 -23
- meutils/caches/__init__.py +9 -0
- meutils/caches/acache.py +45 -0
- meutils/caches/redis_cache.py +63 -0
- meutils/clis/check_api.py +66 -0
- meutils/clis/cli.py +1 -1
- meutils/common.py +56 -17
- meutils/config_utils/__init__.py +11 -0
- meutils/config_utils/lark_utils/__init__.py +11 -0
- meutils/config_utils/lark_utils/common.py +385 -0
- meutils/config_utils/lark_utils/demo.py +13 -0
- meutils/config_utils/lark_utils/x.py +50 -0
- meutils/config_utils/manager.py +108 -0
- meutils/crawlers/__init__.py +11 -0
- meutils/data/VERSION +1 -1
- meutils/data/cowboy-hat-face.webp +0 -0
- meutils/data/oneapi/FOOTER.md +7 -0
- meutils/data/oneapi/NOTICE.md +138 -0
- meutils/data/oneapi/__init__.py +15 -0
- meutils/db/orm.py +179 -0
- meutils/db/redis_db.py +87 -0
- meutils/decorators/cache.py +1 -1
- meutils/decorators/common.py +84 -5
- meutils/decorators/contextmanagers.py +17 -6
- meutils/decorators/fastapi_decorator.py +77 -3
- meutils/decorators/polling.py +46 -0
- meutils/decorators/retry.py +150 -26
- meutils/fastapi_utils/__init__.py +11 -0
- meutils/fastapi_utils/exceptions/http_error.py +72 -0
- meutils/fastapi_utils/exceptions/validation_error.py +44 -0
- meutils/hash_utils.py +9 -4
- meutils/hooks/__init__.py +11 -0
- meutils/hooks/hook_test.py +174 -0
- meutils/hooks/wechat.py +162 -0
- meutils/hooks/wechat_channel.py +303 -0
- meutils/init/evn.py +1 -1
- meutils/io/files_utils.py +232 -0
- meutils/io/image.py +148 -10
- meutils/io/x.py +75 -0
- meutils/llm/__init__.py +10 -0
- meutils/llm/check_api.py +109 -0
- meutils/llm/check_utils.py +106 -0
- meutils/llm/clients.py +38 -0
- meutils/llm/completions/__init__.py +11 -0
- meutils/llm/completions/agents/__init__.py +11 -0
- meutils/llm/completions/agents/file.py +125 -0
- meutils/llm/completions/cp.py +112 -0
- meutils/llm/completions/delilegal.py +135 -0
- meutils/llm/completions/dify.py +81 -0
- meutils/llm/completions/kimi.py +47 -0
- meutils/llm/completions/modelscope.py +11 -0
- meutils/{fileparser/filetype.py → llm/completions/oi.py} +5 -3
- meutils/llm/completions/rag/__init__.py +11 -0
- meutils/llm/completions/rag/fire.py +157 -0
- meutils/llm/completions/rag/qwen.py +11 -0
- meutils/llm/completions/rag/rag.py +41 -0
- meutils/llm/completions/rag.py +38 -0
- meutils/llm/completions/tryblend.py +201 -0
- meutils/llm/completions/tune.py +284 -0
- meutils/llm/completions/x.py +26 -0
- meutils/llm/completions/xx.py +61 -0
- meutils/llm/completions/yuanbao.py +176 -0
- meutils/llm/demo.py +114 -0
- meutils/llm/functions/__init__.py +11 -0
- meutils/llm/mappers.py +15 -0
- meutils/llm/openai_utils/__init__.py +11 -0
- meutils/llm/openai_utils/common.py +284 -0
- meutils/llm/openai_utils/tool_outputs.py +45 -0
- meutils/llm/output_parsers/__init__.py +80 -0
- meutils/llm/prompts/__init__.py +244 -0
- meutils/llm/prompts/demo.py +155 -0
- meutils/llm/prompts/html2image_test.py +19 -0
- meutils/llm/utils.py +133 -0
- meutils/llm/x.py +75 -0
- meutils/notice/feishu.py +40 -9
- meutils/notice/wechat.py +23 -21
- meutils/np_utils.py +10 -1
- meutils/office_automation/pdf.py +6 -1
- meutils/oss/__init__.py +20 -0
- meutils/oss/minio_oss.py +184 -0
- meutils/oss/minio_utils.py +48 -0
- meutils/other/__demo.py +6 -4
- meutils/pandas_utils/__init__.py +1 -0
- meutils/pandas_utils/common.py +31 -0
- meutils/pandas_utils/pd_utils.py +10 -6
- meutils/parsers/__init__.py +10 -0
- meutils/parsers/file_parsers.py +110 -0
- meutils/parsers/fileparser/demo.py +41 -0
- meutils/parsers/fileparser/filetype.py +41 -0
- meutils/pay.py +37 -0
- meutils/pipe.py +37 -4
- meutils/playwright_utils/common.py +20 -12
- meutils/plots/common.py +35 -34
- meutils/queues/demo.py +56 -0
- meutils/queues/smooth_queue.py +120 -0
- meutils/queues/uniform_queue.py +3 -1
- meutils/request_utils/__init__.py +26 -2
- meutils/request_utils/ark.py +47 -0
- meutils/request_utils/crawler.py +34 -5
- meutils/request_utils/jwt_utils/__init__.py +11 -0
- meutils/request_utils/jwt_utils/common.py +42 -0
- meutils/request_utils/volc.py +160 -0
- meutils/schemas/__init__.py +0 -1
- meutils/schemas/baidu_types.py +70 -0
- meutils/schemas/batch_types.py +450 -0
- meutils/schemas/celery_types.py +64 -0
- meutils/schemas/chatfire_types.py +15 -0
- meutils/schemas/chatglm_types.py +197 -0
- meutils/schemas/db/__init__.py +11 -0
- meutils/schemas/db/oneapi_types.py +117 -0
- meutils/schemas/dify_types.py +40 -0
- meutils/schemas/embedding.py +31 -0
- meutils/schemas/fal_types.py +13 -0
- meutils/schemas/fish_types.py +11 -0
- meutils/schemas/hailuo_types.py +208 -0
- meutils/schemas/haimian_types.py +51 -0
- meutils/schemas/idphoto_types.py +43 -0
- meutils/schemas/image_types.py +476 -0
- meutils/schemas/jimeng_types.py +28 -0
- meutils/schemas/jina_types.py +67 -0
- meutils/schemas/kimi_types.py +86 -0
- meutils/schemas/kling_types.py +235 -0
- meutils/schemas/kuaishou_types.py +328 -0
- meutils/schemas/luma_types.py +59 -0
- meutils/schemas/message_types.py +165 -0
- meutils/schemas/message_types_.py +219 -0
- meutils/schemas/metaso_types.py +64 -0
- meutils/schemas/napkin_types.py +85 -0
- meutils/schemas/ocr_types.py +37 -0
- meutils/schemas/oneapi/__init__.py +11 -0
- meutils/schemas/oneapi/_types.py +49 -0
- meutils/schemas/oneapi/common.py +883 -0
- meutils/schemas/oneapi/icons.py +30 -0
- meutils/schemas/oneapi/model_group_info.py +48 -0
- meutils/schemas/oneapi/model_info.py +34 -0
- meutils/schemas/oneapi/models.py +26 -0
- meutils/schemas/oneapi/x.py +26 -0
- meutils/schemas/oneapi//351/207/215/345/256/232/345/220/221.py +132 -0
- meutils/schemas/openai_api_protocol.py +411 -0
- meutils/schemas/openai_types.py +366 -0
- meutils/schemas/pixverse_types.py +88 -0
- meutils/schemas/playwright_types.py +57 -0
- meutils/schemas/prodia_types.py +19 -0
- meutils/schemas/replicate_types.py +112 -0
- meutils/schemas/request_types.py +20 -0
- meutils/schemas/runwayml_types.py +190 -0
- meutils/schemas/siliconflow_types.py +80 -0
- meutils/schemas/step_types.py +19 -0
- meutils/schemas/suno_types.py +319 -0
- meutils/schemas/task_types.py +192 -0
- meutils/schemas/translator_types.py +29 -0
- meutils/schemas/tripo3d_types.py +57 -0
- meutils/schemas/tryblend_types.py +51 -0
- meutils/schemas/video_types.py +62 -0
- meutils/schemas/vidu_types.py +350 -0
- meutils/schemas/wechat_types.py +316 -0
- meutils/schemas/yuanbao_types.py +260 -0
- meutils/serving/celery/__init__.py +8 -0
- meutils/serving/celery/config.py +115 -0
- meutils/serving/celery/router.py +4 -6
- meutils/serving/celery/tasks.py +6 -4
- meutils/serving/celery//351/200/232/347/224/250/350/256/276/350/256/241.py +119 -0
- meutils/serving/fastapi/common.py +27 -31
- meutils/serving/fastapi/dependencies/__init__.py +0 -1
- meutils/serving/fastapi/dependencies/auth.py +55 -2
- meutils/serving/fastapi/exceptions/http_error.py +67 -2
- meutils/serving/fastapi/exceptions/validation_error.py +18 -2
- meutils/serving/fastapi/lifespans.py +73 -0
- meutils/serving/fastapi/routers/scheduler.py +12 -0
- meutils/serving/fastapi/routers/screenshot.py +47 -0
- meutils/serving/fastapi/routers/spider.py +8 -3
- meutils/serving/fastapi/routers/task.py +48 -0
- meutils/serving/fastapi/utils.py +48 -1
- meutils/serving/streamlit/common.py +1 -1
- meutils/smooth_utils.py +3 -0
- meutils/str_utils/__init__.py +22 -3
- meutils/str_utils/json_utils.py +7 -0
- meutils/str_utils/regular_expression.py +102 -10
- meutils/templates/xx.html +21 -0
- meutils/templates/xxx.html +117 -0
- meutils/todo.py +12 -0
- meutils/tools/token_monitor.py +33 -0
- MeUtils-2024.3.4.13.4.45.dist-info/RECORD +0 -540
- meutils/ai_audio/asr/subtitle.srt +0 -40
- meutils/ai_audio/demo.ipynb +0 -1215
- meutils/ai_audio/example.srt +0 -348
- meutils/ai_audio/new.srt +0 -179
- meutils/ai_audio/subtitles.srt +0 -696
- meutils/ai_audio/tts/new.srt +0 -179
- meutils/ai_audio//350/247/206/351/242/221/345/220/210/345/271/266.sh +0 -32
- meutils/ai_cv/1.jpg +0 -0
- meutils/ai_cv/197.jpg +0 -0
- meutils/ai_cv/2.jpg +0 -0
- meutils/ai_cv/img.png +0 -0
- meutils/ai_cv/invoice.jpg +0 -0
- meutils/ai_cv/tbl.png +0 -0
- meutils/ai_cv/test.png +0 -0
- meutils/ann/README.md +0 -33
- meutils/ann/README_gensim.md +0 -47
- meutils/ann/examples/client.py +0 -59
- meutils/ann/examples/demo.py +0 -24
- meutils/api/deeplx.py +0 -29
- meutils/api/qr.png +0 -0
- meutils/clis/README.md +0 -29
- meutils/clis/__test.sh +0 -17
- meutils/clis/deepseek.txt +0 -8
- meutils/clis/deepseek_13003330042.json +0 -1
- meutils/clis/deepseek_13003872192.json +0 -1
- meutils/clis/deepseek_13852263862.json +0 -1
- meutils/clis/deepseek_13913898681.json +0 -1
- meutils/clis/deepseek_13962978617.json +0 -1
- meutils/clis/deepseek_15251801790.json +0 -1
- meutils/clis/deepseek_15720826383.json +0 -1
- meutils/clis/deepseek_18395563611.json +0 -1
- meutils/clis/deepseek_313303303@qq.com.json +0 -1
- meutils/clis/kimi_state.json +0 -1
- meutils/cmds/README.md +0 -55
- meutils/coding/__init__.py +0 -11
- meutils/coding/find132.py +0 -40
- meutils/db/README.md +0 -51
- meutils/decorators/README.md +0 -17
- meutils/docarray_utils/demo_es.py +0 -34
- meutils/docarray_utils/demo_hnsw.py +0 -55
- meutils/docarray_utils/in_memory.py +0 -38
- meutils/docarray_utils//346/224/271/351/200/240/344/270/213hnsw.py +0 -43
- meutils/io/file.py +0 -20
- meutils/io/img.png +0 -0
- meutils/io/x.yml +0 -1
- meutils/notice/img.png +0 -0
- meutils/notice/todo.md +0 -10
- meutils/office_automation//346/212/225/350/265/204/347/256/241/347/220/206/347/263/273/347/273/237O3.2_/344/272/244/346/230/223/347/273/204.pdm +0 -22469
- meutils/playwright_utils/__test.sh +0 -2
- meutils/playwright_utils/kimi1_cookies.json +0 -1
- meutils/playwright_utils/kimi2_cookies.json +0 -1
- meutils/playwright_utils/kimi_cookies.json +0 -93
- meutils/serving/README.md +0 -1
- meutils/serving/celery/_run.sh +0 -10
- meutils/serving/gui/run.sh +0 -9
- meutils/serving/jina/__demo/client.py +0 -42
- meutils/serving/jina/__demo/flow.svg +0 -1
- meutils/serving/jina/__demo/s.py +0 -34
- meutils/serving/jina/__demo/s2.py +0 -37
- meutils/serving/jina/__demo/server.py +0 -83
- meutils/serving/jina/__demo/test.py +0 -40
- meutils/serving/jina/executors/SentenceEncoder.py +0 -62
- meutils/serving/jina/executors/SentenceEncoder_.py +0 -63
- meutils/serving/jina/executors/__init__.py +0 -46
- meutils/serving/jina/executors/base.py +0 -40
- meutils/serving/jina/nlp_serving/__init__.py +0 -11
- meutils/serving/jina/nlp_serving/word_segmentation.py +0 -40
- meutils/serving/streamlit/conf.yaml +0 -5
- meutils/serving/streamlit/ocr.png +0 -0
- meutils/serving/streamlit/run.sh +0 -17
- meutils/serving/webui/.streamlit/_config.toml +0 -186
- meutils/serving/webui/.streamlit/config.toml +0 -26
- meutils/serving/webui/pages/_1_/345/210/206/350/257/215.py +0 -56
- meutils/serving/webui/pages/_2_/350/257/215/346/200/247/346/240/207/346/263/250/344/270/216/345/256/236/344/275/223/350/257/206/345/210/253.py +0 -54
- meutils/serving/webui/pages/_3_/346/226/207/346/234/254/345/214/271/351/205/215.py +0 -64
- meutils/serving/webui/run.sh +0 -9
- meutils/spark/__init__.py +0 -26
- meutils/tools/monitor.yml +0 -29
- {MeUtils-2024.3.4.13.4.45.dist-info → MeUtils-2025.1.16.17.15.52.dist-info}/LICENSE +0 -0
- {MeUtils-2024.3.4.13.4.45.dist-info → MeUtils-2025.1.16.17.15.52.dist-info}/top_level.txt +0 -0
- {meutils → examples}/comp_utils/__init__.py +0 -0
- {meutils → examples}/comp_utils/reverse_metric.py +0 -0
- /meutils/{fileparser/README.md → fastapi_utils/exceptions/__init__.py} +0 -0
- /meutils/{fileparser → parsers/fileparser}/PDF/346/212/275/345/217/226.py" +0 -0
- /meutils/{fileparser → parsers/fileparser}/__init__.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/common.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/__init__.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/__main__.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/filetype.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/helpers.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/match.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/__init__.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/application.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/archive.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/audio.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/base.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/document.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/font.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/image.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/isobmff.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/types/video.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/filetype/utils.py +0 -0
- /meutils/{fileparser → parsers/fileparser}/pdf.py +0 -0
- /meutils/{fileparser → parsers/fileparser}//350/241/250/346/240/274/346/212/275/345/217/226.py" +0 -0
@@ -0,0 +1,450 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
# @Project : AI. @by PyCharm
|
4
|
+
# @File : batch_types
|
5
|
+
# @Time : 2024/6/3 09:06
|
6
|
+
# @Author : betterme
|
7
|
+
# @WeChat : meutils
|
8
|
+
# @Software : PyCharm
|
9
|
+
# @Description : https://github.com/datastax/astra-assistants-api/blob/f10ce1e71d321aee2069948758600b88b30b33e0/openapi_server_v2/models/batch.py#L32
|
10
|
+
|
11
|
+
from meutils.pipe import *
|
12
|
+
import pprint
|
13
|
+
|
14
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator
|
15
|
+
from typing import Any, ClassVar, Dict, List, Optional, Self
|
16
|
+
|
17
|
+
|
18
|
+
class BatchErrorsDataInner(BaseModel):
|
19
|
+
"""
|
20
|
+
BatchErrorsDataInner
|
21
|
+
""" # noqa: E501
|
22
|
+
code: Optional[StrictStr] = Field(default=None, description="An error code identifying the error type.")
|
23
|
+
message: Optional[StrictStr] = Field(default=None,
|
24
|
+
description="A human-readable message providing more details about the error.")
|
25
|
+
param: Optional[StrictStr] = Field(default=None,
|
26
|
+
description="The name of the parameter that caused the error, if applicable.")
|
27
|
+
line: Optional[StrictInt] = Field(default=None,
|
28
|
+
description="The line number of the input file where the error occurred, if applicable.")
|
29
|
+
__properties: ClassVar[List[str]] = ["code", "message", "param", "line"]
|
30
|
+
|
31
|
+
model_config = {
|
32
|
+
"populate_by_name": True,
|
33
|
+
"validate_assignment": True,
|
34
|
+
"protected_namespaces": (),
|
35
|
+
}
|
36
|
+
|
37
|
+
def to_str(self) -> str:
|
38
|
+
"""Returns the string representation of the model using alias"""
|
39
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
40
|
+
|
41
|
+
def to_json(self) -> str:
|
42
|
+
"""Returns the JSON representation of the model using alias"""
|
43
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
44
|
+
return json.dumps(self.to_dict())
|
45
|
+
|
46
|
+
@classmethod
|
47
|
+
def from_json(cls, json_str: str) -> Self:
|
48
|
+
"""Create an instance of BatchErrorsDataInner from a JSON string"""
|
49
|
+
return cls.from_dict(json.loads(json_str))
|
50
|
+
|
51
|
+
def to_dict(self) -> Dict[str, Any]:
|
52
|
+
"""Return the dictionary representation of the model using alias.
|
53
|
+
|
54
|
+
This has the following differences from calling pydantic's
|
55
|
+
`self.model_dump(by_alias=True)`:
|
56
|
+
|
57
|
+
* `None` is only added to the output dict for nullable fields that
|
58
|
+
were set at model initialization. Other fields with value `None`
|
59
|
+
are ignored.
|
60
|
+
"""
|
61
|
+
_dict = self.model_dump(
|
62
|
+
by_alias=True,
|
63
|
+
exclude={
|
64
|
+
},
|
65
|
+
exclude_none=True,
|
66
|
+
)
|
67
|
+
# set to None if param (nullable) is None
|
68
|
+
# and model_fields_set contains the field
|
69
|
+
if self.param is None and "param" in self.model_fields_set:
|
70
|
+
_dict['param'] = None
|
71
|
+
|
72
|
+
# set to None if line (nullable) is None
|
73
|
+
# and model_fields_set contains the field
|
74
|
+
if self.line is None and "line" in self.model_fields_set:
|
75
|
+
_dict['line'] = None
|
76
|
+
|
77
|
+
return _dict
|
78
|
+
|
79
|
+
@classmethod
|
80
|
+
def from_dict(cls, obj: Dict) -> Self:
|
81
|
+
"""Create an instance of BatchErrorsDataInner from a dict"""
|
82
|
+
if obj is None:
|
83
|
+
return None
|
84
|
+
|
85
|
+
if not isinstance(obj, dict):
|
86
|
+
return cls.model_validate(obj)
|
87
|
+
|
88
|
+
_obj = cls.model_validate({
|
89
|
+
"code": obj.get("code"),
|
90
|
+
"message": obj.get("message"),
|
91
|
+
"param": obj.get("param"),
|
92
|
+
"line": obj.get("line")
|
93
|
+
})
|
94
|
+
return _obj
|
95
|
+
|
96
|
+
|
97
|
+
class BatchErrors(BaseModel):
|
98
|
+
"""
|
99
|
+
BatchErrors
|
100
|
+
""" # noqa: E501
|
101
|
+
object: Optional[StrictStr] = Field(default=None, description="The object type, which is always `list`.")
|
102
|
+
data: Optional[List[BatchErrorsDataInner]] = None
|
103
|
+
__properties: ClassVar[List[str]] = ["object", "data"]
|
104
|
+
|
105
|
+
model_config = {
|
106
|
+
"populate_by_name": True,
|
107
|
+
"validate_assignment": True,
|
108
|
+
"protected_namespaces": (),
|
109
|
+
}
|
110
|
+
|
111
|
+
def to_str(self) -> str:
|
112
|
+
"""Returns the string representation of the model using alias"""
|
113
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
114
|
+
|
115
|
+
def to_json(self) -> str:
|
116
|
+
"""Returns the JSON representation of the model using alias"""
|
117
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
118
|
+
return json.dumps(self.to_dict())
|
119
|
+
|
120
|
+
@classmethod
|
121
|
+
def from_json(cls, json_str: str) -> Self:
|
122
|
+
"""Create an instance of BatchErrors from a JSON string"""
|
123
|
+
return cls.from_dict(json.loads(json_str))
|
124
|
+
|
125
|
+
def to_dict(self) -> Dict[str, Any]:
|
126
|
+
"""Return the dictionary representation of the model using alias.
|
127
|
+
|
128
|
+
This has the following differences from calling pydantic's
|
129
|
+
`self.model_dump(by_alias=True)`:
|
130
|
+
|
131
|
+
* `None` is only added to the output dict for nullable fields that
|
132
|
+
were set at model initialization. Other fields with value `None`
|
133
|
+
are ignored.
|
134
|
+
"""
|
135
|
+
_dict = self.model_dump(
|
136
|
+
by_alias=True,
|
137
|
+
exclude={
|
138
|
+
},
|
139
|
+
exclude_none=True,
|
140
|
+
)
|
141
|
+
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
142
|
+
_items = []
|
143
|
+
if self.data:
|
144
|
+
for _item in self.data:
|
145
|
+
if _item:
|
146
|
+
_items.append(_item.to_dict())
|
147
|
+
_dict['data'] = _items
|
148
|
+
return _dict
|
149
|
+
|
150
|
+
@classmethod
|
151
|
+
def from_dict(cls, obj: Dict) -> Self:
|
152
|
+
"""Create an instance of BatchErrors from a dict"""
|
153
|
+
if obj is None:
|
154
|
+
return None
|
155
|
+
|
156
|
+
if not isinstance(obj, dict):
|
157
|
+
return cls.model_validate(obj)
|
158
|
+
|
159
|
+
_obj = cls.model_validate({
|
160
|
+
"object": obj.get("object"),
|
161
|
+
"data": [BatchErrorsDataInner.from_dict(_item) for _item in obj.get("data")] if obj.get(
|
162
|
+
"data") is not None else None
|
163
|
+
})
|
164
|
+
return _obj
|
165
|
+
|
166
|
+
|
167
|
+
class BatchRequestCounts(BaseModel):
|
168
|
+
"""
|
169
|
+
The request counts for different statuses within the batch.
|
170
|
+
""" # noqa: E501
|
171
|
+
total: StrictInt = Field(description="Total number of requests in the batch.")
|
172
|
+
completed: StrictInt = Field(description="Number of requests that have been completed successfully.")
|
173
|
+
failed: StrictInt = Field(description="Number of requests that have failed.")
|
174
|
+
__properties: ClassVar[List[str]] = ["total", "completed", "failed"]
|
175
|
+
|
176
|
+
model_config = {
|
177
|
+
"populate_by_name": True,
|
178
|
+
"validate_assignment": True,
|
179
|
+
"protected_namespaces": (),
|
180
|
+
}
|
181
|
+
|
182
|
+
def to_str(self) -> str:
|
183
|
+
"""Returns the string representation of the model using alias"""
|
184
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
185
|
+
|
186
|
+
def to_json(self) -> str:
|
187
|
+
"""Returns the JSON representation of the model using alias"""
|
188
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
189
|
+
return json.dumps(self.to_dict())
|
190
|
+
|
191
|
+
@classmethod
|
192
|
+
def from_json(cls, json_str: str) -> Self:
|
193
|
+
"""Create an instance of BatchRequestCounts from a JSON string"""
|
194
|
+
return cls.from_dict(json.loads(json_str))
|
195
|
+
|
196
|
+
def to_dict(self) -> Dict[str, Any]:
|
197
|
+
"""Return the dictionary representation of the model using alias.
|
198
|
+
|
199
|
+
This has the following differences from calling pydantic's
|
200
|
+
`self.model_dump(by_alias=True)`:
|
201
|
+
|
202
|
+
* `None` is only added to the output dict for nullable fields that
|
203
|
+
were set at model initialization. Other fields with value `None`
|
204
|
+
are ignored.
|
205
|
+
"""
|
206
|
+
_dict = self.model_dump(
|
207
|
+
by_alias=True,
|
208
|
+
exclude={
|
209
|
+
},
|
210
|
+
exclude_none=True,
|
211
|
+
)
|
212
|
+
return _dict
|
213
|
+
|
214
|
+
@classmethod
|
215
|
+
def from_dict(cls, obj: Dict) -> Self:
|
216
|
+
"""Create an instance of BatchRequestCounts from a dict"""
|
217
|
+
if obj is None:
|
218
|
+
return None
|
219
|
+
|
220
|
+
if not isinstance(obj, dict):
|
221
|
+
return cls.model_validate(obj)
|
222
|
+
|
223
|
+
_obj = cls.model_validate({
|
224
|
+
"total": obj.get("total"),
|
225
|
+
"completed": obj.get("completed"),
|
226
|
+
"failed": obj.get("failed")
|
227
|
+
})
|
228
|
+
return _obj
|
229
|
+
|
230
|
+
|
231
|
+
class Batch(BaseModel):
|
232
|
+
"""
|
233
|
+
Batch
|
234
|
+
""" # noqa: E501
|
235
|
+
id: StrictStr
|
236
|
+
object: StrictStr = Field(description="The object type, which is always `batch`.")
|
237
|
+
endpoint: StrictStr = Field(description="The OpenAI API endpoint used by the batch.")
|
238
|
+
errors: Optional[BatchErrors] = None
|
239
|
+
input_file_id: StrictStr = Field(description="The ID of the input file for the batch.")
|
240
|
+
completion_window: StrictStr = Field(description="The time frame within which the batch should be processed.")
|
241
|
+
status: StrictStr = Field(description="The current status of the batch.")
|
242
|
+
output_file_id: Optional[StrictStr] = Field(default=None,
|
243
|
+
description="The ID of the file containing the outputs of successfully executed requests.")
|
244
|
+
error_file_id: Optional[StrictStr] = Field(default=None,
|
245
|
+
description="The ID of the file containing the outputs of requests with errors.")
|
246
|
+
created_at: StrictInt = Field(description="The Unix timestamp (in seconds) for when the batch was created.")
|
247
|
+
in_progress_at: Optional[StrictInt] = Field(default=None,
|
248
|
+
description="The Unix timestamp (in seconds) for when the batch started processing.")
|
249
|
+
expires_at: Optional[StrictInt] = Field(default=None,
|
250
|
+
description="The Unix timestamp (in seconds) for when the batch will expire.")
|
251
|
+
finalizing_at: Optional[StrictInt] = Field(default=None,
|
252
|
+
description="The Unix timestamp (in seconds) for when the batch started finalizing.")
|
253
|
+
completed_at: Optional[StrictInt] = Field(default=None,
|
254
|
+
description="The Unix timestamp (in seconds) for when the batch was completed.")
|
255
|
+
failed_at: Optional[StrictInt] = Field(default=None,
|
256
|
+
description="The Unix timestamp (in seconds) for when the batch failed.")
|
257
|
+
expired_at: Optional[StrictInt] = Field(default=None,
|
258
|
+
description="The Unix timestamp (in seconds) for when the batch expired.")
|
259
|
+
cancelling_at: Optional[StrictInt] = Field(default=None,
|
260
|
+
description="The Unix timestamp (in seconds) for when the batch started cancelling.")
|
261
|
+
cancelled_at: Optional[StrictInt] = Field(default=None,
|
262
|
+
description="The Unix timestamp (in seconds) for when the batch was cancelled.")
|
263
|
+
request_counts: Optional[BatchRequestCounts] = None
|
264
|
+
metadata: Optional[Dict[str, Any]] = Field(default=None,
|
265
|
+
description="Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format. Keys can be a maximum of 64 characters long and values can be a maxium of 512 characters long. ")
|
266
|
+
__properties: ClassVar[List[str]] = ["id", "object", "endpoint", "errors", "input_file_id", "completion_window",
|
267
|
+
"status", "output_file_id", "error_file_id", "created_at", "in_progress_at",
|
268
|
+
"expires_at", "finalizing_at", "completed_at", "failed_at", "expired_at",
|
269
|
+
"cancelling_at", "cancelled_at", "request_counts", "metadata"]
|
270
|
+
|
271
|
+
@field_validator('object')
|
272
|
+
def object_validate_enum(cls, value):
|
273
|
+
"""Validates the enum"""
|
274
|
+
if value not in ('batch'):
|
275
|
+
raise ValueError("must be one of enum values ('batch')")
|
276
|
+
return value
|
277
|
+
|
278
|
+
@field_validator('status')
|
279
|
+
def status_validate_enum(cls, value):
|
280
|
+
"""Validates the enum"""
|
281
|
+
if value not in (
|
282
|
+
'validating', 'failed', 'in_progress', 'finalizing', 'completed', 'expired', 'cancelling', 'cancelled'):
|
283
|
+
raise ValueError(
|
284
|
+
"must be one of enum values ('validating', 'failed', 'in_progress', 'finalizing', 'completed', 'expired', 'cancelling', 'cancelled')")
|
285
|
+
return value
|
286
|
+
|
287
|
+
model_config = {
|
288
|
+
"populate_by_name": True,
|
289
|
+
"validate_assignment": True,
|
290
|
+
"protected_namespaces": (),
|
291
|
+
}
|
292
|
+
|
293
|
+
def to_str(self) -> str:
|
294
|
+
"""Returns the string representation of the model using alias"""
|
295
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
296
|
+
|
297
|
+
def to_json(self) -> str:
|
298
|
+
"""Returns the JSON representation of the model using alias"""
|
299
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
300
|
+
return json.dumps(self.to_dict())
|
301
|
+
|
302
|
+
@classmethod
|
303
|
+
def from_json(cls, json_str: str) -> Self:
|
304
|
+
"""Create an instance of Batch from a JSON string"""
|
305
|
+
return cls.from_dict(json.loads(json_str))
|
306
|
+
|
307
|
+
def to_dict(self) -> Dict[str, Any]:
|
308
|
+
"""Return the dictionary representation of the model using alias.
|
309
|
+
|
310
|
+
This has the following differences from calling pydantic's
|
311
|
+
`self.model_dump(by_alias=True)`:
|
312
|
+
|
313
|
+
* `None` is only added to the output dict for nullable fields that
|
314
|
+
were set at model initialization. Other fields with value `None`
|
315
|
+
are ignored.
|
316
|
+
"""
|
317
|
+
_dict = self.model_dump(
|
318
|
+
by_alias=True,
|
319
|
+
exclude={
|
320
|
+
},
|
321
|
+
exclude_none=True,
|
322
|
+
)
|
323
|
+
# override the default output from pydantic by calling `to_dict()` of errors
|
324
|
+
if self.errors:
|
325
|
+
_dict['errors'] = self.errors.to_dict()
|
326
|
+
# override the default output from pydantic by calling `to_dict()` of request_counts
|
327
|
+
if self.request_counts:
|
328
|
+
_dict['request_counts'] = self.request_counts.to_dict()
|
329
|
+
# set to None if metadata (nullable) is None
|
330
|
+
# and model_fields_set contains the field
|
331
|
+
if self.metadata is None and "metadata" in self.model_fields_set:
|
332
|
+
_dict['metadata'] = None
|
333
|
+
|
334
|
+
return _dict
|
335
|
+
|
336
|
+
@classmethod
|
337
|
+
def from_dict(cls, obj: Dict) -> Self:
|
338
|
+
"""Create an instance of Batch from a dict"""
|
339
|
+
if obj is None:
|
340
|
+
return None
|
341
|
+
|
342
|
+
if not isinstance(obj, dict):
|
343
|
+
return cls.model_validate(obj)
|
344
|
+
|
345
|
+
_obj = cls.model_validate({
|
346
|
+
"id": obj.get("id"),
|
347
|
+
"object": obj.get("object"),
|
348
|
+
"endpoint": obj.get("endpoint"),
|
349
|
+
"errors": BatchErrors.from_dict(obj.get("errors")) if obj.get("errors") is not None else None,
|
350
|
+
"input_file_id": obj.get("input_file_id"),
|
351
|
+
"completion_window": obj.get("completion_window"),
|
352
|
+
"status": obj.get("status"),
|
353
|
+
"output_file_id": obj.get("output_file_id"),
|
354
|
+
"error_file_id": obj.get("error_file_id"),
|
355
|
+
"created_at": obj.get("created_at"),
|
356
|
+
"in_progress_at": obj.get("in_progress_at"),
|
357
|
+
"expires_at": obj.get("expires_at"),
|
358
|
+
"finalizing_at": obj.get("finalizing_at"),
|
359
|
+
"completed_at": obj.get("completed_at"),
|
360
|
+
"failed_at": obj.get("failed_at"),
|
361
|
+
"expired_at": obj.get("expired_at"),
|
362
|
+
"cancelling_at": obj.get("cancelling_at"),
|
363
|
+
"cancelled_at": obj.get("cancelled_at"),
|
364
|
+
"request_counts": BatchRequestCounts.from_dict(obj.get("request_counts")) if obj.get(
|
365
|
+
"request_counts") is not None else None,
|
366
|
+
"metadata": obj.get("metadata")
|
367
|
+
})
|
368
|
+
return _obj
|
369
|
+
|
370
|
+
|
371
|
+
class ListBatchesResponse(BaseModel):
|
372
|
+
"""
|
373
|
+
ListBatchesResponse
|
374
|
+
""" # noqa: E501
|
375
|
+
data: List[Batch]
|
376
|
+
first_id: Optional[StrictStr] = None
|
377
|
+
last_id: Optional[StrictStr] = None
|
378
|
+
has_more: StrictBool
|
379
|
+
object: StrictStr
|
380
|
+
__properties: ClassVar[List[str]] = ["data", "first_id", "last_id", "has_more", "object"]
|
381
|
+
|
382
|
+
@field_validator('object')
|
383
|
+
def object_validate_enum(cls, value):
|
384
|
+
"""Validates the enum"""
|
385
|
+
if value not in ('list'):
|
386
|
+
raise ValueError("must be one of enum values ('list')")
|
387
|
+
return value
|
388
|
+
|
389
|
+
model_config = {
|
390
|
+
"populate_by_name": True,
|
391
|
+
"validate_assignment": True,
|
392
|
+
"protected_namespaces": (),
|
393
|
+
}
|
394
|
+
|
395
|
+
def to_str(self) -> str:
|
396
|
+
"""Returns the string representation of the model using alias"""
|
397
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
398
|
+
|
399
|
+
def to_json(self) -> str:
|
400
|
+
"""Returns the JSON representation of the model using alias"""
|
401
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
402
|
+
return json.dumps(self.to_dict())
|
403
|
+
|
404
|
+
@classmethod
|
405
|
+
def from_json(cls, json_str: str) -> Self:
|
406
|
+
"""Create an instance of ListBatchesResponse from a JSON string"""
|
407
|
+
return cls.from_dict(json.loads(json_str))
|
408
|
+
|
409
|
+
def to_dict(self) -> Dict[str, Any]:
|
410
|
+
"""Return the dictionary representation of the model using alias.
|
411
|
+
|
412
|
+
This has the following differences from calling pydantic's
|
413
|
+
`self.model_dump(by_alias=True)`:
|
414
|
+
|
415
|
+
* `None` is only added to the output dict for nullable fields that
|
416
|
+
were set at model initialization. Other fields with value `None`
|
417
|
+
are ignored.
|
418
|
+
"""
|
419
|
+
_dict = self.model_dump(
|
420
|
+
by_alias=True,
|
421
|
+
exclude={
|
422
|
+
},
|
423
|
+
exclude_none=True,
|
424
|
+
)
|
425
|
+
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
426
|
+
_items = []
|
427
|
+
if self.data:
|
428
|
+
for _item in self.data:
|
429
|
+
if _item:
|
430
|
+
_items.append(_item.to_dict())
|
431
|
+
_dict['data'] = _items
|
432
|
+
return _dict
|
433
|
+
|
434
|
+
@classmethod
|
435
|
+
def from_dict(cls, obj: Dict) -> Self:
|
436
|
+
"""Create an instance of ListBatchesResponse from a dict"""
|
437
|
+
if obj is None:
|
438
|
+
return None
|
439
|
+
|
440
|
+
if not isinstance(obj, dict):
|
441
|
+
return cls.model_validate(obj)
|
442
|
+
|
443
|
+
_obj = cls.model_validate({
|
444
|
+
"data": [Batch.from_dict(_item) for _item in obj.get("data")] if obj.get("data") is not None else None,
|
445
|
+
"first_id": obj.get("first_id"),
|
446
|
+
"last_id": obj.get("last_id"),
|
447
|
+
"has_more": obj.get("has_more"),
|
448
|
+
"object": obj.get("object")
|
449
|
+
})
|
450
|
+
return _obj
|
@@ -0,0 +1,64 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
# @Project : AI. @by PyCharm
|
4
|
+
# @File : celery_types
|
5
|
+
# @Time : 2024/11/25 17:56
|
6
|
+
# @Author : betterme
|
7
|
+
# @WeChat : meutils
|
8
|
+
# @Software : PyCharm
|
9
|
+
# @Description :
|
10
|
+
|
11
|
+
from enum import Enum
|
12
|
+
from meutils.pipe import *
|
13
|
+
|
14
|
+
|
15
|
+
# 1. 定义标准响应模型
|
16
|
+
class TaskStatus(str, Enum):
|
17
|
+
#: Task state is unknown (assumed pending since you know the id).
|
18
|
+
PENDING = 'PENDING'
|
19
|
+
#: Task was received by a worker (only used in events).
|
20
|
+
RECEIVED = 'RECEIVED'
|
21
|
+
#: Task was started by a worker (:setting:`task_track_started`).
|
22
|
+
STARTED = 'STARTED'
|
23
|
+
#: Task succeeded
|
24
|
+
SUCCESS = 'SUCCESS'
|
25
|
+
#: Task failed
|
26
|
+
FAILURE = 'FAILURE'
|
27
|
+
#: Task was revoked.
|
28
|
+
REVOKED = 'REVOKED'
|
29
|
+
#: Task was rejected (only used in events).
|
30
|
+
REJECTED = 'REJECTED'
|
31
|
+
#: Task is waiting for retry.
|
32
|
+
RETRY = 'RETRY'
|
33
|
+
IGNORED = 'IGNORED'
|
34
|
+
|
35
|
+
|
36
|
+
class TaskResponse(BaseModel):
|
37
|
+
code: int
|
38
|
+
message: str
|
39
|
+
task_id: str = Field(default_factory=shortuuid.random) # celery task_id
|
40
|
+
status: TaskStatus = "PENDING"
|
41
|
+
data: Optional[Any] = None # 存放具体的Task结构
|
42
|
+
|
43
|
+
created_at: str = Field(default_factory=lambda: datetime.datetime.today().isoformat()) # "2024-11-19T03:11:22.795Z"
|
44
|
+
|
45
|
+
# 系统水印: 一般用来存轮询token ###### 不要暴露
|
46
|
+
system_fingerprint: Optional[str] = None
|
47
|
+
|
48
|
+
class Config:
|
49
|
+
# 允许额外字段,增加灵活性
|
50
|
+
extra = 'allow'
|
51
|
+
|
52
|
+
# kling示例
|
53
|
+
# code: int = 0
|
54
|
+
# message: str = ""
|
55
|
+
# request_id: str = ""
|
56
|
+
#
|
57
|
+
# data: Optional[Task] = None
|
58
|
+
#
|
59
|
+
# # 系统水印
|
60
|
+
# system_fingerprint: Optional[str] = None
|
61
|
+
|
62
|
+
|
63
|
+
if __name__ == '__main__':
|
64
|
+
print(TaskResponse(code=1, message='', data={'a': 1}))
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
# @Project : AI. @by PyCharm
|
4
|
+
# @File : chatfire_types
|
5
|
+
# @Time : 2024/6/27 17:26
|
6
|
+
# @Author : betterme
|
7
|
+
# @WeChat : meutils
|
8
|
+
# @Software : PyCharm
|
9
|
+
# @Description :
|
10
|
+
|
11
|
+
from meutils.pipe import *
|
12
|
+
|
13
|
+
MODELS = {
|
14
|
+
""
|
15
|
+
}
|