diff --git a/README.md b/README.md index b834ba0..42a8760 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Dify x OpenAPI -[![Dify Version Support](https://img.shields.io/badge/Support_Dify_Version-1.5.0-blue)](https://github.com/langgenius/dify) +[![Dify Version Support](https://img.shields.io/badge/Support_Dify_Version-1.5.1-blue)](https://github.com/langgenius/dify) [![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff) [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [![Package Manager: uv](https://img.shields.io/badge/package%20manager-uv-black)](https://github.com/astral-sh/uv) @@ -39,7 +39,7 @@ Provides OpenAPI Schema for [Dify](https://github.com/langgenius/dify) API, whic > [!tip] > This indicates that the API has passed at least one test case request. If you find any API errors, feel free to submit an issue or PR! -- Knowledge Base: [OpenAPI Schema(中文)](./schema/knowledge_base.zh.yaml) | [OpenAPI Schema(English)](./schema/knowledge_base.en.yaml) | [Official Documentation Source](https://github.com/langgenius/dify/tree/1.5.0/web/app/(commonLayout)/datasets/template) +- Knowledge Base: [OpenAPI Schema(中文)](./schema/knowledge_base.zh.yaml) | [OpenAPI Schema(English)](./schema/knowledge_base.en.yaml) | [Official Documentation Source](https://github.com/langgenius/dify/tree/1.5.1/web/app/(commonLayout)/datasets/template) - [x] POST /datasets - Create empty knowledge base - [x] POST /datasets/{dataset_id} - Update knowledge base - [x] GET /datasets/{dataset_id}/documents - Get document list @@ -71,7 +71,7 @@ Provides OpenAPI Schema for [Dify](https://github.com/langgenius/dify) API, whic - [x] POST /datasets/{dataset_id}/tags - Query dataset bound tags - [x] POST /datasets/{dataset_id}/retrieval - Retrieve with metadata filtering conditions -- Chat Application: [OpenAPI Schema(中文)](./schema/app_chat.zh.yaml) | [OpenAPI Schema(English)](./schema/app_chat.en.yaml) | [Official Documentation Source](https://github.com/langgenius/dify/tree/1.5.0/web/app/components/develop/template) +- Chat Application: [OpenAPI Schema(中文)](./schema/app_chat.zh.yaml) | [OpenAPI Schema(English)](./schema/app_chat.en.yaml) | [Official Documentation Source](https://github.com/langgenius/dify/tree/1.5.1/web/app/components/develop/template) - [x] POST /chat-messages - Send conversation message - [x] POST /files/upload - Upload file - [x] POST /messages/{message_id}/feedbacks - Message feedback @@ -84,7 +84,7 @@ Provides OpenAPI Schema for [Dify](https://github.com/langgenius/dify) API, whic - [x] GET /info - Get application basic information - [x] GET /parameters - Get application parameters -- Advanced Chat Application: [OpenAPI Schema(中文)](./schema/app_advanced_chat.zh.yaml) | [OpenAPI Schema(English)](./schema/app_advanced_chat.en.yaml) | [Official Documentation Source](https://github.com/langgenius/dify/tree/1.5.0/web/app/components/develop/template) +- Advanced Chat Application: [OpenAPI Schema(中文)](./schema/app_advanced_chat.zh.yaml) | [OpenAPI Schema(English)](./schema/app_advanced_chat.en.yaml) | [Official Documentation Source](https://github.com/langgenius/dify/tree/1.5.1/web/app/components/develop/template) - [x] POST /audio-to-text - Speech to text - [x] POST /text-to-audio - Text to speech - [x] GET /apps/annotations - Get annotation list @@ -100,10 +100,10 @@ Provides OpenAPI Schema for [Dify](https://github.com/langgenius/dify) API, whic - [x] GET /parameters - Get application parameters -- Text Generation Application: [OpenAPI Schema(中文)](./schema/app_generation.zh.yaml) | [OpenAPI Schema(English)](./schema/app_generation.en.yaml) | [Official Documentation Source](https://github.com/langgenius/dify/tree/1.5.0/web/app/components/develop/template) +- Text Generation Application: [OpenAPI Schema(中文)](./schema/app_generation.zh.yaml) | [OpenAPI Schema(English)](./schema/app_generation.en.yaml) | [Official Documentation Source](https://github.com/langgenius/dify/tree/1.5.1/web/app/components/develop/template) - [x] POST /completion-messages - Send message -- Workflow Application: [OpenAPI Schema(中文)](./schema/app_workflow.zh.yaml) | [OpenAPI Schema(English)](./schema/app_workflow.en.yaml) | [Official Documentation Source](https://github.com/langgenius/dify/tree/1.5.0/web/app/components/develop/template) +- Workflow Application: [OpenAPI Schema(中文)](./schema/app_workflow.zh.yaml) | [OpenAPI Schema(English)](./schema/app_workflow.en.yaml) | [Official Documentation Source](https://github.com/langgenius/dify/tree/1.5.1/web/app/components/develop/template) - [x] POST /workflows/run - Execute workflow - [x] GET /workflows/run/{workflow_run_id} - Get workflow execution status - [x] POST /workflows/tasks/{task_id}/stop - Stop response diff --git a/README.zh.md b/README.zh.md index 7ee9235..8d7ba66 100644 --- a/README.zh.md +++ b/README.zh.md @@ -1,6 +1,6 @@ # Dify x OpenAPI -[![Dify Version Support](https://img.shields.io/badge/Support_Dify_Version-1.5.0-blue)](https://github.com/langgenius/dify) +[![Dify Version Support](https://img.shields.io/badge/Support_Dify_Version-1.5.1-blue)](https://github.com/langgenius/dify) [![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff) [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [![Package Manager: uv](https://img.shields.io/badge/package%20manager-uv-black)](https://github.com/astral-sh/uv) @@ -41,7 +41,7 @@ > [!tip] > 这里指至少可以通过一次测试用例请求, 如果你发现有哪些API错误, 欢迎提issue或者pr! -- 知识库: [OpenAPI Schema(中文)](./schema/knowledge_base.zh.yaml) | [OpenAPI Schema(English)](./schema/knowledge_base.en.yaml) | [官方文档源码](https://github.com/langgenius/dify/tree/1.5.0/web/app/(commonLayout)/datasets/template) +- 知识库: [OpenAPI Schema(中文)](./schema/knowledge_base.zh.yaml) | [OpenAPI Schema(English)](./schema/knowledge_base.en.yaml) | [官方文档源码](https://github.com/langgenius/dify/tree/1.5.1/web/app/(commonLayout)/datasets/template) - [x] POST /datasets - 创建空知识库 - [x] POST /datasets/{dataset_id} - 更新知识库 - [x] GET /datasets/{dataset_id}/documents - 获取文档列表 @@ -73,7 +73,7 @@ - [x] POST /datasets/{dataset_id}/tags - 查询知识库已绑定的标签 - [x] POST /datasets/{dataset_id}/retrieval - 带元数据过滤条件的检索 -- 聊天应用: [OpenAPI Schema(中文)](./schema/app_chat.zh.yaml) | [OpenAPI Schema(English)](./schema/app_chat.en.yaml) | [官方文档源码](https://github.com/langgenius/dify/tree/1.5.0/web/app/components/develop/template) +- 聊天应用: [OpenAPI Schema(中文)](./schema/app_chat.zh.yaml) | [OpenAPI Schema(English)](./schema/app_chat.en.yaml) | [官方文档源码](https://github.com/langgenius/dify/tree/1.5.1/web/app/components/develop/template) - [x] POST /chat-messages - 发送对话消息 - [x] POST /files/upload - 上传文件 - [x] POST /messages/{message_id}/feedbacks - 消息反馈 @@ -86,7 +86,7 @@ - [x] GET /info - 获取应用基本信息 - [x] GET /parameters - 获取应用参数 -- 高级聊天应用: [OpenAPI Schema(中文)](./schema/app_advanced_chat.zh.yaml) | [OpenAPI Schema(English)](./schema/app_advanced_chat.en.yaml) | [官方文档源码](https://github.com/langgenius/dify/tree/1.5.0/web/app/components/develop/template) +- 高级聊天应用: [OpenAPI Schema(中文)](./schema/app_advanced_chat.zh.yaml) | [OpenAPI Schema(English)](./schema/app_advanced_chat.en.yaml) | [官方文档源码](https://github.com/langgenius/dify/tree/1.5.1/web/app/components/develop/template) - [x] POST /audio-to-text - 语音转文字 - [x] POST /text-to-audio - 文字转语音 - [x] GET /apps/annotations - 获取标注列表 @@ -101,10 +101,10 @@ - [x] GET /info - 获取应用基本信息 - [x] GET /parameters - 获取应用参数(包含文字转语音设置) -- 文本生成应用: [OpenAPI Schema(中文)](./schema/app_generation.zh.yaml) | [OpenAPI Schema(English)](./schema/app_generation.en.yaml) | [官方文档源码](https://github.com/langgenius/dify/tree/1.5.0/web/app/components/develop/template) +- 文本生成应用: [OpenAPI Schema(中文)](./schema/app_generation.zh.yaml) | [OpenAPI Schema(English)](./schema/app_generation.en.yaml) | [官方文档源码](https://github.com/langgenius/dify/tree/1.5.1/web/app/components/develop/template) - [x] POST /completion-messages - 发送消息 -- 工作流应用: [OpenAPI Schema(中文)](./schema/app_workflow.zh.yaml) | [OpenAPI Schema(English)](./schema/app_workflow.en.yaml) | [官方文档源码](https://github.com/langgenius/dify/tree/1.5.0/web/app/components/develop/template) +- 工作流应用: [OpenAPI Schema(中文)](./schema/app_workflow.zh.yaml) | [OpenAPI Schema(English)](./schema/app_workflow.en.yaml) | [官方文档源码](https://github.com/langgenius/dify/tree/1.5.1/web/app/components/develop/template) - [x] POST /workflows/run - 执行工作流 - [x] GET /workflows/run/{workflow_run_id} - 获取工作流执行状态 - [x] POST /workflows/tasks/{task_id}/stop - 停止响应 diff --git a/libs/dify b/libs/dify index cea6522..a79f37b 160000 --- a/libs/dify +++ b/libs/dify @@ -1 +1 @@ -Subproject commit cea6522122e63b51aedbabe0e000f1efc72faa8b +Subproject commit a79f37b686ca4a487df4311f413cc90e52e7af44 diff --git a/misc/official_api_doc_changes/1.5.0__1.5.1.diff b/misc/official_api_doc_changes/1.5.0__1.5.1.diff new file mode 100644 index 0000000..715fcb3 --- /dev/null +++ b/misc/official_api_doc_changes/1.5.0__1.5.1.diff @@ -0,0 +1,135 @@ +diff --git a/web/app/(commonLayout)/datasets/template/template.zh.mdx b/web/app/(commonLayout)/datasets/template/template.zh.mdx +index d407fad3c..c21ce3bf5 100644 +--- a/web/app/(commonLayout)/datasets/template/template.zh.mdx ++++ b/web/app/(commonLayout)/datasets/template/template.zh.mdx +@@ -1131,6 +1131,130 @@ import { Row, Col, Properties, Property, Heading, SubProperty, PropertyInstructi + +
+ ++ ++ ++ ++ 获取文档详情. ++ ### Path ++ - `dataset_id` (string) 知识库 ID ++ - `document_id` (string) 文档 ID ++ ++ ### Query ++ - `metadata` (string) metadata 过滤条件 `all`, `only`, 或者 `without`. 默认是 `all`. ++ ++ ### Response ++ 返回知识库文档的详情. ++ ++ ++ ### Request Example ++ ++ ```bash {{ title: 'cURL' }} ++ curl -X GET '${props.apiBaseUrl}/datasets/{dataset_id}/documents/{document_id}' \ ++ -H 'Authorization: Bearer {api_key}' ++ ``` ++ ++ ++ ### Response Example ++ ++ ```json {{ title: 'Response' }} ++ { ++ "id": "f46ae30c-5c11-471b-96d0-464f5f32a7b2", ++ "position": 1, ++ "data_source_type": "upload_file", ++ "data_source_info": { ++ "upload_file": { ++ ... ++ } ++ }, ++ "dataset_process_rule_id": "24b99906-845e-499f-9e3c-d5565dd6962c", ++ "dataset_process_rule": { ++ "mode": "hierarchical", ++ "rules": { ++ "pre_processing_rules": [ ++ { ++ "id": "remove_extra_spaces", ++ "enabled": true ++ }, ++ { ++ "id": "remove_urls_emails", ++ "enabled": false ++ } ++ ], ++ "segmentation": { ++ "separator": "**********page_ending**********", ++ "max_tokens": 1024, ++ "chunk_overlap": 0 ++ }, ++ "parent_mode": "paragraph", ++ "subchunk_segmentation": { ++ "separator": "\n", ++ "max_tokens": 512, ++ "chunk_overlap": 0 ++ } ++ } ++ }, ++ "document_process_rule": { ++ "id": "24b99906-845e-499f-9e3c-d5565dd6962c", ++ "dataset_id": "48a0db76-d1a9-46c1-ae35-2baaa919a8a9", ++ "mode": "hierarchical", ++ "rules": { ++ "pre_processing_rules": [ ++ { ++ "id": "remove_extra_spaces", ++ "enabled": true ++ }, ++ { ++ "id": "remove_urls_emails", ++ "enabled": false ++ } ++ ], ++ "segmentation": { ++ "separator": "**********page_ending**********", ++ "max_tokens": 1024, ++ "chunk_overlap": 0 ++ }, ++ "parent_mode": "paragraph", ++ "subchunk_segmentation": { ++ "separator": "\n", ++ "max_tokens": 512, ++ "chunk_overlap": 0 ++ } ++ } ++ }, ++ "name": "xxxx", ++ "created_from": "web", ++ "created_by": "17f71940-a7b5-4c77-b60f-2bd645c1ffa0", ++ "created_at": 1750464191, ++ "tokens": null, ++ "indexing_status": "waiting", ++ "completed_at": null, ++ "updated_at": 1750464191, ++ "indexing_latency": null, ++ "error": null, ++ "enabled": true, ++ "disabled_at": null, ++ "disabled_by": null, ++ "archived": false, ++ "segment_count": 0, ++ "average_segment_length": 0, ++ "hit_count": null, ++ "display_status": "queuing", ++ "doc_form": "hierarchical_model", ++ "doc_language": "Chinese Simplified" ++ } ++ ``` ++ ++ ++ ++___ ++
++ ++ + DocumentDetail: + """ + Get document detail + + Parameters + ---------- + dataset_id : str + Knowledge Base ID + + document_id : str + Document ID + + metadata : typing.Optional[GetDocumentDetailRequestMetadata] + metadata filter condition + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + DocumentDetail + Successfully retrieved document detail + + Examples + -------- + from dify import DifyApi + client = DifyApi(token="YOUR_TOKEN", ) + client.knowledge_base.documents.get_document_detail(dataset_id='dataset_id', document_id='document_id', ) + """ + _response = self._raw_client.get_document_detail( + dataset_id, document_id, metadata=metadata, request_options=request_options + ) + return _response.data + def delete_document( self, dataset_id: str, document_id: str, *, request_options: typing.Optional[RequestOptions] = None ) -> None: @@ -774,6 +817,50 @@ async def main() -> None: ) return _response.data + async def get_document_detail( + self, + dataset_id: str, + document_id: str, + *, + metadata: typing.Optional[GetDocumentDetailRequestMetadata] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> DocumentDetail: + """ + Get document detail + + Parameters + ---------- + dataset_id : str + Knowledge Base ID + + document_id : str + Document ID + + metadata : typing.Optional[GetDocumentDetailRequestMetadata] + metadata filter condition + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + DocumentDetail + Successfully retrieved document detail + + Examples + -------- + from dify import AsyncDifyApi + import asyncio + client = AsyncDifyApi(token="YOUR_TOKEN", ) + async def main() -> None: + await client.knowledge_base.documents.get_document_detail(dataset_id='dataset_id', document_id='document_id', ) + asyncio.run(main()) + """ + _response = await self._raw_client.get_document_detail( + dataset_id, document_id, metadata=metadata, request_options=request_options + ) + return _response.data + async def delete_document( self, dataset_id: str, document_id: str, *, request_options: typing.Optional[RequestOptions] = None ) -> None: diff --git a/src/dify_sdk/knowledge_base/documents/raw_client.py b/src/dify_sdk/knowledge_base/documents/raw_client.py index 8af8cef..f3f11b7 100644 --- a/src/dify_sdk/knowledge_base/documents/raw_client.py +++ b/src/dify_sdk/knowledge_base/documents/raw_client.py @@ -14,7 +14,9 @@ from ..errors.bad_request_error import BadRequestError from ..errors.content_too_large_error import ContentTooLargeError from ..errors.forbidden_error import ForbiddenError +from ..errors.not_found_error import NotFoundError from ..errors.unsupported_media_type_error import UnsupportedMediaTypeError +from ..types.document_detail import DocumentDetail from ..types.error import Error from ..types.process_rule import ProcessRule from ..types.upload_file import UploadFile @@ -24,6 +26,7 @@ from .types.create_document_by_text_request_doc_form import CreateDocumentByTextRequestDocForm from .types.create_document_by_text_request_indexing_technique import CreateDocumentByTextRequestIndexingTechnique from .types.create_document_by_text_response import CreateDocumentByTextResponse +from .types.get_document_detail_request_metadata import GetDocumentDetailRequestMetadata from .types.get_document_indexing_status_response import GetDocumentIndexingStatusResponse from .types.get_document_list_response import GetDocumentListResponse from .types.update_document_by_file_response import UpdateDocumentByFileResponse @@ -581,6 +584,89 @@ def get_document_list( raise ApiError(headers=dict(_response.headers), status_code=_response.status_code, body=_response.text) raise ApiError(headers=dict(_response.headers), status_code=_response.status_code, body=_response_json) + def get_document_detail( + self, + dataset_id: str, + document_id: str, + *, + metadata: typing.Optional[GetDocumentDetailRequestMetadata] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> HttpResponse[DocumentDetail]: + """ + Get document detail + + Parameters + ---------- + dataset_id : str + Knowledge Base ID + + document_id : str + Document ID + + metadata : typing.Optional[GetDocumentDetailRequestMetadata] + metadata filter condition + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[DocumentDetail] + Successfully retrieved document detail + """ + _response = self._client_wrapper.httpx_client.request( + f"datasets/{jsonable_encoder(dataset_id)}/documents/{jsonable_encoder(document_id)}", + method="GET", + params={ + "metadata": metadata, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + DocumentDetail, + parse_obj_as( + type_=DocumentDetail, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + if _response.status_code == 400: + raise BadRequestError( + typing.cast( + Error, + parse_obj_as( + type_=Error, # type: ignore + object_=_response.json(), + ), + ) + ) + if _response.status_code == 403: + raise ForbiddenError( + typing.cast( + Error, + parse_obj_as( + type_=Error, # type: ignore + object_=_response.json(), + ), + ) + ) + if _response.status_code == 404: + raise NotFoundError( + typing.cast( + typing.Optional[typing.Any], + parse_obj_as( + type_=typing.Optional[typing.Any], # type: ignore + object_=_response.json(), + ), + ) + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(headers=dict(_response.headers), status_code=_response.status_code, body=_response.text) + raise ApiError(headers=dict(_response.headers), status_code=_response.status_code, body=_response_json) + def delete_document( self, dataset_id: str, document_id: str, *, request_options: typing.Optional[RequestOptions] = None ) -> HttpResponse[None]: @@ -1321,6 +1407,89 @@ async def get_document_list( raise ApiError(headers=dict(_response.headers), status_code=_response.status_code, body=_response.text) raise ApiError(headers=dict(_response.headers), status_code=_response.status_code, body=_response_json) + async def get_document_detail( + self, + dataset_id: str, + document_id: str, + *, + metadata: typing.Optional[GetDocumentDetailRequestMetadata] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncHttpResponse[DocumentDetail]: + """ + Get document detail + + Parameters + ---------- + dataset_id : str + Knowledge Base ID + + document_id : str + Document ID + + metadata : typing.Optional[GetDocumentDetailRequestMetadata] + metadata filter condition + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[DocumentDetail] + Successfully retrieved document detail + """ + _response = await self._client_wrapper.httpx_client.request( + f"datasets/{jsonable_encoder(dataset_id)}/documents/{jsonable_encoder(document_id)}", + method="GET", + params={ + "metadata": metadata, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + DocumentDetail, + parse_obj_as( + type_=DocumentDetail, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + if _response.status_code == 400: + raise BadRequestError( + typing.cast( + Error, + parse_obj_as( + type_=Error, # type: ignore + object_=_response.json(), + ), + ) + ) + if _response.status_code == 403: + raise ForbiddenError( + typing.cast( + Error, + parse_obj_as( + type_=Error, # type: ignore + object_=_response.json(), + ), + ) + ) + if _response.status_code == 404: + raise NotFoundError( + typing.cast( + typing.Optional[typing.Any], + parse_obj_as( + type_=typing.Optional[typing.Any], # type: ignore + object_=_response.json(), + ), + ) + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(headers=dict(_response.headers), status_code=_response.status_code, body=_response.text) + raise ApiError(headers=dict(_response.headers), status_code=_response.status_code, body=_response_json) + async def delete_document( self, dataset_id: str, document_id: str, *, request_options: typing.Optional[RequestOptions] = None ) -> AsyncHttpResponse[None]: diff --git a/src/dify_sdk/knowledge_base/documents/types/__init__.py b/src/dify_sdk/knowledge_base/documents/types/__init__.py index 52a4a17..029072b 100644 --- a/src/dify_sdk/knowledge_base/documents/types/__init__.py +++ b/src/dify_sdk/knowledge_base/documents/types/__init__.py @@ -8,6 +8,7 @@ from .create_document_by_text_request_doc_form import CreateDocumentByTextRequestDocForm from .create_document_by_text_request_indexing_technique import CreateDocumentByTextRequestIndexingTechnique from .create_document_by_text_response import CreateDocumentByTextResponse +from .get_document_detail_request_metadata import GetDocumentDetailRequestMetadata from .get_document_indexing_status_response import GetDocumentIndexingStatusResponse from .get_document_indexing_status_response_data_item import GetDocumentIndexingStatusResponseDataItem from .get_document_list_response import GetDocumentListResponse @@ -23,6 +24,7 @@ "CreateDocumentByTextRequestDocForm", "CreateDocumentByTextRequestIndexingTechnique", "CreateDocumentByTextResponse", + "GetDocumentDetailRequestMetadata", "GetDocumentIndexingStatusResponse", "GetDocumentIndexingStatusResponseDataItem", "GetDocumentListResponse", diff --git a/src/dify_sdk/knowledge_base/documents/types/get_document_detail_request_metadata.py b/src/dify_sdk/knowledge_base/documents/types/get_document_detail_request_metadata.py new file mode 100644 index 0000000..29e9e36 --- /dev/null +++ b/src/dify_sdk/knowledge_base/documents/types/get_document_detail_request_metadata.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +GetDocumentDetailRequestMetadata = typing.Union[typing.Literal["all", "only", "without"], typing.Any] diff --git a/src/dify_sdk/knowledge_base/errors/__init__.py b/src/dify_sdk/knowledge_base/errors/__init__.py index 9a5c3be..8e1c581 100644 --- a/src/dify_sdk/knowledge_base/errors/__init__.py +++ b/src/dify_sdk/knowledge_base/errors/__init__.py @@ -6,6 +6,14 @@ from .conflict_error import ConflictError from .content_too_large_error import ContentTooLargeError from .forbidden_error import ForbiddenError +from .not_found_error import NotFoundError from .unsupported_media_type_error import UnsupportedMediaTypeError -__all__ = ["BadRequestError", "ConflictError", "ContentTooLargeError", "ForbiddenError", "UnsupportedMediaTypeError"] +__all__ = [ + "BadRequestError", + "ConflictError", + "ContentTooLargeError", + "ForbiddenError", + "NotFoundError", + "UnsupportedMediaTypeError", +] diff --git a/src/dify_sdk/knowledge_base/errors/not_found_error.py b/src/dify_sdk/knowledge_base/errors/not_found_error.py new file mode 100644 index 0000000..dfc0fdf --- /dev/null +++ b/src/dify_sdk/knowledge_base/errors/not_found_error.py @@ -0,0 +1,10 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from ...core.api_error import ApiError + + +class NotFoundError(ApiError): + def __init__(self, body: typing.Optional[typing.Any]): + super().__init__(status_code=404, body=body) diff --git a/src/dify_sdk/knowledge_base/types/__init__.py b/src/dify_sdk/knowledge_base/types/__init__.py index 62c7aa5..b98575d 100644 --- a/src/dify_sdk/knowledge_base/types/__init__.py +++ b/src/dify_sdk/knowledge_base/types/__init__.py @@ -16,6 +16,26 @@ from .dataset_retrieval_model_dict import DatasetRetrievalModelDict from .dataset_retrieval_model_dict_reranking_model import DatasetRetrievalModelDictRerankingModel from .document import Document +from .document_detail import DocumentDetail +from .document_detail_data_source_info import DocumentDetailDataSourceInfo +from .document_detail_dataset_process_rule import DocumentDetailDatasetProcessRule +from .document_detail_dataset_process_rule_rules import DocumentDetailDatasetProcessRuleRules +from .document_detail_dataset_process_rule_rules_pre_processing_rules_item import ( + DocumentDetailDatasetProcessRuleRulesPreProcessingRulesItem, +) +from .document_detail_dataset_process_rule_rules_segmentation import DocumentDetailDatasetProcessRuleRulesSegmentation +from .document_detail_dataset_process_rule_rules_subchunk_segmentation import ( + DocumentDetailDatasetProcessRuleRulesSubchunkSegmentation, +) +from .document_detail_document_process_rule import DocumentDetailDocumentProcessRule +from .document_detail_document_process_rule_rules import DocumentDetailDocumentProcessRuleRules +from .document_detail_document_process_rule_rules_pre_processing_rules_item import ( + DocumentDetailDocumentProcessRuleRulesPreProcessingRulesItem, +) +from .document_detail_document_process_rule_rules_segmentation import DocumentDetailDocumentProcessRuleRulesSegmentation +from .document_detail_document_process_rule_rules_subchunk_segmentation import ( + DocumentDetailDocumentProcessRuleRulesSubchunkSegmentation, +) from .document_display_status import DocumentDisplayStatus from .document_segment import DocumentSegment from .document_segment_status import DocumentSegmentStatus @@ -63,6 +83,18 @@ "DatasetRetrievalModelDict", "DatasetRetrievalModelDictRerankingModel", "Document", + "DocumentDetail", + "DocumentDetailDataSourceInfo", + "DocumentDetailDatasetProcessRule", + "DocumentDetailDatasetProcessRuleRules", + "DocumentDetailDatasetProcessRuleRulesPreProcessingRulesItem", + "DocumentDetailDatasetProcessRuleRulesSegmentation", + "DocumentDetailDatasetProcessRuleRulesSubchunkSegmentation", + "DocumentDetailDocumentProcessRule", + "DocumentDetailDocumentProcessRuleRules", + "DocumentDetailDocumentProcessRuleRulesPreProcessingRulesItem", + "DocumentDetailDocumentProcessRuleRulesSegmentation", + "DocumentDetailDocumentProcessRuleRulesSubchunkSegmentation", "DocumentDisplayStatus", "DocumentSegment", "DocumentSegmentStatus", diff --git a/src/dify_sdk/knowledge_base/types/document_detail.py b/src/dify_sdk/knowledge_base/types/document_detail.py new file mode 100644 index 0000000..fb4bc2b --- /dev/null +++ b/src/dify_sdk/knowledge_base/types/document_detail.py @@ -0,0 +1,155 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .document_detail_data_source_info import DocumentDetailDataSourceInfo +from .document_detail_dataset_process_rule import DocumentDetailDatasetProcessRule +from .document_detail_document_process_rule import DocumentDetailDocumentProcessRule + + +class DocumentDetail(UniversalBaseModel): + id: typing.Optional[str] = pydantic.Field(default=None) + """ + Document ID + """ + + position: typing.Optional[int] = pydantic.Field(default=None) + """ + Document position + """ + + data_source_type: typing.Optional[str] = pydantic.Field(default=None) + """ + Data source type + """ + + data_source_info: typing.Optional[DocumentDetailDataSourceInfo] = pydantic.Field(default=None) + """ + Data source information + """ + + dataset_process_rule_id: typing.Optional[str] = pydantic.Field(default=None) + """ + Dataset process rule ID + """ + + dataset_process_rule: typing.Optional[DocumentDetailDatasetProcessRule] = pydantic.Field(default=None) + """ + Dataset process rule + """ + + document_process_rule: typing.Optional[DocumentDetailDocumentProcessRule] = pydantic.Field(default=None) + """ + Document process rule + """ + + name: typing.Optional[str] = pydantic.Field(default=None) + """ + Document name + """ + + created_from: typing.Optional[str] = pydantic.Field(default=None) + """ + Creation source + """ + + created_by: typing.Optional[str] = pydantic.Field(default=None) + """ + Creator + """ + + created_at: typing.Optional[float] = pydantic.Field(default=None) + """ + Creation timestamp + """ + + tokens: typing.Optional[int] = pydantic.Field(default=None) + """ + Token count + """ + + indexing_status: typing.Optional[str] = pydantic.Field(default=None) + """ + Indexing status + """ + + completed_at: typing.Optional[float] = pydantic.Field(default=None) + """ + Completion timestamp + """ + + updated_at: typing.Optional[float] = pydantic.Field(default=None) + """ + Update timestamp + """ + + indexing_latency: typing.Optional[float] = pydantic.Field(default=None) + """ + Indexing latency + """ + + error: typing.Optional[str] = pydantic.Field(default=None) + """ + Error message + """ + + enabled: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether enabled + """ + + disabled_at: typing.Optional[float] = pydantic.Field(default=None) + """ + Disabled timestamp + """ + + disabled_by: typing.Optional[str] = pydantic.Field(default=None) + """ + Disabled by + """ + + archived: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether archived + """ + + segment_count: typing.Optional[int] = pydantic.Field(default=None) + """ + Segment count + """ + + average_segment_length: typing.Optional[float] = pydantic.Field(default=None) + """ + Average segment length + """ + + hit_count: typing.Optional[int] = pydantic.Field(default=None) + """ + Hit count + """ + + display_status: typing.Optional[str] = pydantic.Field(default=None) + """ + Display status + """ + + doc_form: typing.Optional[str] = pydantic.Field(default=None) + """ + Document form + """ + + doc_language: typing.Optional[str] = pydantic.Field(default=None) + """ + Document language + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/dify_sdk/knowledge_base/types/document_detail_data_source_info.py b/src/dify_sdk/knowledge_base/types/document_detail_data_source_info.py new file mode 100644 index 0000000..705b70d --- /dev/null +++ b/src/dify_sdk/knowledge_base/types/document_detail_data_source_info.py @@ -0,0 +1,26 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class DocumentDetailDataSourceInfo(UniversalBaseModel): + """ + Data source information + """ + + upload_file: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None) + """ + Upload file information + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/dify_sdk/knowledge_base/types/document_detail_dataset_process_rule.py b/src/dify_sdk/knowledge_base/types/document_detail_dataset_process_rule.py new file mode 100644 index 0000000..83f13a7 --- /dev/null +++ b/src/dify_sdk/knowledge_base/types/document_detail_dataset_process_rule.py @@ -0,0 +1,32 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .document_detail_dataset_process_rule_rules import DocumentDetailDatasetProcessRuleRules + + +class DocumentDetailDatasetProcessRule(UniversalBaseModel): + """ + Dataset process rule + """ + + mode: typing.Optional[str] = pydantic.Field(default=None) + """ + Process mode + """ + + rules: typing.Optional[DocumentDetailDatasetProcessRuleRules] = pydantic.Field(default=None) + """ + Rule details + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/dify_sdk/knowledge_base/types/document_detail_dataset_process_rule_rules.py b/src/dify_sdk/knowledge_base/types/document_detail_dataset_process_rule_rules.py new file mode 100644 index 0000000..7fc42a8 --- /dev/null +++ b/src/dify_sdk/knowledge_base/types/document_detail_dataset_process_rule_rules.py @@ -0,0 +1,52 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .document_detail_dataset_process_rule_rules_pre_processing_rules_item import ( + DocumentDetailDatasetProcessRuleRulesPreProcessingRulesItem, +) +from .document_detail_dataset_process_rule_rules_segmentation import DocumentDetailDatasetProcessRuleRulesSegmentation +from .document_detail_dataset_process_rule_rules_subchunk_segmentation import ( + DocumentDetailDatasetProcessRuleRulesSubchunkSegmentation, +) + + +class DocumentDetailDatasetProcessRuleRules(UniversalBaseModel): + """ + Rule details + """ + + pre_processing_rules: typing.Optional[typing.List[DocumentDetailDatasetProcessRuleRulesPreProcessingRulesItem]] = ( + pydantic.Field(default=None) + ) + """ + Pre-processing rules list + """ + + segmentation: typing.Optional[DocumentDetailDatasetProcessRuleRulesSegmentation] = pydantic.Field(default=None) + """ + Segmentation rules + """ + + parent_mode: typing.Optional[str] = pydantic.Field(default=None) + """ + Parent mode + """ + + subchunk_segmentation: typing.Optional[DocumentDetailDatasetProcessRuleRulesSubchunkSegmentation] = pydantic.Field( + default=None + ) + """ + Sub-chunk segmentation + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/dify_sdk/knowledge_base/types/document_detail_dataset_process_rule_rules_pre_processing_rules_item.py b/src/dify_sdk/knowledge_base/types/document_detail_dataset_process_rule_rules_pre_processing_rules_item.py new file mode 100644 index 0000000..4a508bf --- /dev/null +++ b/src/dify_sdk/knowledge_base/types/document_detail_dataset_process_rule_rules_pre_processing_rules_item.py @@ -0,0 +1,27 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class DocumentDetailDatasetProcessRuleRulesPreProcessingRulesItem(UniversalBaseModel): + id: typing.Optional[str] = pydantic.Field(default=None) + """ + Rule ID + """ + + enabled: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether enabled + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/dify_sdk/knowledge_base/types/document_detail_dataset_process_rule_rules_segmentation.py b/src/dify_sdk/knowledge_base/types/document_detail_dataset_process_rule_rules_segmentation.py new file mode 100644 index 0000000..2168d23 --- /dev/null +++ b/src/dify_sdk/knowledge_base/types/document_detail_dataset_process_rule_rules_segmentation.py @@ -0,0 +1,36 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class DocumentDetailDatasetProcessRuleRulesSegmentation(UniversalBaseModel): + """ + Segmentation rules + """ + + separator: typing.Optional[str] = pydantic.Field(default=None) + """ + Separator + """ + + max_tokens: typing.Optional[int] = pydantic.Field(default=None) + """ + Maximum tokens + """ + + chunk_overlap: typing.Optional[int] = pydantic.Field(default=None) + """ + Chunk overlap + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/dify_sdk/knowledge_base/types/document_detail_dataset_process_rule_rules_subchunk_segmentation.py b/src/dify_sdk/knowledge_base/types/document_detail_dataset_process_rule_rules_subchunk_segmentation.py new file mode 100644 index 0000000..3c8861a --- /dev/null +++ b/src/dify_sdk/knowledge_base/types/document_detail_dataset_process_rule_rules_subchunk_segmentation.py @@ -0,0 +1,36 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class DocumentDetailDatasetProcessRuleRulesSubchunkSegmentation(UniversalBaseModel): + """ + Sub-chunk segmentation + """ + + separator: typing.Optional[str] = pydantic.Field(default=None) + """ + Separator + """ + + max_tokens: typing.Optional[int] = pydantic.Field(default=None) + """ + Maximum tokens + """ + + chunk_overlap: typing.Optional[int] = pydantic.Field(default=None) + """ + Chunk overlap + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/dify_sdk/knowledge_base/types/document_detail_document_process_rule.py b/src/dify_sdk/knowledge_base/types/document_detail_document_process_rule.py new file mode 100644 index 0000000..546078e --- /dev/null +++ b/src/dify_sdk/knowledge_base/types/document_detail_document_process_rule.py @@ -0,0 +1,42 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .document_detail_document_process_rule_rules import DocumentDetailDocumentProcessRuleRules + + +class DocumentDetailDocumentProcessRule(UniversalBaseModel): + """ + Document process rule + """ + + id: typing.Optional[str] = pydantic.Field(default=None) + """ + Rule ID + """ + + dataset_id: typing.Optional[str] = pydantic.Field(default=None) + """ + Dataset ID + """ + + mode: typing.Optional[str] = pydantic.Field(default=None) + """ + Process mode + """ + + rules: typing.Optional[DocumentDetailDocumentProcessRuleRules] = pydantic.Field(default=None) + """ + Rule details + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/dify_sdk/knowledge_base/types/document_detail_document_process_rule_rules.py b/src/dify_sdk/knowledge_base/types/document_detail_document_process_rule_rules.py new file mode 100644 index 0000000..75eb4ed --- /dev/null +++ b/src/dify_sdk/knowledge_base/types/document_detail_document_process_rule_rules.py @@ -0,0 +1,52 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .document_detail_document_process_rule_rules_pre_processing_rules_item import ( + DocumentDetailDocumentProcessRuleRulesPreProcessingRulesItem, +) +from .document_detail_document_process_rule_rules_segmentation import DocumentDetailDocumentProcessRuleRulesSegmentation +from .document_detail_document_process_rule_rules_subchunk_segmentation import ( + DocumentDetailDocumentProcessRuleRulesSubchunkSegmentation, +) + + +class DocumentDetailDocumentProcessRuleRules(UniversalBaseModel): + """ + Rule details + """ + + pre_processing_rules: typing.Optional[typing.List[DocumentDetailDocumentProcessRuleRulesPreProcessingRulesItem]] = ( + pydantic.Field(default=None) + ) + """ + Pre-processing rules list + """ + + segmentation: typing.Optional[DocumentDetailDocumentProcessRuleRulesSegmentation] = pydantic.Field(default=None) + """ + Segmentation rules + """ + + parent_mode: typing.Optional[str] = pydantic.Field(default=None) + """ + Parent mode + """ + + subchunk_segmentation: typing.Optional[DocumentDetailDocumentProcessRuleRulesSubchunkSegmentation] = pydantic.Field( + default=None + ) + """ + Sub-chunk segmentation + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/dify_sdk/knowledge_base/types/document_detail_document_process_rule_rules_pre_processing_rules_item.py b/src/dify_sdk/knowledge_base/types/document_detail_document_process_rule_rules_pre_processing_rules_item.py new file mode 100644 index 0000000..c958aea --- /dev/null +++ b/src/dify_sdk/knowledge_base/types/document_detail_document_process_rule_rules_pre_processing_rules_item.py @@ -0,0 +1,27 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class DocumentDetailDocumentProcessRuleRulesPreProcessingRulesItem(UniversalBaseModel): + id: typing.Optional[str] = pydantic.Field(default=None) + """ + Rule ID + """ + + enabled: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether enabled + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/dify_sdk/knowledge_base/types/document_detail_document_process_rule_rules_segmentation.py b/src/dify_sdk/knowledge_base/types/document_detail_document_process_rule_rules_segmentation.py new file mode 100644 index 0000000..afe86fb --- /dev/null +++ b/src/dify_sdk/knowledge_base/types/document_detail_document_process_rule_rules_segmentation.py @@ -0,0 +1,36 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class DocumentDetailDocumentProcessRuleRulesSegmentation(UniversalBaseModel): + """ + Segmentation rules + """ + + separator: typing.Optional[str] = pydantic.Field(default=None) + """ + Separator + """ + + max_tokens: typing.Optional[int] = pydantic.Field(default=None) + """ + Maximum tokens + """ + + chunk_overlap: typing.Optional[int] = pydantic.Field(default=None) + """ + Chunk overlap + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/dify_sdk/knowledge_base/types/document_detail_document_process_rule_rules_subchunk_segmentation.py b/src/dify_sdk/knowledge_base/types/document_detail_document_process_rule_rules_subchunk_segmentation.py new file mode 100644 index 0000000..b89c3a2 --- /dev/null +++ b/src/dify_sdk/knowledge_base/types/document_detail_document_process_rule_rules_subchunk_segmentation.py @@ -0,0 +1,36 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class DocumentDetailDocumentProcessRuleRulesSubchunkSegmentation(UniversalBaseModel): + """ + Sub-chunk segmentation + """ + + separator: typing.Optional[str] = pydantic.Field(default=None) + """ + Separator + """ + + max_tokens: typing.Optional[int] = pydantic.Field(default=None) + """ + Maximum tokens + """ + + chunk_overlap: typing.Optional[int] = pydantic.Field(default=None) + """ + Chunk overlap + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/uv.lock b/uv.lock index f2a2188..11a9391 100644 --- a/uv.lock +++ b/uv.lock @@ -12,7 +12,7 @@ resolution-markers = [ [[package]] name = "annotated-types" version = "0.7.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53" }, @@ -21,7 +21,7 @@ wheels = [ [[package]] name = "anyio" version = "4.9.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "idna" }, @@ -36,7 +36,7 @@ wheels = [ [[package]] name = "asttokens" version = "3.0.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2" }, @@ -45,7 +45,7 @@ wheels = [ [[package]] name = "certifi" version = "2025.4.26" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3" }, @@ -54,7 +54,7 @@ wheels = [ [[package]] name = "click" version = "8.1.8" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] @@ -66,7 +66,7 @@ wheels = [ [[package]] name = "colorama" version = "0.4.6" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" }, @@ -75,7 +75,7 @@ wheels = [ [[package]] name = "coverage" version = "7.8.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/19/4f/2251e65033ed2ce1e68f00f91a0294e0f80c80ae8c3ebbe2f12828c4cd53/coverage-7.8.0.tar.gz", hash = "sha256:7a3d62b3b03b4b6fd41a085f3574874cf946cb4604d2b4d3e8dca8cd570ca501" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/78/01/1c5e6ee4ebaaa5e079db933a9a45f61172048c7efa06648445821a201084/coverage-7.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2931f66991175369859b5fd58529cd4b73582461877ecfd859b6549869287ffe" }, @@ -150,7 +150,7 @@ toml = [ [[package]] name = "decorator" version = "5.2.1" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, @@ -158,7 +158,7 @@ wheels = [ [[package]] name = "dify-openapi" -version = "1.5.0" +version = "1.5.1" source = { editable = "." } dependencies = [ { name = "httpx" }, @@ -168,9 +168,9 @@ dependencies = [ [package.dev-dependencies] dev = [ - { name = "ipython", version = "8.18.1", source = { registry = "http://mirrors.aliyun.com/pypi/simple/" }, marker = "python_full_version < '3.10'" }, - { name = "ipython", version = "8.36.0", source = { registry = "http://mirrors.aliyun.com/pypi/simple/" }, marker = "python_full_version == '3.10.*'" }, - { name = "ipython", version = "9.2.0", source = { registry = "http://mirrors.aliyun.com/pypi/simple/" }, marker = "python_full_version >= '3.11'" }, + { name = "ipython", version = "8.18.1", source = { registry = "http://mirrors.aliyun.com/pypi/simple" }, marker = "python_full_version < '3.10'" }, + { name = "ipython", version = "8.36.0", source = { registry = "http://mirrors.aliyun.com/pypi/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "ipython", version = "9.2.0", source = { registry = "http://mirrors.aliyun.com/pypi/simple" }, marker = "python_full_version >= '3.11'" }, { name = "pytest" }, { name = "pytest-asyncio" }, { name = "pytest-cov" }, @@ -198,7 +198,7 @@ dev = [ [[package]] name = "exceptiongroup" version = "1.2.2" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b" }, @@ -207,7 +207,7 @@ wheels = [ [[package]] name = "executing" version = "2.2.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa" }, @@ -216,7 +216,7 @@ wheels = [ [[package]] name = "h11" version = "0.16.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, @@ -225,7 +225,7 @@ wheels = [ [[package]] name = "httpcore" version = "1.0.9" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "certifi" }, { name = "h11" }, @@ -238,7 +238,7 @@ wheels = [ [[package]] name = "httpx" version = "0.28.1" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "anyio" }, { name = "certifi" }, @@ -253,7 +253,7 @@ wheels = [ [[package]] name = "httpx-sse" version = "0.4.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/4c/60/8f4281fa9bbf3c8034fd54c0e7412e66edbab6bc74c4996bd616f8d0406e/httpx-sse-0.4.0.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.4.0-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f" }, @@ -262,7 +262,7 @@ wheels = [ [[package]] name = "idna" version = "3.10" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3" }, @@ -271,7 +271,7 @@ wheels = [ [[package]] name = "iniconfig" version = "2.1.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" }, @@ -280,7 +280,7 @@ wheels = [ [[package]] name = "ipython" version = "8.18.1" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } resolution-markers = [ "python_full_version < '3.10'", ] @@ -305,7 +305,7 @@ wheels = [ [[package]] name = "ipython" version = "8.36.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } resolution-markers = [ "python_full_version == '3.10.*'", ] @@ -330,7 +330,7 @@ wheels = [ [[package]] name = "ipython" version = "9.2.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } resolution-markers = [ "python_full_version >= '3.13'", "python_full_version >= '3.12.4' and python_full_version < '3.13'", @@ -357,7 +357,7 @@ wheels = [ [[package]] name = "ipython-pygments-lexers" version = "1.1.1" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "pygments", marker = "python_full_version >= '3.11'" }, ] @@ -369,7 +369,7 @@ wheels = [ [[package]] name = "jedi" version = "0.19.2" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "parso" }, ] @@ -381,7 +381,7 @@ wheels = [ [[package]] name = "markdown-it-py" version = "3.0.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "mdurl" }, ] @@ -393,7 +393,7 @@ wheels = [ [[package]] name = "matplotlib-inline" version = "0.1.7" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "traitlets" }, ] @@ -405,7 +405,7 @@ wheels = [ [[package]] name = "mdurl" version = "0.1.2" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8" }, @@ -414,7 +414,7 @@ wheels = [ [[package]] name = "packaging" version = "24.2" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759" }, @@ -423,7 +423,7 @@ wheels = [ [[package]] name = "parso" version = "0.8.4" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18" }, @@ -432,7 +432,7 @@ wheels = [ [[package]] name = "pexpect" version = "4.9.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "ptyprocess" }, ] @@ -444,7 +444,7 @@ wheels = [ [[package]] name = "pluggy" version = "1.5.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669" }, @@ -453,7 +453,7 @@ wheels = [ [[package]] name = "prompt-toolkit" version = "3.0.51" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "wcwidth" }, ] @@ -465,7 +465,7 @@ wheels = [ [[package]] name = "ptyprocess" version = "0.7.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35" }, @@ -474,7 +474,7 @@ wheels = [ [[package]] name = "pure-eval" version = "0.2.3" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0" }, @@ -483,7 +483,7 @@ wheels = [ [[package]] name = "pydantic" version = "2.11.3" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "annotated-types" }, { name = "pydantic-core" }, @@ -498,7 +498,7 @@ wheels = [ [[package]] name = "pydantic-core" version = "2.33.1" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "typing-extensions" }, ] @@ -607,7 +607,7 @@ wheels = [ [[package]] name = "pygments" version = "2.19.1" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c" }, @@ -616,7 +616,7 @@ wheels = [ [[package]] name = "pytest" version = "8.3.5" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, @@ -633,7 +633,7 @@ wheels = [ [[package]] name = "pytest-asyncio" version = "0.26.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "pytest" }, { name = "typing-extensions", marker = "python_full_version < '3.10'" }, @@ -646,7 +646,7 @@ wheels = [ [[package]] name = "pytest-cov" version = "6.1.1" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "coverage", extra = ["toml"] }, { name = "pytest" }, @@ -659,7 +659,7 @@ wheels = [ [[package]] name = "pyyaml" version = "6.0.2" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086" }, @@ -712,7 +712,7 @@ wheels = [ [[package]] name = "rich" version = "14.0.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, @@ -726,7 +726,7 @@ wheels = [ [[package]] name = "shellingham" version = "1.5.4" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686" }, @@ -735,7 +735,7 @@ wheels = [ [[package]] name = "sniffio" version = "1.3.1" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2" }, @@ -744,7 +744,7 @@ wheels = [ [[package]] name = "stack-data" version = "0.6.3" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "asttokens" }, { name = "executing" }, @@ -758,7 +758,7 @@ wheels = [ [[package]] name = "tomli" version = "2.2.1" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249" }, @@ -797,7 +797,7 @@ wheels = [ [[package]] name = "traitlets" version = "5.14.3" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f" }, @@ -806,7 +806,7 @@ wheels = [ [[package]] name = "typer" version = "0.15.3" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "click" }, { name = "rich" }, @@ -821,7 +821,7 @@ wheels = [ [[package]] name = "typing-extensions" version = "4.13.2" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c" }, @@ -830,7 +830,7 @@ wheels = [ [[package]] name = "typing-inspection" version = "0.4.0" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "typing-extensions" }, ] @@ -842,7 +842,7 @@ wheels = [ [[package]] name = "wcwidth" version = "0.2.13" -source = { registry = "http://mirrors.aliyun.com/pypi/simple/" } +source = { registry = "http://mirrors.aliyun.com/pypi/simple" } sdist = { url = "http://mirrors.aliyun.com/pypi/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5" } wheels = [ { url = "http://mirrors.aliyun.com/pypi/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859" },