chore(api/core): apply ruff reformatting (#7624)

This commit is contained in:
Bowen Liang
2024-09-10 17:00:20 +08:00
committed by GitHub
parent 178730266d
commit 2cf1187b32
724 changed files with 21180 additions and 21123 deletions

View File

@@ -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.")

View File

@@ -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))

View File

@@ -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)

View File

@@ -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))