Refactor code for improved readability and consistency

- Cleaned up whitespace and formatting in various files including http.py, language.py, logger.py, safe_exec.py, and SQL migration scripts.
- Consolidated import statements and removed unnecessary blank lines.
- Updated logging configuration for better clarity.
- Enhanced the safe execution code with improved error handling and logging.
- Removed commented-out code and unnecessary variables in backfill_zero_trades.py and other scripts.
- Added a pyproject.toml for Ruff and Vulture configuration.
- Introduced requirements-dev.txt for development dependencies.
- Removed commented-out stock entries in init.sql for cleaner migration scripts.
This commit is contained in:
dienakdz
2026-04-09 14:30:51 +07:00
parent 103055b3df
commit 87f2845483
157 changed files with 19026 additions and 17773 deletions
+47 -77
View File
@@ -1,24 +1,25 @@
"""
K-line data API routing
"""
from flask import Blueprint, request, jsonify
from datetime import datetime
import traceback
from flask import Blueprint, jsonify, request
from app.services.kline import KlineService
from app.utils.logger import get_logger
logger = get_logger(__name__)
kline_bp = Blueprint('kline', __name__)
kline_bp = Blueprint("kline", __name__)
kline_service = KlineService()
@kline_bp.route('/kline', methods=['GET'])
@kline_bp.route("/kline", methods=["GET"])
def get_kline():
"""
Get K-line data
parameter:
market: market type (Crypto, USStock, Forex, Futures)
symbol: trading pair/stock code
@@ -28,96 +29,65 @@ def get_kline():
"""
try:
# To force GET, use request.args
market = request.args.get('market', 'USStock')
symbol = request.args.get('symbol', '')
timeframe = request.args.get('timeframe', '1D')
limit = int(request.args.get('limit', 300))
before_time = request.args.get('before_time') or request.args.get('beforeTime')
market = request.args.get("market", "USStock")
symbol = request.args.get("symbol", "")
timeframe = request.args.get("timeframe", "1D")
limit = int(request.args.get("limit", 300))
before_time = request.args.get("before_time") or request.args.get("beforeTime")
if before_time:
before_time = int(before_time)
if not symbol:
return jsonify({
'code': 0,
'msg': 'Missing symbol parameter',
'data': None
}), 400
return jsonify({"code": 0, "msg": "Missing symbol parameter", "data": None}), 400
logger.info(f"Requesting K-lines: {market}:{symbol}, timeframe={timeframe}, limit={limit}")
klines = kline_service.get_kline(
market=market,
symbol=symbol,
timeframe=timeframe,
limit=limit,
before_time=before_time
market=market, symbol=symbol, timeframe=timeframe, limit=limit, before_time=before_time
)
if not klines:
# Give more detailed tips for specific situations
msg = 'No data found'
if market == 'Forex' and timeframe == '1m':
msg = 'Forex 1-minute data requires Tiingo paid subscription'
elif market == 'Forex' and timeframe in ('1W', '1M'):
msg = 'No weekly/monthly data available for this period'
return jsonify({
'code': 0,
'msg': msg,
'data': [],
'hint': 'tiingo_subscription' if (market == 'Forex' and timeframe == '1m') else None
})
return jsonify({
'code': 1,
'msg': 'success',
'data': klines
})
msg = "No data found"
if market == "Forex" and timeframe == "1m":
msg = "Forex 1-minute data requires Tiingo paid subscription"
elif market == "Forex" and timeframe in ("1W", "1M"):
msg = "No weekly/monthly data available for this period"
return jsonify(
{
"code": 0,
"msg": msg,
"data": [],
"hint": "tiingo_subscription" if (market == "Forex" and timeframe == "1m") else None,
}
)
return jsonify({"code": 1, "msg": "success", "data": klines})
except Exception as e:
logger.error(f"Failed to fetch K-lines: {str(e)}")
logger.error(traceback.format_exc())
return jsonify({
'code': 0,
'msg': f'Failed to fetch kline data: {str(e)}',
'data': None
}), 500
return jsonify({"code": 0, "msg": f"Failed to fetch kline data: {str(e)}", "data": None}), 500
@kline_bp.route('/price', methods=['GET'])
@kline_bp.route("/price", methods=["GET"])
def get_price():
"""Get the latest price"""
try:
market = request.args.get('market', 'USStock')
symbol = request.args.get('symbol', '')
market = request.args.get("market", "USStock")
symbol = request.args.get("symbol", "")
if not symbol:
return jsonify({
'code': 0,
'msg': 'Missing symbol parameter',
'data': None
}), 400
return jsonify({"code": 0, "msg": "Missing symbol parameter", "data": None}), 400
price_data = kline_service.get_latest_price(market, symbol)
if not price_data:
return jsonify({
'code': 0,
'msg': 'No price data found',
'data': None
})
return jsonify({
'code': 1,
'msg': 'success',
'data': price_data
})
return jsonify({"code": 0, "msg": "No price data found", "data": None})
return jsonify({"code": 1, "msg": "success", "data": price_data})
except Exception as e:
logger.error(f"Failed to fetch price: {str(e)}")
return jsonify({
'code': 0,
'msg': f'Failed to fetch price: {str(e)}',
'data': None
}), 500
return jsonify({"code": 0, "msg": f"Failed to fetch price: {str(e)}", "data": None}), 500