improve type hints using typing.Literal and add type annotations (#25641)

Co-authored-by: EchterTimo <EchterTimo@users.noreply.github.com>
This commit is contained in:
Timo
2025-09-14 12:44:23 +02:00
committed by GitHub
parent 7a626747cf
commit 9234a2293d

View File

@@ -1,5 +1,5 @@
import json import json
from typing import Literal
import requests import requests
@@ -8,7 +8,7 @@ class DifyClient:
self.api_key = api_key self.api_key = api_key
self.base_url = base_url self.base_url = base_url
def _send_request(self, method, endpoint, json=None, params=None, stream=False): def _send_request(self, method: str, endpoint: str, json: dict | None = None, params: dict | None = None, stream: bool = False):
headers = { headers = {
"Authorization": f"Bearer {self.api_key}", "Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json", "Content-Type": "application/json",
@@ -31,15 +31,15 @@ class DifyClient:
return response return response
def message_feedback(self, message_id, rating, user): def message_feedback(self, message_id: str, rating: Literal["like", "dislike"], user: str):
data = {"rating": rating, "user": user} data = {"rating": rating, "user": user}
return self._send_request("POST", f"/messages/{message_id}/feedbacks", data) return self._send_request("POST", f"/messages/{message_id}/feedbacks", data)
def get_application_parameters(self, user): def get_application_parameters(self, user: str):
params = {"user": user} params = {"user": user}
return self._send_request("GET", "/parameters", params=params) return self._send_request("GET", "/parameters", params=params)
def file_upload(self, user, files): def file_upload(self, user: str, files: dict):
data = {"user": user} data = {"user": user}
return self._send_request_with_files( return self._send_request_with_files(
"POST", "/files/upload", data=data, files=files "POST", "/files/upload", data=data, files=files
@@ -49,13 +49,13 @@ class DifyClient:
data = {"text": text, "user": user, "streaming": streaming} data = {"text": text, "user": user, "streaming": streaming}
return self._send_request("POST", "/text-to-audio", json=data) return self._send_request("POST", "/text-to-audio", json=data)
def get_meta(self, user): def get_meta(self, user: str):
params = {"user": user} params = {"user": user}
return self._send_request("GET", "/meta", params=params) return self._send_request("GET", "/meta", params=params)
class CompletionClient(DifyClient): class CompletionClient(DifyClient):
def create_completion_message(self, inputs, response_mode, user, files=None): def create_completion_message(self, inputs: dict, response_mode: Literal["blocking", "streaming"], user: str, files: dict | None = None):
data = { data = {
"inputs": inputs, "inputs": inputs,
"response_mode": response_mode, "response_mode": response_mode,
@@ -76,7 +76,7 @@ class ChatClient(DifyClient):
inputs: dict, inputs: dict,
query: str, query: str,
user: str, user: str,
response_mode: str = "blocking", response_mode: Literal["blocking", "streaming"] = "blocking",
conversation_id: str | None = None, conversation_id: str | None = None,
files: dict | None = None, files: dict | None = None,
): ):
@@ -156,7 +156,7 @@ class ChatClient(DifyClient):
class WorkflowClient(DifyClient): class WorkflowClient(DifyClient):
def run( def run(
self, inputs: dict, response_mode: str = "streaming", user: str = "abc-123" self, inputs: dict, response_mode: Literal["blocking", "streaming"] = "streaming", user: str = "abc-123"
): ):
data = {"inputs": inputs, "response_mode": response_mode, "user": user} data = {"inputs": inputs, "response_mode": response_mode, "user": user}
return self._send_request("POST", "/workflows/run", data) return self._send_request("POST", "/workflows/run", data)
@@ -172,7 +172,7 @@ class WorkflowClient(DifyClient):
class KnowledgeBaseClient(DifyClient): class KnowledgeBaseClient(DifyClient):
def __init__( def __init__(
self, self,
api_key, api_key: str,
base_url: str = "https://api.dify.ai/v1", base_url: str = "https://api.dify.ai/v1",
dataset_id: str | None = None, dataset_id: str | None = None,
): ):
@@ -241,7 +241,7 @@ class KnowledgeBaseClient(DifyClient):
return self._send_request("POST", url, json=data, **kwargs) return self._send_request("POST", url, json=data, **kwargs)
def update_document_by_text( def update_document_by_text(
self, document_id, name, text, extra_params: dict | None = None, **kwargs self, document_id: str, name: str, text: str, extra_params: dict | None = None, **kwargs
): ):
""" """
Update a document by text. Update a document by text.
@@ -278,7 +278,7 @@ class KnowledgeBaseClient(DifyClient):
return self._send_request("POST", url, json=data, **kwargs) return self._send_request("POST", url, json=data, **kwargs)
def create_document_by_file( def create_document_by_file(
self, file_path, original_document_id=None, extra_params: dict | None = None self, file_path: str, original_document_id: str | None = None, extra_params: dict | None = None
): ):
""" """
Create a document by file. Create a document by file.
@@ -320,7 +320,7 @@ class KnowledgeBaseClient(DifyClient):
) )
def update_document_by_file( def update_document_by_file(
self, document_id, file_path, extra_params: dict | None = None self, document_id: str, file_path: str, extra_params: dict | None = None
): ):
""" """
Update a document by file. Update a document by file.
@@ -377,7 +377,7 @@ class KnowledgeBaseClient(DifyClient):
url = f"/datasets/{self._get_dataset_id()}" url = f"/datasets/{self._get_dataset_id()}"
return self._send_request("DELETE", url) return self._send_request("DELETE", url)
def delete_document(self, document_id): def delete_document(self, document_id: str):
""" """
Delete a document. Delete a document.
@@ -409,7 +409,7 @@ class KnowledgeBaseClient(DifyClient):
url = f"/datasets/{self._get_dataset_id()}/documents" url = f"/datasets/{self._get_dataset_id()}/documents"
return self._send_request("GET", url, params=params, **kwargs) return self._send_request("GET", url, params=params, **kwargs)
def add_segments(self, document_id, segments, **kwargs): def add_segments(self, document_id: str, segments: list[dict], **kwargs):
""" """
Add segments to a document. Add segments to a document.
@@ -423,7 +423,7 @@ class KnowledgeBaseClient(DifyClient):
def query_segments( def query_segments(
self, self,
document_id, document_id: str,
keyword: str | None = None, keyword: str | None = None,
status: str | None = None, status: str | None = None,
**kwargs, **kwargs,
@@ -445,7 +445,7 @@ class KnowledgeBaseClient(DifyClient):
params.update(kwargs["params"]) params.update(kwargs["params"])
return self._send_request("GET", url, params=params, **kwargs) return self._send_request("GET", url, params=params, **kwargs)
def delete_document_segment(self, document_id, segment_id): def delete_document_segment(self, document_id: str, segment_id: str):
""" """
Delete a segment from a document. Delete a segment from a document.
@@ -456,7 +456,7 @@ class KnowledgeBaseClient(DifyClient):
url = f"/datasets/{self._get_dataset_id()}/documents/{document_id}/segments/{segment_id}" url = f"/datasets/{self._get_dataset_id()}/documents/{document_id}/segments/{segment_id}"
return self._send_request("DELETE", url) return self._send_request("DELETE", url)
def update_document_segment(self, document_id, segment_id, segment_data, **kwargs): def update_document_segment(self, document_id: str, segment_id: str, segment_data: dict, **kwargs):
""" """
Update a segment in a document. Update a segment in a document.