From 3894de895b8c9e9435503094ee6b6cc2e55eb4d3 Mon Sep 17 00:00:00 2001 From: Jin Hai Date: Tue, 21 Jan 2025 20:52:28 +0800 Subject: [PATCH] Update comments (#4569) ### What problem does this PR solve? Add license statement. ### Type of change - [x] Refactoring Signed-off-by: Jin Hai --- agent/__init__.py | 16 +++ agent/component/__init__.py | 16 +++ agent/settings.py | 2 +- api/__init__.py | 16 +++ api/utils/t_crypt.py | 16 +++ api/utils/web_utils.py | 16 +++ deepdoc/__init__.py | 16 +++ deepdoc/parser/__init__.py | 3 + deepdoc/parser/docx_parser.py | 3 + deepdoc/parser/excel_parser.py | 3 + deepdoc/parser/html_parser.py | 4 + deepdoc/parser/json_parser.py | 16 +++ deepdoc/parser/markdown_parser.py | 4 + deepdoc/parser/pdf_parser.py | 3 + deepdoc/parser/ppt_parser.py | 4 + deepdoc/parser/resume/__init__.py | 3 + deepdoc/parser/resume/entities/__init__.py | 15 +++ .../parser/resume/entities/corporations.py | 3 + deepdoc/parser/resume/entities/degrees.py | 3 + deepdoc/parser/resume/entities/industries.py | 3 + deepdoc/parser/resume/entities/regions.py | 4 + deepdoc/parser/resume/entities/schools.py | 3 + deepdoc/parser/resume/step_one.py | 3 + deepdoc/parser/resume/step_two.py | 4 + deepdoc/parser/txt_parser.py | 4 + deepdoc/parser/utils.py | 3 + deepdoc/vision/__init__.py | 3 + deepdoc/vision/layout_recognizer.py | 4 + deepdoc/vision/ocr.py | 3 + deepdoc/vision/postprocess.py | 3 + deepdoc/vision/recognizer.py | 3 + deepdoc/vision/seeit.py | 3 + deepdoc/vision/t_ocr.py | 3 + deepdoc/vision/t_recognizer.py | 4 + deepdoc/vision/table_structure_recognizer.py | 3 + .../chatgpt-on-wechat/plugins/__init__.py | 16 +++ .../chatgpt-on-wechat/plugins/ragflow_chat.py | 16 +++ rag/__init__.py | 16 +++ rag/app/__init__.py | 15 +++ rag/app/audio.py | 4 + rag/app/book.py | 4 + rag/app/email.py | 3 + rag/app/knowledge_graph.py | 16 +++ rag/app/laws.py | 4 + rag/app/manual.py | 2 +- rag/app/naive.py | 4 + rag/app/one.py | 4 + rag/app/paper.py | 4 + rag/app/picture.py | 4 + rag/app/presentation.py | 4 + rag/app/qa.py | 4 + rag/app/resume.py | 4 + rag/app/table.py | 4 + rag/app/tag.py | 4 + rag/svr/jina_server.py | 16 +++ rag/utils/azure_sas_conn.py | 16 +++ rag/utils/azure_spn_conn.py | 16 +++ rag/utils/doc_store_conn.py | 16 +++ rag/utils/es_conn.py | 16 +++ rag/utils/infinity_conn.py | 16 +++ rag/utils/minio_conn.py | 16 +++ rag/utils/redis_conn.py | 16 +++ rag/utils/s3_conn.py | 16 +++ rag/utils/storage_factory.py | 16 +++ sdk/python/hello_ragflow.py | 18 ++- sdk/python/ragflow_sdk/__init__.py | 16 +++ sdk/python/ragflow_sdk/modules/__init__.py | 15 +++ sdk/python/ragflow_sdk/modules/agent.py | 16 +++ sdk/python/ragflow_sdk/modules/base.py | 16 +++ sdk/python/ragflow_sdk/modules/chat.py | 26 +++- sdk/python/ragflow_sdk/modules/chunk.py | 25 +++- sdk/python/ragflow_sdk/modules/dataset.py | 49 +++++--- sdk/python/ragflow_sdk/modules/document.py | 38 ++++-- sdk/python/ragflow_sdk/modules/session.py | 39 ++++-- sdk/python/test/conftest.py | 38 ++++-- sdk/python/test/test_frontend_api/common.py | 16 +++ .../test/test_frontend_api/get_email.py | 16 +++ .../test/test_frontend_api/test_dataset.py | 20 ++- sdk/python/test/test_sdk_api/common.py | 19 ++- sdk/python/test/test_sdk_api/get_email.py | 20 ++- sdk/python/test/test_sdk_api/t_agent.py | 27 ++++- sdk/python/test/test_sdk_api/t_chat.py | 24 +++- sdk/python/test/test_sdk_api/t_chunk.py | 44 +++++-- sdk/python/test/test_sdk_api/t_dataset.py | 27 ++++- sdk/python/test/test_sdk_api/t_document.py | 114 +++++++++++------- sdk/python/test/test_sdk_api/t_session.py | 49 +++++--- 86 files changed, 1034 insertions(+), 145 deletions(-) diff --git a/agent/__init__.py b/agent/__init__.py index 6bfdd33d0..643f79713 100644 --- a/agent/__init__.py +++ b/agent/__init__.py @@ -1,2 +1,18 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from beartype.claw import beartype_this_package beartype_this_package() diff --git a/agent/component/__init__.py b/agent/component/__init__.py index 0d414fca9..da06c878c 100644 --- a/agent/component/__init__.py +++ b/agent/component/__init__.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import importlib from .begin import Begin, BeginParam from .generate import Generate, GenerateParam diff --git a/agent/settings.py b/agent/settings.py index fbdb263dc..932cb1d57 100644 --- a/agent/settings.py +++ b/agent/settings.py @@ -1,5 +1,5 @@ # -# Copyright 2019 The FATE Authors. All Rights Reserved. +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/api/__init__.py b/api/__init__.py index 6bfdd33d0..643f79713 100644 --- a/api/__init__.py +++ b/api/__init__.py @@ -1,2 +1,18 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from beartype.claw import beartype_this_package beartype_this_package() diff --git a/api/utils/t_crypt.py b/api/utils/t_crypt.py index 67fd69c62..cd9d1edcc 100644 --- a/api/utils/t_crypt.py +++ b/api/utils/t_crypt.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import base64 import os import sys diff --git a/api/utils/web_utils.py b/api/utils/web_utils.py index 687d683ac..084b7a6f7 100644 --- a/api/utils/web_utils.py +++ b/api/utils/web_utils.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import re import socket from urllib.parse import urlparse diff --git a/deepdoc/__init__.py b/deepdoc/__init__.py index 6bfdd33d0..643f79713 100644 --- a/deepdoc/__init__.py +++ b/deepdoc/__init__.py @@ -1,2 +1,18 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from beartype.claw import beartype_this_package beartype_this_package() diff --git a/deepdoc/parser/__init__.py b/deepdoc/parser/__init__.py index 2a62a9894..1597ed081 100644 --- a/deepdoc/parser/__init__.py +++ b/deepdoc/parser/__init__.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/parser/docx_parser.py b/deepdoc/parser/docx_parser.py index 1910f4380..dfe3f37fd 100644 --- a/deepdoc/parser/docx_parser.py +++ b/deepdoc/parser/docx_parser.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/parser/excel_parser.py b/deepdoc/parser/excel_parser.py index 77cc7a058..bb9d65b00 100644 --- a/deepdoc/parser/excel_parser.py +++ b/deepdoc/parser/excel_parser.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/parser/html_parser.py b/deepdoc/parser/html_parser.py index 973dbbd46..29cc43a1d 100644 --- a/deepdoc/parser/html_parser.py +++ b/deepdoc/parser/html_parser.py @@ -1,4 +1,7 @@ # -*- coding: utf-8 -*- +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -11,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + from rag.nlp import find_codec import readability import html_text diff --git a/deepdoc/parser/json_parser.py b/deepdoc/parser/json_parser.py index fa30debdf..dc73246ef 100644 --- a/deepdoc/parser/json_parser.py +++ b/deepdoc/parser/json_parser.py @@ -1,4 +1,20 @@ # -*- coding: utf-8 -*- +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + # The following documents are mainly referenced, and only adaptation modifications have been made # from https://github.com/langchain-ai/langchain/blob/master/libs/text-splitters/langchain_text_splitters/json.py diff --git a/deepdoc/parser/markdown_parser.py b/deepdoc/parser/markdown_parser.py index 60e6ba498..d5d138377 100644 --- a/deepdoc/parser/markdown_parser.py +++ b/deepdoc/parser/markdown_parser.py @@ -1,4 +1,7 @@ # -*- coding: utf-8 -*- +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -11,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import re class RAGFlowMarkdownParser: diff --git a/deepdoc/parser/pdf_parser.py b/deepdoc/parser/pdf_parser.py index 5ff216edf..114339fa5 100644 --- a/deepdoc/parser/pdf_parser.py +++ b/deepdoc/parser/pdf_parser.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/parser/ppt_parser.py b/deepdoc/parser/ppt_parser.py index eca952bad..4e459d193 100644 --- a/deepdoc/parser/ppt_parser.py +++ b/deepdoc/parser/ppt_parser.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import logging from io import BytesIO from pptx import Presentation diff --git a/deepdoc/parser/resume/__init__.py b/deepdoc/parser/resume/__init__.py index 1038bf2b7..5006d7fbc 100644 --- a/deepdoc/parser/resume/__init__.py +++ b/deepdoc/parser/resume/__init__.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/parser/resume/entities/__init__.py b/deepdoc/parser/resume/entities/__init__.py index e69de29bb..e156bc93d 100644 --- a/deepdoc/parser/resume/entities/__init__.py +++ b/deepdoc/parser/resume/entities/__init__.py @@ -0,0 +1,15 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# \ No newline at end of file diff --git a/deepdoc/parser/resume/entities/corporations.py b/deepdoc/parser/resume/entities/corporations.py index faeae4061..a52bfa14a 100644 --- a/deepdoc/parser/resume/entities/corporations.py +++ b/deepdoc/parser/resume/entities/corporations.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/parser/resume/entities/degrees.py b/deepdoc/parser/resume/entities/degrees.py index 47a90b582..ddb936e0b 100644 --- a/deepdoc/parser/resume/entities/degrees.py +++ b/deepdoc/parser/resume/entities/degrees.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/parser/resume/entities/industries.py b/deepdoc/parser/resume/entities/industries.py index 4768ceb50..c2b1b8e82 100644 --- a/deepdoc/parser/resume/entities/industries.py +++ b/deepdoc/parser/resume/entities/industries.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/parser/resume/entities/regions.py b/deepdoc/parser/resume/entities/regions.py index 4c3f0d722..ac37f6ea1 100644 --- a/deepdoc/parser/resume/entities/regions.py +++ b/deepdoc/parser/resume/entities/regions.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import re TBL = { diff --git a/deepdoc/parser/resume/entities/schools.py b/deepdoc/parser/resume/entities/schools.py index c6b0bf7fd..2bc40e836 100644 --- a/deepdoc/parser/resume/entities/schools.py +++ b/deepdoc/parser/resume/entities/schools.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/parser/resume/step_one.py b/deepdoc/parser/resume/step_one.py index 96cc668d3..4c65a97fe 100644 --- a/deepdoc/parser/resume/step_one.py +++ b/deepdoc/parser/resume/step_one.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/parser/resume/step_two.py b/deepdoc/parser/resume/step_two.py index 9e4376735..6097a0132 100644 --- a/deepdoc/parser/resume/step_two.py +++ b/deepdoc/parser/resume/step_two.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import logging import re import copy diff --git a/deepdoc/parser/txt_parser.py b/deepdoc/parser/txt_parser.py index 93b52eea3..7f2179923 100644 --- a/deepdoc/parser/txt_parser.py +++ b/deepdoc/parser/txt_parser.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import re from deepdoc.parser.utils import get_text diff --git a/deepdoc/parser/utils.py b/deepdoc/parser/utils.py index 58be06c91..85a355495 100644 --- a/deepdoc/parser/utils.py +++ b/deepdoc/parser/utils.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/vision/__init__.py b/deepdoc/vision/__init__.py index 1410efc25..c2c964326 100644 --- a/deepdoc/vision/__init__.py +++ b/deepdoc/vision/__init__.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/vision/layout_recognizer.py b/deepdoc/vision/layout_recognizer.py index 1cf3aa1a2..467a22ee9 100644 --- a/deepdoc/vision/layout_recognizer.py +++ b/deepdoc/vision/layout_recognizer.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import os import re from collections import Counter diff --git a/deepdoc/vision/ocr.py b/deepdoc/vision/ocr.py index b6f815741..9d9d44cde 100644 --- a/deepdoc/vision/ocr.py +++ b/deepdoc/vision/ocr.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/vision/postprocess.py b/deepdoc/vision/postprocess.py index 6fb111de3..2da1477b3 100644 --- a/deepdoc/vision/postprocess.py +++ b/deepdoc/vision/postprocess.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/vision/recognizer.py b/deepdoc/vision/recognizer.py index 0695005c7..aeef52d57 100644 --- a/deepdoc/vision/recognizer.py +++ b/deepdoc/vision/recognizer.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/vision/seeit.py b/deepdoc/vision/seeit.py index 6064bc484..e820e89a5 100644 --- a/deepdoc/vision/seeit.py +++ b/deepdoc/vision/seeit.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/vision/t_ocr.py b/deepdoc/vision/t_ocr.py index 041c77107..2165449de 100644 --- a/deepdoc/vision/t_ocr.py +++ b/deepdoc/vision/t_ocr.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/deepdoc/vision/t_recognizer.py b/deepdoc/vision/t_recognizer.py index e81a57b84..1db3356a9 100644 --- a/deepdoc/vision/t_recognizer.py +++ b/deepdoc/vision/t_recognizer.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import logging import os import sys diff --git a/deepdoc/vision/table_structure_recognizer.py b/deepdoc/vision/table_structure_recognizer.py index be48ca95e..e31fd901e 100644 --- a/deepdoc/vision/table_structure_recognizer.py +++ b/deepdoc/vision/table_structure_recognizer.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/intergrations/chatgpt-on-wechat/plugins/__init__.py b/intergrations/chatgpt-on-wechat/plugins/__init__.py index 28032b8b8..557f0d1f1 100644 --- a/intergrations/chatgpt-on-wechat/plugins/__init__.py +++ b/intergrations/chatgpt-on-wechat/plugins/__init__.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from beartype.claw import beartype_this_package beartype_this_package() diff --git a/intergrations/chatgpt-on-wechat/plugins/ragflow_chat.py b/intergrations/chatgpt-on-wechat/plugins/ragflow_chat.py index 5d5615eaa..fe96f39a7 100644 --- a/intergrations/chatgpt-on-wechat/plugins/ragflow_chat.py +++ b/intergrations/chatgpt-on-wechat/plugins/ragflow_chat.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import logging import requests from bridge.context import ContextType # Import Context, ContextType diff --git a/rag/__init__.py b/rag/__init__.py index 6bfdd33d0..643f79713 100644 --- a/rag/__init__.py +++ b/rag/__init__.py @@ -1,2 +1,18 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from beartype.claw import beartype_this_package beartype_this_package() diff --git a/rag/app/__init__.py b/rag/app/__init__.py index e69de29bb..e156bc93d 100644 --- a/rag/app/__init__.py +++ b/rag/app/__init__.py @@ -0,0 +1,15 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# \ No newline at end of file diff --git a/rag/app/audio.py b/rag/app/audio.py index ec7ffeea3..95e552ae9 100644 --- a/rag/app/audio.py +++ b/rag/app/audio.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import re from api.db import LLMType diff --git a/rag/app/book.py b/rag/app/book.py index 763364778..fad526adc 100644 --- a/rag/app/book.py +++ b/rag/app/book.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import logging from tika import parser import re diff --git a/rag/app/email.py b/rag/app/email.py index b14ee6d43..d1c98d555 100644 --- a/rag/app/email.py +++ b/rag/app/email.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/rag/app/knowledge_graph.py b/rag/app/knowledge_graph.py index f4330f482..030c9aaf2 100644 --- a/rag/app/knowledge_graph.py +++ b/rag/app/knowledge_graph.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import re from graphrag.index import build_knowledge_graph_chunks diff --git a/rag/app/laws.py b/rag/app/laws.py index 7a32c8273..6ed1ccc77 100644 --- a/rag/app/laws.py +++ b/rag/app/laws.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import logging from tika import parser import re diff --git a/rag/app/manual.py b/rag/app/manual.py index 9018cb2a5..966936970 100644 --- a/rag/app/manual.py +++ b/rag/app/manual.py @@ -1,5 +1,5 @@ # -# Copyright 2024 The InfiniFlow Authors. All Rights Reserved. +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/rag/app/naive.py b/rag/app/naive.py index fac626ab0..7dbde2bb4 100644 --- a/rag/app/naive.py +++ b/rag/app/naive.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import logging from tika import parser from io import BytesIO diff --git a/rag/app/one.py b/rag/app/one.py index bd691f46c..616a87dbc 100644 --- a/rag/app/one.py +++ b/rag/app/one.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import logging from tika import parser from io import BytesIO diff --git a/rag/app/paper.py b/rag/app/paper.py index 89af09b90..529d3a02d 100644 --- a/rag/app/paper.py +++ b/rag/app/paper.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import logging import copy import re diff --git a/rag/app/picture.py b/rag/app/picture.py index fb9b1e269..578da79ff 100644 --- a/rag/app/picture.py +++ b/rag/app/picture.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import io import numpy as np diff --git a/rag/app/presentation.py b/rag/app/presentation.py index a3305bdc1..09a8c3f46 100644 --- a/rag/app/presentation.py +++ b/rag/app/presentation.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import copy import re from io import BytesIO diff --git a/rag/app/qa.py b/rag/app/qa.py index 00cde2d64..a0c77c238 100644 --- a/rag/app/qa.py +++ b/rag/app/qa.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import logging import re import csv diff --git a/rag/app/resume.py b/rag/app/resume.py index da620cb38..7c556e06e 100644 --- a/rag/app/resume.py +++ b/rag/app/resume.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import logging import base64 import datetime diff --git a/rag/app/table.py b/rag/app/table.py index 88fceef78..542edec7a 100644 --- a/rag/app/table.py +++ b/rag/app/table.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import copy import re from io import BytesIO diff --git a/rag/app/tag.py b/rag/app/tag.py index c1a15fafa..f5c29f2a8 100644 --- a/rag/app/tag.py +++ b/rag/app/tag.py @@ -1,3 +1,6 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -10,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import re import csv from copy import deepcopy diff --git a/rag/svr/jina_server.py b/rag/svr/jina_server.py index 9dba8b55e..60bd0c8d8 100644 --- a/rag/svr/jina_server.py +++ b/rag/svr/jina_server.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from jina import Deployment from docarray import BaseDoc from jina import Executor, requests diff --git a/rag/utils/azure_sas_conn.py b/rag/utils/azure_sas_conn.py index 8c1be4cd0..48f9d0a64 100644 --- a/rag/utils/azure_sas_conn.py +++ b/rag/utils/azure_sas_conn.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import logging import os import time diff --git a/rag/utils/azure_spn_conn.py b/rag/utils/azure_spn_conn.py index c45ceb795..625ccc4b5 100644 --- a/rag/utils/azure_spn_conn.py +++ b/rag/utils/azure_spn_conn.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import logging import os import time diff --git a/rag/utils/doc_store_conn.py b/rag/utils/doc_store_conn.py index b8a208841..c3fa61b0c 100644 --- a/rag/utils/doc_store_conn.py +++ b/rag/utils/doc_store_conn.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from abc import ABC, abstractmethod from dataclasses import dataclass import numpy as np diff --git a/rag/utils/es_conn.py b/rag/utils/es_conn.py index 1f9590045..c2b5fc22b 100644 --- a/rag/utils/es_conn.py +++ b/rag/utils/es_conn.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import logging import re import json diff --git a/rag/utils/infinity_conn.py b/rag/utils/infinity_conn.py index dd11b9ece..57cbc34b2 100644 --- a/rag/utils/infinity_conn.py +++ b/rag/utils/infinity_conn.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import logging import os import re diff --git a/rag/utils/minio_conn.py b/rag/utils/minio_conn.py index 4662c7c83..48f02b699 100644 --- a/rag/utils/minio_conn.py +++ b/rag/utils/minio_conn.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import logging import time from minio import Minio diff --git a/rag/utils/redis_conn.py b/rag/utils/redis_conn.py index 660e51873..40779aa27 100644 --- a/rag/utils/redis_conn.py +++ b/rag/utils/redis_conn.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import logging import json diff --git a/rag/utils/s3_conn.py b/rag/utils/s3_conn.py index 03690d8ad..d1e7e7269 100644 --- a/rag/utils/s3_conn.py +++ b/rag/utils/s3_conn.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import logging import boto3 from botocore.exceptions import ClientError diff --git a/rag/utils/storage_factory.py b/rag/utils/storage_factory.py index 7c7a4a71d..a27fda91a 100644 --- a/rag/utils/storage_factory.py +++ b/rag/utils/storage_factory.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import os from enum import Enum diff --git a/sdk/python/hello_ragflow.py b/sdk/python/hello_ragflow.py index d258943b3..5b73cb81b 100644 --- a/sdk/python/hello_ragflow.py +++ b/sdk/python/hello_ragflow.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import ragflow_sdk -print(ragflow_sdk.__version__) \ No newline at end of file +print(ragflow_sdk.__version__) diff --git a/sdk/python/ragflow_sdk/__init__.py b/sdk/python/ragflow_sdk/__init__.py index b7cf31e12..7535aa4ed 100644 --- a/sdk/python/ragflow_sdk/__init__.py +++ b/sdk/python/ragflow_sdk/__init__.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from beartype.claw import beartype_this_package beartype_this_package() diff --git a/sdk/python/ragflow_sdk/modules/__init__.py b/sdk/python/ragflow_sdk/modules/__init__.py index e69de29bb..e156bc93d 100644 --- a/sdk/python/ragflow_sdk/modules/__init__.py +++ b/sdk/python/ragflow_sdk/modules/__init__.py @@ -0,0 +1,15 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# \ No newline at end of file diff --git a/sdk/python/ragflow_sdk/modules/agent.py b/sdk/python/ragflow_sdk/modules/agent.py index 9ca314128..5579af98d 100644 --- a/sdk/python/ragflow_sdk/modules/agent.py +++ b/sdk/python/ragflow_sdk/modules/agent.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from .base import Base from .session import Session import requests diff --git a/sdk/python/ragflow_sdk/modules/base.py b/sdk/python/ragflow_sdk/modules/base.py index 49aa18db3..5a6264f79 100644 --- a/sdk/python/ragflow_sdk/modules/base.py +++ b/sdk/python/ragflow_sdk/modules/base.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + class Base(object): def __init__(self, rag, res_dict): self.rag = rag diff --git a/sdk/python/ragflow_sdk/modules/chat.py b/sdk/python/ragflow_sdk/modules/chat.py index 013bddd7e..e85011504 100644 --- a/sdk/python/ragflow_sdk/modules/chat.py +++ b/sdk/python/ragflow_sdk/modules/chat.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from .base import Base from .session import Session @@ -44,12 +60,11 @@ class Chat(Base): def update(self, update_message: dict): res = self.put(f'/chats/{self.id}', - update_message) + update_message) res = res.json() if res.get("code") != 0: raise Exception(res["message"]) - def create_session(self, name: str = "New session") -> Session: res = self.post(f"/chats/{self.id}/sessions", {"name": name}) res = res.json() @@ -57,9 +72,10 @@ class Chat(Base): return Session(self.rag, res['data']) raise Exception(res["message"]) - def list_sessions(self,page: int = 1, page_size: int = 30, orderby: str = "create_time", desc: bool = True, + def list_sessions(self, page: int = 1, page_size: int = 30, orderby: str = "create_time", desc: bool = True, id: str = None, name: str = None) -> list[Session]: - res = self.get(f'/chats/{self.id}/sessions',{"page": page, "page_size": page_size, "orderby": orderby, "desc": desc, "id": id, "name": name} ) + res = self.get(f'/chats/{self.id}/sessions', + {"page": page, "page_size": page_size, "orderby": orderby, "desc": desc, "id": id, "name": name}) res = res.json() if res.get("code") == 0: result_list = [] @@ -68,7 +84,7 @@ class Chat(Base): return result_list raise Exception(res["message"]) - def delete_sessions(self,ids: list[str] | None = None): + def delete_sessions(self, ids: list[str] | None = None): res = self.rm(f"/chats/{self.id}/sessions", {"ids": ids}) res = res.json() if res.get("code") != 0: diff --git a/sdk/python/ragflow_sdk/modules/chunk.py b/sdk/python/ragflow_sdk/modules/chunk.py index 960c87df6..4471b58af 100644 --- a/sdk/python/ragflow_sdk/modules/chunk.py +++ b/sdk/python/ragflow_sdk/modules/chunk.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from .base import Base @@ -18,11 +34,8 @@ class Chunk(Base): res_dict.pop(k) super().__init__(rag, res_dict) - - def update(self,update_message:dict): - res = self.put(f"/datasets/{self.dataset_id}/documents/{self.document_id}/chunks/{self.id}",update_message) + def update(self, update_message: dict): + res = self.put(f"/datasets/{self.dataset_id}/documents/{self.document_id}/chunks/{self.id}", update_message) res = res.json() - if res.get("code") != 0 : + if res.get("code") != 0: raise Exception(res["message"]) - - diff --git a/sdk/python/ragflow_sdk/modules/dataset.py b/sdk/python/ragflow_sdk/modules/dataset.py index 043a600ef..57d76d3ae 100644 --- a/sdk/python/ragflow_sdk/modules/dataset.py +++ b/sdk/python/ragflow_sdk/modules/dataset.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from .document import Document from .base import Base @@ -29,48 +45,51 @@ class DataSet(Base): def update(self, update_message: dict): res = self.put(f'/datasets/{self.id}', - update_message) + update_message) res = res.json() if res.get("code") != 0: raise Exception(res["message"]) - def upload_documents(self,document_list: list[dict]): + def upload_documents(self, document_list: list[dict]): url = f"/datasets/{self.id}/documents" - files = [("file",(ele["display_name"],ele["blob"])) for ele in document_list] - res = self.post(path=url,json=None,files=files) + files = [("file", (ele["display_name"], ele["blob"])) for ele in document_list] + res = self.post(path=url, json=None, files=files) res = res.json() if res.get("code") == 0: - doc_list=[] + doc_list = [] for doc in res["data"]: - document = Document(self.rag,doc) + document = Document(self.rag, doc) doc_list.append(document) return doc_list raise Exception(res.get("message")) - def list_documents(self, id: str | None = None, keywords: str | None = None, page: int = 1, page_size: int = 30, orderby: str = "create_time", desc: bool = True): - res = self.get(f"/datasets/{self.id}/documents",params={"id": id,"keywords": keywords,"page": page,"page_size": page_size,"orderby": orderby,"desc": desc}) + def list_documents(self, id: str | None = None, keywords: str | None = None, page: int = 1, page_size: int = 30, + orderby: str = "create_time", desc: bool = True): + res = self.get(f"/datasets/{self.id}/documents", + params={"id": id, "keywords": keywords, "page": page, "page_size": page_size, "orderby": orderby, + "desc": desc}) res = res.json() documents = [] if res.get("code") == 0: for document in res["data"].get("docs"): - documents.append(Document(self.rag,document)) + documents.append(Document(self.rag, document)) return documents raise Exception(res["message"]) - def delete_documents(self,ids: list[str] | None = None): - res = self.rm(f"/datasets/{self.id}/documents",{"ids":ids}) + def delete_documents(self, ids: list[str] | None = None): + res = self.rm(f"/datasets/{self.id}/documents", {"ids": ids}) res = res.json() if res.get("code") != 0: raise Exception(res["message"]) - def async_parse_documents(self,document_ids): - res = self.post(f"/datasets/{self.id}/chunks",{"document_ids":document_ids}) + def async_parse_documents(self, document_ids): + res = self.post(f"/datasets/{self.id}/chunks", {"document_ids": document_ids}) res = res.json() if res.get("code") != 0: raise Exception(res.get("message")) - def async_cancel_parse_documents(self,document_ids): - res = self.rm(f"/datasets/{self.id}/chunks",{"document_ids":document_ids}) + def async_cancel_parse_documents(self, document_ids): + res = self.rm(f"/datasets/{self.id}/chunks", {"document_ids": document_ids}) res = res.json() if res.get("code") != 0: raise Exception(res.get("message")) diff --git a/sdk/python/ragflow_sdk/modules/document.py b/sdk/python/ragflow_sdk/modules/document.py index 743016b23..bb3211d24 100644 --- a/sdk/python/ragflow_sdk/modules/document.py +++ b/sdk/python/ragflow_sdk/modules/document.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import json from .base import Base from .chunk import Chunk @@ -32,7 +48,6 @@ class Document(Base): res_dict.pop(k) super().__init__(rag, res_dict) - def update(self, update_message: dict): res = self.put(f'/datasets/{self.dataset_id}/documents/{self.id}', update_message) @@ -48,29 +63,28 @@ class Document(Base): except json.JSONDecodeError: return res.content - - def list_chunks(self,page=1, page_size=30, keywords=""): - data={"keywords": keywords,"page":page,"page_size":page_size} + def list_chunks(self, page=1, page_size=30, keywords=""): + data = {"keywords": keywords, "page": page, "page_size": page_size} res = self.get(f'/datasets/{self.dataset_id}/documents/{self.id}/chunks', data) res = res.json() if res.get("code") == 0: - chunks=[] + chunks = [] for data in res["data"].get("chunks"): - chunk = Chunk(self.rag,data) + chunk = Chunk(self.rag, data) chunks.append(chunk) return chunks raise Exception(res.get("message")) def add_chunk(self, content: str, important_keywords: list[str] = [], questions: list[str] = []): res = self.post(f'/datasets/{self.dataset_id}/documents/{self.id}/chunks', - {"content":content,"important_keywords":important_keywords, "questions": questions}) + {"content": content, "important_keywords": important_keywords, "questions": questions}) res = res.json() if res.get("code") == 0: - return Chunk(self.rag,res["data"].get("chunk")) + return Chunk(self.rag, res["data"].get("chunk")) raise Exception(res.get("message")) - def delete_chunks(self,ids:list[str] | None = None): - res = self.rm(f"/datasets/{self.dataset_id}/documents/{self.id}/chunks",{"chunk_ids":ids}) + def delete_chunks(self, ids: list[str] | None = None): + res = self.rm(f"/datasets/{self.dataset_id}/documents/{self.id}/chunks", {"chunk_ids": ids}) res = res.json() - if res.get("code")!=0: - raise Exception(res.get("message")) \ No newline at end of file + if res.get("code") != 0: + raise Exception(res.get("message")) diff --git a/sdk/python/ragflow_sdk/modules/session.py b/sdk/python/ragflow_sdk/modules/session.py index dcfc3392b..9a1a7fd3d 100644 --- a/sdk/python/ragflow_sdk/modules/session.py +++ b/sdk/python/ragflow_sdk/modules/session.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import json from .base import Base @@ -8,8 +24,8 @@ class Session(Base): self.id = None self.name = "New session" self.messages = [{"role": "assistant", "content": "Hi! I am your assistant,can I help you?"}] - for key,value in res_dict.items(): - if key =="chat_id" and value is not None: + for key, value in res_dict.items(): + if key == "chat_id" and value is not None: self.chat_id = None self.__session_type = "chat" if key == "agent_id" and value is not None: @@ -17,11 +33,11 @@ class Session(Base): self.__session_type = "agent" super().__init__(rag, res_dict) - def ask(self, question="",stream=True,**kwargs): + def ask(self, question="", stream=True, **kwargs): if self.__session_type == "agent": - res=self._ask_agent(question,stream) + res = self._ask_agent(question, stream) elif self.__session_type == "chat": - res=self._ask_chat(question,stream,**kwargs) + res = self._ask_chat(question, stream, **kwargs) for line in res.iter_lines(): line = line.decode("utf-8") if line.startswith("{"): @@ -44,25 +60,26 @@ class Session(Base): message = Message(self.rag, temp_dict) yield message - def _ask_chat(self, question: str, stream: bool,**kwargs): - json_data={"question": question, "stream": True,"session_id":self.id} + def _ask_chat(self, question: str, stream: bool, **kwargs): + json_data = {"question": question, "stream": True, "session_id": self.id} json_data.update(kwargs) res = self.post(f"/chats/{self.chat_id}/completions", json_data, stream=stream) return res - def _ask_agent(self,question:str,stream:bool): + def _ask_agent(self, question: str, stream: bool): res = self.post(f"/agents/{self.agent_id}/completions", - {"question": question, "stream": True,"session_id":self.id}, stream=stream) + {"question": question, "stream": True, "session_id": self.id}, stream=stream) return res - def update(self,update_message): + def update(self, update_message): res = self.put(f"/chats/{self.chat_id}/sessions/{self.id}", - update_message) + update_message) res = res.json() if res.get("code") != 0: raise Exception(res.get("message")) + class Message(Base): def __init__(self, rag, res_dict): self.content = "Hi! I am your assistant,can I help you?" diff --git a/sdk/python/test/conftest.py b/sdk/python/test/conftest.py index 463d0a881..423ee3d31 100644 --- a/sdk/python/test/conftest.py +++ b/sdk/python/test/conftest.py @@ -1,41 +1,61 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import os import pytest import requests - HOST_ADDRESS = os.getenv('HOST_ADDRESS', 'http://127.0.0.1:9380') + # def generate_random_email(): # return 'user_' + ''.join(random.choices(string.ascii_lowercase + string.digits, k=8))+'@1.com' def generate_email(): return 'user_123@1.com' + EMAIL = generate_email() # password is "123" -PASSWORD='''ctAseGvejiaSWWZ88T/m4FQVOpQyUvP+x7sXtdv3feqZACiQleuewkUi35E16wSd5C5QcnkkcV9cYc8TKPTRZlxappDuirxghxoOvFcJxFU4ixLsD +PASSWORD = '''ctAseGvejiaSWWZ88T/m4FQVOpQyUvP+x7sXtdv3feqZACiQleuewkUi35E16wSd5C5QcnkkcV9cYc8TKPTRZlxappDuirxghxoOvFcJxFU4ixLsD fN33jCHRoDUW81IH9zjij/vaw8IbVyb6vuwg6MX6inOEBRRzVbRYxXOu1wkWY6SsI8X70oF9aeLFp/PzQpjoe/YbSqpTq8qqrmHzn9vO+yvyYyvmDsphXe X8f7fp9c7vUsfOCkM+gHY3PadG+QHa7KI7mzTKgUTZImK6BZtfRBATDTthEUbbaTewY4H0MnWiCeeDhcbeQao6cFy1To8pE3RpmxnGnS8BsBn8w==''' + def register(): url = HOST_ADDRESS + "/v1/user/register" name = "user" - register_data = {"email":EMAIL,"nickname":name,"password":PASSWORD} - res = requests.post(url=url,json=register_data) + register_data = {"email": EMAIL, "nickname": name, "password": PASSWORD} + res = requests.post(url=url, json=register_data) res = res.json() if res.get("code") != 0: raise Exception(res.get("message")) + def login(): url = HOST_ADDRESS + "/v1/user/login" - login_data = {"email":EMAIL,"password":PASSWORD} - response=requests.post(url=url,json=login_data) + login_data = {"email": EMAIL, "password": PASSWORD} + response = requests.post(url=url, json=login_data) res = response.json() - if res.get("code")!=0: + if res.get("code") != 0: raise Exception(res.get("message")) auth = response.headers["Authorization"] return auth + @pytest.fixture(scope="session") def get_api_key_fixture(): try: @@ -45,12 +65,13 @@ def get_api_key_fixture(): auth = login() url = HOST_ADDRESS + "/v1/system/new_token" auth = {"Authorization": auth} - response = requests.post(url=url,headers=auth) + response = requests.post(url=url, headers=auth) res = response.json() if res.get("code") != 0: raise Exception(res.get("message")) return res["data"].get("token") + @pytest.fixture(scope="session") def get_auth(): try: @@ -60,6 +81,7 @@ def get_auth(): auth = login() return auth + @pytest.fixture(scope="session") def get_email(): return EMAIL diff --git a/sdk/python/test/test_frontend_api/common.py b/sdk/python/test/test_frontend_api/common.py index 1a8c174c5..19aa6df45 100644 --- a/sdk/python/test/test_frontend_api/common.py +++ b/sdk/python/test/test_frontend_api/common.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import os import requests diff --git a/sdk/python/test/test_frontend_api/get_email.py b/sdk/python/test/test_frontend_api/get_email.py index 923b82d2d..181094f5a 100644 --- a/sdk/python/test/test_frontend_api/get_email.py +++ b/sdk/python/test/test_frontend_api/get_email.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + def test_get_email(get_email): print("\nEmail account:",flush=True) print(f"{get_email}\n",flush=True) \ No newline at end of file diff --git a/sdk/python/test/test_frontend_api/test_dataset.py b/sdk/python/test/test_frontend_api/test_dataset.py index fe2de715a..3baaf4e8c 100644 --- a/sdk/python/test/test_frontend_api/test_dataset.py +++ b/sdk/python/test/test_frontend_api/test_dataset.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from common import create_dataset, list_dataset, rm_dataset, update_dataset, DATASET_NAME_LIMIT import re import random @@ -121,7 +137,8 @@ def test_update_different_params_dataset_success(get_auth): print(f"found {len(dataset_list)} datasets") dataset_id = dataset_list[0] - json_req = {"kb_id": dataset_id, "name": "test_update_dataset", "description": "test", "permission": "me", "parser_id": "presentation", + json_req = {"kb_id": dataset_id, "name": "test_update_dataset", "description": "test", "permission": "me", + "parser_id": "presentation", "language": "spanish"} res = update_dataset(get_auth, json_req) assert res.get("code") == 0, f"{res.get('message')}" @@ -164,4 +181,3 @@ def test_update_different_params_dataset_fail(get_auth): res = rm_dataset(get_auth, dataset_id) assert res.get("code") == 0, f"{res.get('message')}" print(f"{len(dataset_list)} datasets are deleted") - diff --git a/sdk/python/test/test_sdk_api/common.py b/sdk/python/test/test_sdk_api/common.py index a5bc8ad32..fe6aa88b7 100644 --- a/sdk/python/test/test_sdk_api/common.py +++ b/sdk/python/test/test_sdk_api/common.py @@ -1,2 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import os -HOST_ADDRESS=os.getenv('HOST_ADDRESS', 'http://127.0.0.1:9380') \ No newline at end of file + +HOST_ADDRESS = os.getenv('HOST_ADDRESS', 'http://127.0.0.1:9380') diff --git a/sdk/python/test/test_sdk_api/get_email.py b/sdk/python/test/test_sdk_api/get_email.py index 923b82d2d..7238922b7 100644 --- a/sdk/python/test/test_sdk_api/get_email.py +++ b/sdk/python/test/test_sdk_api/get_email.py @@ -1,3 +1,19 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + def test_get_email(get_email): - print("\nEmail account:",flush=True) - print(f"{get_email}\n",flush=True) \ No newline at end of file + print("\nEmail account:", flush=True) + print(f"{get_email}\n", flush=True) diff --git a/sdk/python/test/test_sdk_api/t_agent.py b/sdk/python/test/test_sdk_api/t_agent.py index aa330e52b..2fcd0e535 100644 --- a/sdk/python/test/test_sdk_api/t_agent.py +++ b/sdk/python/test/test_sdk_api/t_agent.py @@ -1,11 +1,28 @@ -from ragflow_sdk import RAGFlow,Agent +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +from ragflow_sdk import RAGFlow, Agent from common import HOST_ADDRESS import pytest + @pytest.mark.skip(reason="") def test_list_agents_with_success(get_api_key_fixture): - API_KEY=get_api_key_fixture - rag = RAGFlow(API_KEY,HOST_ADDRESS) + API_KEY = get_api_key_fixture + rag = RAGFlow(API_KEY, HOST_ADDRESS) rag.list_agents() @@ -13,7 +30,7 @@ def test_list_agents_with_success(get_api_key_fixture): def test_converse_with_agent_with_success(get_api_key_fixture): API_KEY = "ragflow-BkOGNhYjIyN2JiODExZWY5MzVhMDI0Mm" agent_id = "ebfada2eb2bc11ef968a0242ac120006" - rag = RAGFlow(API_KEY,HOST_ADDRESS) + rag = RAGFlow(API_KEY, HOST_ADDRESS) lang = "Chinese" file = "How is the weather tomorrow?" - Agent.ask(agent_id=agent_id,rag=rag,lang=lang,file=file) + Agent.ask(agent_id=agent_id, rag=rag, lang=lang, file=file) diff --git a/sdk/python/test/test_sdk_api/t_chat.py b/sdk/python/test/test_sdk_api/t_chat.py index d1670ad8c..5b9ed4275 100644 --- a/sdk/python/test/test_sdk_api/t_chat.py +++ b/sdk/python/test/test_sdk_api/t_chat.py @@ -1,6 +1,23 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from ragflow_sdk import RAGFlow from common import HOST_ADDRESS + def test_create_chat_with_name(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) @@ -8,10 +25,10 @@ def test_create_chat_with_name(get_api_key_fixture): display_name = "ragflow.txt" with open("test_data/ragflow.txt", "rb") as file: blob = file.read() - document = {"display_name":display_name,"blob":blob} + document = {"display_name": display_name, "blob": blob} documents = [] documents.append(document) - docs= kb.upload_documents(documents) + docs = kb.upload_documents(documents) for doc in docs: doc.add_chunk("This is a test to add chunk") rag.create_chat("test_create_chat", dataset_ids=[kb.id]) @@ -50,6 +67,7 @@ def test_delete_chats_with_success(get_api_key_fixture): chat = rag.create_chat("test_delete_chat", dataset_ids=[kb.id]) rag.delete_chats(ids=[chat.id]) + def test_list_chats_with_success(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) @@ -66,5 +84,3 @@ def test_list_chats_with_success(get_api_key_fixture): rag.create_chat("test_list_1", dataset_ids=[kb.id]) rag.create_chat("test_list_2", dataset_ids=[kb.id]) rag.list_chats() - - diff --git a/sdk/python/test/test_sdk_api/t_chunk.py b/sdk/python/test/test_sdk_api/t_chunk.py index a07e682e9..df2bfcad3 100644 --- a/sdk/python/test/test_sdk_api/t_chunk.py +++ b/sdk/python/test/test_sdk_api/t_chunk.py @@ -1,13 +1,30 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from ragflow_sdk import RAGFlow from common import HOST_ADDRESS from time import sleep + def test_parse_document_with_txt(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_parse_document") name = 'ragflow_test.txt' - with open("test_data/ragflow_test.txt", "rb") as file : + with open("test_data/ragflow_test.txt", "rb") as file: blob = file.read() docs = ds.upload_documents([{"display_name": name, "blob": blob}]) doc = docs[0] @@ -21,14 +38,15 @@ def test_parse_document_with_txt(get_api_key_fixture): raise Exception("Run time ERROR: Document parsing did not complete in time.") ''' + def test_parse_and_cancel_document(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_parse_and_cancel_document") name = 'ragflow_test.txt' - with open("test_data/ragflow_test.txt", "rb") as file : + with open("test_data/ragflow_test.txt", "rb") as file: blob = file.read() - docs=ds.upload_documents([{"display_name": name, "blob": blob}]) + docs = ds.upload_documents([{"display_name": name, "blob": blob}]) doc = docs[0] ds.async_parse_documents(document_ids=[doc.id]) sleep(1) @@ -60,6 +78,7 @@ def test_bulk_parse_documents(get_api_key_fixture): raise Exception("Run time ERROR: Bulk document parsing did not complete in time.") ''' + def test_list_chunks_with_success(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) @@ -73,7 +92,7 @@ def test_list_chunks_with_success(get_api_key_fixture): {'display_name': f'chunk_{i}.txt', 'blob': chunk} for i, chunk in enumerate(chunks) ] ''' - documents =[{"display_name":"test_list_chunks_with_success.txt","blob":blob}] + documents = [{"display_name": "test_list_chunks_with_success.txt", "blob": blob}] docs = ds.upload_documents(documents) ids = [doc.id for doc in docs] ds.async_parse_documents(ids) @@ -103,7 +122,7 @@ def test_add_chunk_with_success(get_api_key_fixture): {'display_name': f'chunk_{i}.txt', 'blob': chunk} for i, chunk in enumerate(chunks) ] ''' - documents =[{"display_name":"test_list_chunks_with_success.txt","blob":blob}] + documents = [{"display_name": "test_list_chunks_with_success.txt", "blob": blob}] docs = ds.upload_documents(documents) doc = docs[0] doc.add_chunk(content="This is a chunk addition test") @@ -122,7 +141,7 @@ def test_delete_chunk_with_success(get_api_key_fixture): {'display_name': f'chunk_{i}.txt', 'blob': chunk} for i, chunk in enumerate(chunks) ] ''' - documents =[{"display_name":"test_delete_chunk_with_success.txt","blob":blob}] + documents = [{"display_name": "test_delete_chunk_with_success.txt", "blob": blob}] docs = ds.upload_documents(documents) doc = docs[0] chunk = doc.add_chunk(content="This is a chunk addition test") @@ -143,13 +162,14 @@ def test_update_chunk_content(get_api_key_fixture): {'display_name': f'chunk_{i}.txt', 'blob': chunk} for i, chunk in enumerate(chunks) ] ''' - documents =[{"display_name":"test_update_chunk_content_with_success.txt","blob":blob}] + documents = [{"display_name": "test_update_chunk_content_with_success.txt", "blob": blob}] docs = ds.upload_documents(documents) doc = docs[0] chunk = doc.add_chunk(content="This is a chunk addition test") # For Elasticsearch, the chunk is not searchable in shot time (~2s). sleep(3) - chunk.update({"content":"This is a updated content"}) + chunk.update({"content": "This is a updated content"}) + def test_update_chunk_available(get_api_key_fixture): API_KEY = get_api_key_fixture @@ -164,13 +184,13 @@ def test_update_chunk_available(get_api_key_fixture): {'display_name': f'chunk_{i}.txt', 'blob': chunk} for i, chunk in enumerate(chunks) ] ''' - documents =[{"display_name":"test_update_chunk_available_with_success.txt","blob":blob}] + documents = [{"display_name": "test_update_chunk_available_with_success.txt", "blob": blob}] docs = ds.upload_documents(documents) doc = docs[0] chunk = doc.add_chunk(content="This is a chunk addition test") # For Elasticsearch, the chunk is not searchable in shot time (~2s). sleep(3) - chunk.update({"available":0}) + chunk.update({"available": 0}) def test_retrieve_chunks(get_api_key_fixture): @@ -186,11 +206,11 @@ def test_retrieve_chunks(get_api_key_fixture): {'display_name': f'chunk_{i}.txt', 'blob': chunk} for i, chunk in enumerate(chunks) ] ''' - documents =[{"display_name":"test_retrieve_chunks.txt","blob":blob}] + documents = [{"display_name": "test_retrieve_chunks.txt", "blob": blob}] docs = ds.upload_documents(documents) doc = docs[0] doc.add_chunk(content="This is a chunk addition test") - rag.retrieve(dataset_ids=[ds.id],document_ids=[doc.id]) + rag.retrieve(dataset_ids=[ds.id], document_ids=[doc.id]) rag.delete_datasets(ids=[ds.id]) # test different parameters for the retrieval diff --git a/sdk/python/test/test_sdk_api/t_dataset.py b/sdk/python/test/test_sdk_api/t_dataset.py index 288474409..7163e445c 100644 --- a/sdk/python/test/test_sdk_api/t_dataset.py +++ b/sdk/python/test/test_sdk_api/t_dataset.py @@ -1,13 +1,31 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from ragflow_sdk import RAGFlow import random import pytest from common import HOST_ADDRESS + def test_create_dataset_with_name(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) rag.create_dataset("test_create_dataset_with_name") + def test_create_dataset_with_duplicated_name(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) @@ -16,12 +34,15 @@ def test_create_dataset_with_duplicated_name(get_api_key_fixture): rag.create_dataset("test_create_dataset_with_duplicated_name") assert str(exc_info.value) == "Duplicated dataset name in creating dataset." + def test_create_dataset_with_random_chunk_method(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) - valid_chunk_methods = ["naive","manual","qa","table","paper","book","laws","presentation","picture","one","knowledge_graph","email"] + valid_chunk_methods = ["naive", "manual", "qa", "table", "paper", "book", "laws", "presentation", "picture", "one", + "knowledge_graph", "email"] random_chunk_method = random.choice(valid_chunk_methods) - rag.create_dataset("test_create_dataset_with_random_chunk_method",chunk_method=random_chunk_method) + rag.create_dataset("test_create_dataset_with_random_chunk_method", chunk_method=random_chunk_method) + def test_create_dataset_with_invalid_parameter(get_api_key_fixture): API_KEY = get_api_key_fixture @@ -30,7 +51,7 @@ def test_create_dataset_with_invalid_parameter(get_api_key_fixture): "knowledge_graph", "email", "tag"] chunk_method = "invalid_chunk_method" with pytest.raises(Exception) as exc_info: - rag.create_dataset("test_create_dataset_with_invalid_chunk_method",chunk_method=chunk_method) + rag.create_dataset("test_create_dataset_with_invalid_chunk_method", chunk_method=chunk_method) assert str(exc_info.value) == f"'{chunk_method}' is not in {valid_chunk_methods}" diff --git a/sdk/python/test/test_sdk_api/t_document.py b/sdk/python/test/test_sdk_api/t_document.py index 056963aa0..733b9bb5a 100644 --- a/sdk/python/test/test_sdk_api/t_document.py +++ b/sdk/python/test/test_sdk_api/t_document.py @@ -1,17 +1,34 @@ +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from ragflow_sdk import RAGFlow from common import HOST_ADDRESS import pytest + def test_upload_document_with_success(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_upload_document") blob = b"Sample document content for test." with open("test_data/ragflow.txt", "rb") as file: - blob_2=file.read() + blob_2 = file.read() document_infos = [] - document_infos.append({"display_name": "test_1.txt","blob": blob}) - document_infos.append({"display_name": "test_2.txt","blob": blob_2}) + document_infos.append({"display_name": "test_1.txt", "blob": blob}) + document_infos.append({"display_name": "test_2.txt", "blob": blob_2}) ds.upload_documents(document_infos) @@ -20,8 +37,8 @@ def test_update_document_with_success(get_api_key_fixture): rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_update_document") blob = b"Sample document content for test." - document_infos=[{"display_name":"test.txt","blob":blob}] - docs=ds.upload_documents(document_infos) + document_infos = [{"display_name": "test.txt", "blob": blob}] + docs = ds.upload_documents(document_infos) doc = docs[0] doc.update({"chunk_method": "manual", "name": "manual.txt"}) @@ -31,10 +48,10 @@ def test_download_document_with_success(get_api_key_fixture): rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_download_document") blob = b"Sample document content for test." - document_infos=[{"display_name": "test_1.txt","blob": blob}] - docs=ds.upload_documents(document_infos) + document_infos = [{"display_name": "test_1.txt", "blob": blob}] + docs = ds.upload_documents(document_infos) doc = docs[0] - with open("test_download.txt","wb+") as file: + with open("test_download.txt", "wb+") as file: file.write(doc.download()) @@ -43,7 +60,7 @@ def test_list_documents_in_dataset_with_success(get_api_key_fixture): rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_list_documents") blob = b"Sample document content for test." - document_infos = [{"display_name": "test.txt","blob":blob}] + document_infos = [{"display_name": "test.txt", "blob": blob}] ds.upload_documents(document_infos) ds.list_documents(keywords="test", page=1, page_size=12) @@ -54,113 +71,128 @@ def test_delete_documents_in_dataset_with_success(get_api_key_fixture): ds = rag.create_dataset(name="test_delete_documents") name = "test_delete_documents.txt" blob = b"Sample document content for test." - document_infos=[{"display_name": name, "blob": blob}] + document_infos = [{"display_name": name, "blob": blob}] docs = ds.upload_documents(document_infos) ds.delete_documents([docs[0].id]) + # upload and parse the document with different in different parse method. def test_upload_and_parse_pdf_documents_with_general_parse_method(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_pdf_document") with open("test_data/test.pdf", "rb") as file: - blob=file.read() - document_infos = [{"display_name": "test.pdf","blob": blob}] - docs=ds.upload_documents(document_infos) + blob = file.read() + document_infos = [{"display_name": "test.pdf", "blob": blob}] + docs = ds.upload_documents(document_infos) doc = docs[0] ds.async_parse_documents([doc.id]) + def test_upload_and_parse_docx_documents_with_general_parse_method(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_docx_document") with open("test_data/test.docx", "rb") as file: - blob=file.read() - document_infos = [{"display_name": "test.docx","blob": blob}] - docs=ds.upload_documents(document_infos) + blob = file.read() + document_infos = [{"display_name": "test.docx", "blob": blob}] + docs = ds.upload_documents(document_infos) doc = docs[0] ds.async_parse_documents([doc.id]) + + def test_upload_and_parse_excel_documents_with_general_parse_method(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_excel_document") with open("test_data/test.xlsx", "rb") as file: - blob=file.read() - document_infos = [{"display_name": "test.xlsx","blob": blob}] - docs=ds.upload_documents(document_infos) + blob = file.read() + document_infos = [{"display_name": "test.xlsx", "blob": blob}] + docs = ds.upload_documents(document_infos) doc = docs[0] ds.async_parse_documents([doc.id]) + + def test_upload_and_parse_ppt_documents_with_general_parse_method(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_ppt_document") with open("test_data/test.ppt", "rb") as file: - blob=file.read() - document_infos = [{"display_name": "test.ppt","blob": blob}] - docs=ds.upload_documents(document_infos) + blob = file.read() + document_infos = [{"display_name": "test.ppt", "blob": blob}] + docs = ds.upload_documents(document_infos) doc = docs[0] ds.async_parse_documents([doc.id]) + + def test_upload_and_parse_image_documents_with_general_parse_method(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_image_document") with open("test_data/test.jpg", "rb") as file: - blob=file.read() - document_infos = [{"display_name": "test.jpg","blob": blob}] - docs=ds.upload_documents(document_infos) + blob = file.read() + document_infos = [{"display_name": "test.jpg", "blob": blob}] + docs = ds.upload_documents(document_infos) doc = docs[0] ds.async_parse_documents([doc.id]) + + def test_upload_and_parse_txt_documents_with_general_parse_method(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_txt_document") with open("test_data/test.txt", "rb") as file: - blob=file.read() - document_infos = [{"display_name": "test.txt","blob": blob}] - docs=ds.upload_documents(document_infos) + blob = file.read() + document_infos = [{"display_name": "test.txt", "blob": blob}] + docs = ds.upload_documents(document_infos) doc = docs[0] ds.async_parse_documents([doc.id]) + + def test_upload_and_parse_md_documents_with_general_parse_method(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_md_document") with open("test_data/test.md", "rb") as file: - blob=file.read() - document_infos = [{"display_name": "test.md","blob": blob}] - docs=ds.upload_documents(document_infos) + blob = file.read() + document_infos = [{"display_name": "test.md", "blob": blob}] + docs = ds.upload_documents(document_infos) doc = docs[0] ds.async_parse_documents([doc.id]) + def test_upload_and_parse_json_documents_with_general_parse_method(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_json_document") with open("test_data/test.json", "rb") as file: - blob=file.read() - document_infos = [{"display_name": "test.json","blob": blob}] - docs=ds.upload_documents(document_infos) + blob = file.read() + document_infos = [{"display_name": "test.json", "blob": blob}] + docs = ds.upload_documents(document_infos) doc = docs[0] ds.async_parse_documents([doc.id]) + @pytest.mark.skip(reason="") def test_upload_and_parse_eml_documents_with_general_parse_method(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_eml_document") with open("test_data/test.eml", "rb") as file: - blob=file.read() - document_infos = [{"display_name": "test.eml","blob": blob}] - docs=ds.upload_documents(document_infos) + blob = file.read() + document_infos = [{"display_name": "test.eml", "blob": blob}] + docs = ds.upload_documents(document_infos) doc = docs[0] ds.async_parse_documents([doc.id]) + def test_upload_and_parse_html_documents_with_general_parse_method(get_api_key_fixture): API_KEY = get_api_key_fixture rag = RAGFlow(API_KEY, HOST_ADDRESS) ds = rag.create_dataset(name="test_html_document") with open("test_data/test.html", "rb") as file: - blob=file.read() - document_infos = [{"display_name": "test.html","blob": blob}] - docs=ds.upload_documents(document_infos) + blob = file.read() + document_infos = [{"display_name": "test.html", "blob": blob}] + docs = ds.upload_documents(document_infos) doc = docs[0] - ds.async_parse_documents([doc.id]) \ No newline at end of file + ds.async_parse_documents([doc.id]) diff --git a/sdk/python/test/test_sdk_api/t_session.py b/sdk/python/test/test_sdk_api/t_session.py index c4c064b84..40932fdad 100644 --- a/sdk/python/test/test_sdk_api/t_session.py +++ b/sdk/python/test/test_sdk_api/t_session.py @@ -1,4 +1,20 @@ -from ragflow_sdk import RAGFlow,Agent +# +# Copyright 2025 The InfiniFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +from ragflow_sdk import RAGFlow, Agent from common import HOST_ADDRESS import pytest @@ -10,13 +26,13 @@ def test_create_session_with_success(get_api_key_fixture): display_name = "ragflow.txt" with open("test_data/ragflow.txt", "rb") as file: blob = file.read() - document = {"display_name":display_name,"blob":blob} + document = {"display_name": display_name, "blob": blob} documents = [] documents.append(document) - docs= kb.upload_documents(documents) + docs = kb.upload_documents(documents) for doc in docs: doc.add_chunk("This is a test to add chunk") - assistant=rag.create_chat("test_create_session", dataset_ids=[kb.id]) + assistant = rag.create_chat("test_create_session", dataset_ids=[kb.id]) assistant.create_session() @@ -38,7 +54,7 @@ def test_create_conversation_with_success(get_api_key_fixture): question = "What is AI" for ans in session.ask(question): pass - + # assert not ans.content.startswith("**ERROR**"), "Please check this error." @@ -49,13 +65,13 @@ def test_delete_sessions_with_success(get_api_key_fixture): display_name = "ragflow.txt" with open("test_data/ragflow.txt", "rb") as file: blob = file.read() - document = {"display_name":display_name,"blob":blob} + document = {"display_name": display_name, "blob": blob} documents = [] documents.append(document) - docs= kb.upload_documents(documents) + docs = kb.upload_documents(documents) for doc in docs: doc.add_chunk("This is a test to add chunk") - assistant=rag.create_chat("test_delete_session", dataset_ids=[kb.id]) + assistant = rag.create_chat("test_delete_session", dataset_ids=[kb.id]) session = assistant.create_session() assistant.delete_sessions(ids=[session.id]) @@ -85,33 +101,36 @@ def test_list_sessions_with_success(get_api_key_fixture): display_name = "ragflow.txt" with open("test_data/ragflow.txt", "rb") as file: blob = file.read() - document = {"display_name":display_name,"blob":blob} + document = {"display_name": display_name, "blob": blob} documents = [] documents.append(document) - docs= kb.upload_documents(documents) + docs = kb.upload_documents(documents) for doc in docs: doc.add_chunk("This is a test to add chunk") - assistant=rag.create_chat("test_list_session", dataset_ids=[kb.id]) + assistant = rag.create_chat("test_list_session", dataset_ids=[kb.id]) assistant.create_session("test_1") assistant.create_session("test_2") assistant.list_sessions() + @pytest.mark.skip(reason="") def test_create_agent_session_with_success(get_api_key_fixture): API_KEY = "ragflow-BkOGNhYjIyN2JiODExZWY5MzVhMDI0Mm" - rag = RAGFlow(API_KEY,HOST_ADDRESS) + rag = RAGFlow(API_KEY, HOST_ADDRESS) Agent.create_session("2e45b5209c1011efa3e90242ac120006", rag) + @pytest.mark.skip(reason="") def test_create_agent_conversation_with_success(get_api_key_fixture): API_KEY = "ragflow-BkOGNhYjIyN2JiODExZWY5MzVhMDI0Mm" - rag = RAGFlow(API_KEY,HOST_ADDRESS) + rag = RAGFlow(API_KEY, HOST_ADDRESS) session = Agent.create_session("2e45b5209c1011efa3e90242ac120006", rag) session.ask("What is this job") + @pytest.mark.skip(reason="") def test_list_agent_sessions_with_success(get_api_key_fixture): API_KEY = "ragflow-BkOGNhYjIyN2JiODExZWY5MzVhMDI0Mm" agent_id = "2710f2269b4611ef8fdf0242ac120006" - rag = RAGFlow(API_KEY,HOST_ADDRESS) - Agent.list_sessions(agent_id,rag) + rag = RAGFlow(API_KEY, HOST_ADDRESS) + Agent.list_sessions(agent_id, rag)