mirror of
http://112.124.100.131/huang.ze/ebiz-dify-ai.git
synced 2025-12-23 17:55:46 +08:00
chore(api/core): apply ruff reformatting (#7624)
This commit is contained in:
@@ -10,27 +10,28 @@ from core.tools.tool.builtin_tool import BuiltinTool
|
||||
|
||||
|
||||
class YahooFinanceAnalyticsTool(BuiltinTool):
|
||||
def _invoke(self, user_id: str, tool_parameters: dict[str, Any]) \
|
||||
-> Union[ToolInvokeMessage, list[ToolInvokeMessage]]:
|
||||
def _invoke(
|
||||
self, user_id: str, tool_parameters: dict[str, Any]
|
||||
) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]:
|
||||
"""
|
||||
invoke tools
|
||||
invoke tools
|
||||
"""
|
||||
symbol = tool_parameters.get('symbol', '')
|
||||
symbol = tool_parameters.get("symbol", "")
|
||||
if not symbol:
|
||||
return self.create_text_message('Please input symbol')
|
||||
|
||||
return self.create_text_message("Please input symbol")
|
||||
|
||||
time_range = [None, None]
|
||||
start_date = tool_parameters.get('start_date', '')
|
||||
start_date = tool_parameters.get("start_date", "")
|
||||
if start_date:
|
||||
time_range[0] = start_date
|
||||
else:
|
||||
time_range[0] = '1800-01-01'
|
||||
time_range[0] = "1800-01-01"
|
||||
|
||||
end_date = tool_parameters.get('end_date', '')
|
||||
end_date = tool_parameters.get("end_date", "")
|
||||
if end_date:
|
||||
time_range[1] = end_date
|
||||
else:
|
||||
time_range[1] = datetime.now().strftime('%Y-%m-%d')
|
||||
time_range[1] = datetime.now().strftime("%Y-%m-%d")
|
||||
|
||||
stock_data = download(symbol, start=time_range[0], end=time_range[1])
|
||||
max_segments = min(15, len(stock_data))
|
||||
@@ -41,30 +42,29 @@ class YahooFinanceAnalyticsTool(BuiltinTool):
|
||||
end_idx = (i + 1) * rows_per_segment if i < max_segments - 1 else len(stock_data)
|
||||
segment_data = stock_data.iloc[start_idx:end_idx]
|
||||
segment_summary = {
|
||||
'Start Date': segment_data.index[0],
|
||||
'End Date': segment_data.index[-1],
|
||||
'Average Close': segment_data['Close'].mean(),
|
||||
'Average Volume': segment_data['Volume'].mean(),
|
||||
'Average Open': segment_data['Open'].mean(),
|
||||
'Average High': segment_data['High'].mean(),
|
||||
'Average Low': segment_data['Low'].mean(),
|
||||
'Average Adj Close': segment_data['Adj Close'].mean(),
|
||||
'Max Close': segment_data['Close'].max(),
|
||||
'Min Close': segment_data['Close'].min(),
|
||||
'Max Volume': segment_data['Volume'].max(),
|
||||
'Min Volume': segment_data['Volume'].min(),
|
||||
'Max Open': segment_data['Open'].max(),
|
||||
'Min Open': segment_data['Open'].min(),
|
||||
'Max High': segment_data['High'].max(),
|
||||
'Min High': segment_data['High'].min(),
|
||||
"Start Date": segment_data.index[0],
|
||||
"End Date": segment_data.index[-1],
|
||||
"Average Close": segment_data["Close"].mean(),
|
||||
"Average Volume": segment_data["Volume"].mean(),
|
||||
"Average Open": segment_data["Open"].mean(),
|
||||
"Average High": segment_data["High"].mean(),
|
||||
"Average Low": segment_data["Low"].mean(),
|
||||
"Average Adj Close": segment_data["Adj Close"].mean(),
|
||||
"Max Close": segment_data["Close"].max(),
|
||||
"Min Close": segment_data["Close"].min(),
|
||||
"Max Volume": segment_data["Volume"].max(),
|
||||
"Min Volume": segment_data["Volume"].min(),
|
||||
"Max Open": segment_data["Open"].max(),
|
||||
"Min Open": segment_data["Open"].min(),
|
||||
"Max High": segment_data["High"].max(),
|
||||
"Min High": segment_data["High"].min(),
|
||||
}
|
||||
|
||||
|
||||
summary_data.append(segment_summary)
|
||||
|
||||
summary_df = pd.DataFrame(summary_data)
|
||||
|
||||
|
||||
try:
|
||||
return self.create_text_message(str(summary_df.to_dict()))
|
||||
except (HTTPError, ReadTimeout):
|
||||
return self.create_text_message('There is a internet connection problem. Please try again later.')
|
||||
|
||||
return self.create_text_message("There is a internet connection problem. Please try again later.")
|
||||
|
||||
@@ -8,40 +8,39 @@ from core.tools.tool.builtin_tool import BuiltinTool
|
||||
|
||||
|
||||
class YahooFinanceSearchTickerTool(BuiltinTool):
|
||||
def _invoke(self,user_id: str, tool_parameters: dict[str, Any]) \
|
||||
-> Union[ToolInvokeMessage, list[ToolInvokeMessage]]:
|
||||
'''
|
||||
invoke tools
|
||||
'''
|
||||
|
||||
query = tool_parameters.get('symbol', '')
|
||||
def _invoke(
|
||||
self, user_id: str, tool_parameters: dict[str, Any]
|
||||
) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]:
|
||||
"""
|
||||
invoke tools
|
||||
"""
|
||||
|
||||
query = tool_parameters.get("symbol", "")
|
||||
if not query:
|
||||
return self.create_text_message('Please input symbol')
|
||||
|
||||
return self.create_text_message("Please input symbol")
|
||||
|
||||
try:
|
||||
return self.run(ticker=query, user_id=user_id)
|
||||
except (HTTPError, ReadTimeout):
|
||||
return self.create_text_message('There is a internet connection problem. Please try again later.')
|
||||
return self.create_text_message("There is a internet connection problem. Please try again later.")
|
||||
|
||||
def run(self, ticker: str, user_id: str) -> ToolInvokeMessage:
|
||||
company = yfinance.Ticker(ticker)
|
||||
try:
|
||||
if company.isin is None:
|
||||
return self.create_text_message(f'Company ticker {ticker} not found.')
|
||||
return self.create_text_message(f"Company ticker {ticker} not found.")
|
||||
except (HTTPError, ReadTimeout, ConnectionError):
|
||||
return self.create_text_message(f'Company ticker {ticker} not found.')
|
||||
return self.create_text_message(f"Company ticker {ticker} not found.")
|
||||
|
||||
links = []
|
||||
try:
|
||||
links = [n['link'] for n in company.news if n['type'] == 'STORY']
|
||||
links = [n["link"] for n in company.news if n["type"] == "STORY"]
|
||||
except (HTTPError, ReadTimeout, ConnectionError):
|
||||
if not links:
|
||||
return self.create_text_message(f'There is nothing about {ticker} ticker')
|
||||
return self.create_text_message(f"There is nothing about {ticker} ticker")
|
||||
if not links:
|
||||
return self.create_text_message(f'No news found for company that searched with {ticker} ticker.')
|
||||
|
||||
result = '\n\n'.join([
|
||||
self.get_url(link) for link in links
|
||||
])
|
||||
return self.create_text_message(f"No news found for company that searched with {ticker} ticker.")
|
||||
|
||||
result = "\n\n".join([self.get_url(link) for link in links])
|
||||
|
||||
return self.create_text_message(self.summary(user_id=user_id, content=result))
|
||||
|
||||
@@ -8,19 +8,20 @@ from core.tools.tool.builtin_tool import BuiltinTool
|
||||
|
||||
|
||||
class YahooFinanceSearchTickerTool(BuiltinTool):
|
||||
def _invoke(self, user_id: str, tool_parameters: dict[str, Any]) \
|
||||
-> Union[ToolInvokeMessage, list[ToolInvokeMessage]]:
|
||||
def _invoke(
|
||||
self, user_id: str, tool_parameters: dict[str, Any]
|
||||
) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]:
|
||||
"""
|
||||
invoke tools
|
||||
invoke tools
|
||||
"""
|
||||
query = tool_parameters.get('symbol', '')
|
||||
query = tool_parameters.get("symbol", "")
|
||||
if not query:
|
||||
return self.create_text_message('Please input symbol')
|
||||
|
||||
return self.create_text_message("Please input symbol")
|
||||
|
||||
try:
|
||||
return self.create_text_message(self.run(ticker=query))
|
||||
except (HTTPError, ReadTimeout):
|
||||
return self.create_text_message('There is a internet connection problem. Please try again later.')
|
||||
|
||||
return self.create_text_message("There is a internet connection problem. Please try again later.")
|
||||
|
||||
def run(self, ticker: str) -> str:
|
||||
return str(Ticker(ticker).info)
|
||||
return str(Ticker(ticker).info)
|
||||
|
||||
@@ -11,11 +11,10 @@ class YahooFinanceProvider(BuiltinToolProviderController):
|
||||
"credentials": credentials,
|
||||
}
|
||||
).invoke(
|
||||
user_id='',
|
||||
user_id="",
|
||||
tool_parameters={
|
||||
"ticker": "MSFT",
|
||||
},
|
||||
)
|
||||
except Exception as e:
|
||||
raise ToolProviderCredentialValidationError(str(e))
|
||||
|
||||
Reference in New Issue
Block a user