fix: auto-fix code issues (cron)
- 修复重复导入/字段 - 修复异常处理 - 修复PEP8格式问题 - 添加类型注解
This commit is contained in:
@@ -10,14 +10,14 @@ InsightFlow Phase 8 - 全球化与本地化管理模块
|
||||
作者: InsightFlow Team
|
||||
"""
|
||||
|
||||
import sqlite3
|
||||
import json
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from typing import Optional, List, Dict, Any
|
||||
from dataclasses import dataclass
|
||||
from enum import Enum
|
||||
import logging
|
||||
import sqlite3
|
||||
import uuid
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
from enum import StrEnum
|
||||
from typing import Any
|
||||
|
||||
try:
|
||||
import pytz
|
||||
@@ -36,7 +36,7 @@ except ImportError:
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class LanguageCode(str, Enum):
|
||||
class LanguageCode(StrEnum):
|
||||
"""支持的语言代码"""
|
||||
|
||||
EN = "en"
|
||||
@@ -53,7 +53,7 @@ class LanguageCode(str, Enum):
|
||||
HI = "hi"
|
||||
|
||||
|
||||
class RegionCode(str, Enum):
|
||||
class RegionCode(StrEnum):
|
||||
"""区域代码"""
|
||||
|
||||
GLOBAL = "global"
|
||||
@@ -65,7 +65,7 @@ class RegionCode(str, Enum):
|
||||
MIDDLE_EAST = "me"
|
||||
|
||||
|
||||
class DataCenterRegion(str, Enum):
|
||||
class DataCenterRegion(StrEnum):
|
||||
"""数据中心区域"""
|
||||
|
||||
US_EAST = "us-east"
|
||||
@@ -79,7 +79,7 @@ class DataCenterRegion(str, Enum):
|
||||
CN_EAST = "cn-east"
|
||||
|
||||
|
||||
class PaymentProvider(str, Enum):
|
||||
class PaymentProvider(StrEnum):
|
||||
"""支付提供商"""
|
||||
|
||||
STRIPE = "stripe"
|
||||
@@ -96,7 +96,7 @@ class PaymentProvider(str, Enum):
|
||||
UNIONPAY = "unionpay"
|
||||
|
||||
|
||||
class CalendarType(str, Enum):
|
||||
class CalendarType(StrEnum):
|
||||
"""日历类型"""
|
||||
|
||||
GREGORIAN = "gregorian"
|
||||
@@ -115,12 +115,12 @@ class Translation:
|
||||
language: str
|
||||
value: str
|
||||
namespace: str
|
||||
context: Optional[str]
|
||||
context: str | None
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
is_reviewed: bool
|
||||
reviewed_by: Optional[str]
|
||||
reviewed_at: Optional[datetime]
|
||||
reviewed_by: str | None
|
||||
reviewed_at: datetime | None
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -131,7 +131,7 @@ class LanguageConfig:
|
||||
is_rtl: bool
|
||||
is_active: bool
|
||||
is_default: bool
|
||||
fallback_language: Optional[str]
|
||||
fallback_language: str | None
|
||||
date_format: str
|
||||
time_format: str
|
||||
datetime_format: str
|
||||
@@ -150,8 +150,8 @@ class DataCenter:
|
||||
endpoint: str
|
||||
status: str
|
||||
priority: int
|
||||
supported_regions: List[str]
|
||||
capabilities: Dict[str, Any]
|
||||
supported_regions: list[str]
|
||||
capabilities: dict[str, Any]
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
@@ -161,7 +161,7 @@ class TenantDataCenterMapping:
|
||||
id: str
|
||||
tenant_id: str
|
||||
primary_dc_id: str
|
||||
secondary_dc_id: Optional[str]
|
||||
secondary_dc_id: str | None
|
||||
region_code: str
|
||||
data_residency: str
|
||||
created_at: datetime
|
||||
@@ -173,15 +173,15 @@ class LocalizedPaymentMethod:
|
||||
id: str
|
||||
provider: str
|
||||
name: str
|
||||
name_local: Dict[str, str]
|
||||
supported_countries: List[str]
|
||||
supported_currencies: List[str]
|
||||
name_local: dict[str, str]
|
||||
supported_countries: list[str]
|
||||
supported_currencies: list[str]
|
||||
is_active: bool
|
||||
config: Dict[str, Any]
|
||||
icon_url: Optional[str]
|
||||
config: dict[str, Any]
|
||||
icon_url: str | None
|
||||
display_order: int
|
||||
min_amount: Optional[float]
|
||||
max_amount: Optional[float]
|
||||
min_amount: float | None
|
||||
max_amount: float | None
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
@@ -191,20 +191,20 @@ class CountryConfig:
|
||||
code: str
|
||||
code3: str
|
||||
name: str
|
||||
name_local: Dict[str, str]
|
||||
name_local: dict[str, str]
|
||||
region: str
|
||||
default_language: str
|
||||
supported_languages: List[str]
|
||||
supported_languages: list[str]
|
||||
default_currency: str
|
||||
supported_currencies: List[str]
|
||||
supported_currencies: list[str]
|
||||
timezone: str
|
||||
calendar_type: str
|
||||
date_format: Optional[str]
|
||||
time_format: Optional[str]
|
||||
number_format: Optional[str]
|
||||
address_format: Optional[str]
|
||||
phone_format: Optional[str]
|
||||
vat_rate: Optional[float]
|
||||
date_format: str | None
|
||||
time_format: str | None
|
||||
number_format: str | None
|
||||
address_format: str | None
|
||||
phone_format: str | None
|
||||
vat_rate: float | None
|
||||
is_active: bool
|
||||
|
||||
|
||||
@@ -213,7 +213,7 @@ class TimezoneConfig:
|
||||
id: str
|
||||
timezone: str
|
||||
utc_offset: str
|
||||
dst_offset: Optional[str]
|
||||
dst_offset: str | None
|
||||
country_code: str
|
||||
region: str
|
||||
is_active: bool
|
||||
@@ -223,7 +223,7 @@ class TimezoneConfig:
|
||||
class CurrencyConfig:
|
||||
code: str
|
||||
name: str
|
||||
name_local: Dict[str, str]
|
||||
name_local: dict[str, str]
|
||||
symbol: str
|
||||
decimal_places: int
|
||||
decimal_separator: str
|
||||
@@ -236,13 +236,13 @@ class LocalizationSettings:
|
||||
id: str
|
||||
tenant_id: str
|
||||
default_language: str
|
||||
supported_languages: List[str]
|
||||
supported_languages: list[str]
|
||||
default_currency: str
|
||||
supported_currencies: List[str]
|
||||
supported_currencies: list[str]
|
||||
default_timezone: str
|
||||
default_date_format: Optional[str]
|
||||
default_time_format: Optional[str]
|
||||
default_number_format: Optional[str]
|
||||
default_date_format: str | None
|
||||
default_time_format: str | None
|
||||
default_number_format: str | None
|
||||
calendar_type: str
|
||||
first_day_of_week: int
|
||||
region_code: str
|
||||
@@ -940,7 +940,7 @@ class LocalizationManager:
|
||||
|
||||
def get_translation(
|
||||
self, key: str, language: str, namespace: str = "common", fallback: bool = True
|
||||
) -> Optional[str]:
|
||||
) -> str | None:
|
||||
conn = self._get_connection()
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
@@ -962,7 +962,7 @@ class LocalizationManager:
|
||||
self._close_if_file_db(conn)
|
||||
|
||||
def set_translation(
|
||||
self, key: str, language: str, value: str, namespace: str = "common", context: Optional[str] = None
|
||||
self, key: str, language: str, value: str, namespace: str = "common", context: str | None = None
|
||||
) -> Translation:
|
||||
conn = self._get_connection()
|
||||
try:
|
||||
@@ -985,7 +985,7 @@ class LocalizationManager:
|
||||
|
||||
def _get_translation_internal(
|
||||
self, conn: sqlite3.Connection, key: str, language: str, namespace: str
|
||||
) -> Optional[Translation]:
|
||||
) -> Translation | None:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(
|
||||
"SELECT * FROM translations WHERE key = ? AND language = ? AND namespace = ?", (key, language, namespace)
|
||||
@@ -1008,8 +1008,8 @@ class LocalizationManager:
|
||||
self._close_if_file_db(conn)
|
||||
|
||||
def list_translations(
|
||||
self, language: Optional[str] = None, namespace: Optional[str] = None, limit: int = 1000, offset: int = 0
|
||||
) -> List[Translation]:
|
||||
self, language: str | None = None, namespace: str | None = None, limit: int = 1000, offset: int = 0
|
||||
) -> list[Translation]:
|
||||
conn = self._get_connection()
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
@@ -1029,7 +1029,7 @@ class LocalizationManager:
|
||||
finally:
|
||||
self._close_if_file_db(conn)
|
||||
|
||||
def get_language_config(self, code: str) -> Optional[LanguageConfig]:
|
||||
def get_language_config(self, code: str) -> LanguageConfig | None:
|
||||
conn = self._get_connection()
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
@@ -1041,7 +1041,7 @@ class LocalizationManager:
|
||||
finally:
|
||||
self._close_if_file_db(conn)
|
||||
|
||||
def list_language_configs(self, active_only: bool = True) -> List[LanguageConfig]:
|
||||
def list_language_configs(self, active_only: bool = True) -> list[LanguageConfig]:
|
||||
conn = self._get_connection()
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
@@ -1055,7 +1055,7 @@ class LocalizationManager:
|
||||
finally:
|
||||
self._close_if_file_db(conn)
|
||||
|
||||
def get_data_center(self, dc_id: str) -> Optional[DataCenter]:
|
||||
def get_data_center(self, dc_id: str) -> DataCenter | None:
|
||||
conn = self._get_connection()
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
@@ -1067,7 +1067,7 @@ class LocalizationManager:
|
||||
finally:
|
||||
self._close_if_file_db(conn)
|
||||
|
||||
def get_data_center_by_region(self, region_code: str) -> Optional[DataCenter]:
|
||||
def get_data_center_by_region(self, region_code: str) -> DataCenter | None:
|
||||
conn = self._get_connection()
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
@@ -1079,7 +1079,7 @@ class LocalizationManager:
|
||||
finally:
|
||||
self._close_if_file_db(conn)
|
||||
|
||||
def list_data_centers(self, status: Optional[str] = None, region: Optional[str] = None) -> List[DataCenter]:
|
||||
def list_data_centers(self, status: str | None = None, region: str | None = None) -> list[DataCenter]:
|
||||
conn = self._get_connection()
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
@@ -1098,7 +1098,7 @@ class LocalizationManager:
|
||||
finally:
|
||||
self._close_if_file_db(conn)
|
||||
|
||||
def get_tenant_data_center(self, tenant_id: str) -> Optional[TenantDataCenterMapping]:
|
||||
def get_tenant_data_center(self, tenant_id: str) -> TenantDataCenterMapping | None:
|
||||
conn = self._get_connection()
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
@@ -1159,7 +1159,7 @@ class LocalizationManager:
|
||||
finally:
|
||||
self._close_if_file_db(conn)
|
||||
|
||||
def get_payment_method(self, provider: str) -> Optional[LocalizedPaymentMethod]:
|
||||
def get_payment_method(self, provider: str) -> LocalizedPaymentMethod | None:
|
||||
conn = self._get_connection()
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
@@ -1172,8 +1172,8 @@ class LocalizationManager:
|
||||
self._close_if_file_db(conn)
|
||||
|
||||
def list_payment_methods(
|
||||
self, country_code: Optional[str] = None, currency: Optional[str] = None, active_only: bool = True
|
||||
) -> List[LocalizedPaymentMethod]:
|
||||
self, country_code: str | None = None, currency: str | None = None, active_only: bool = True
|
||||
) -> list[LocalizedPaymentMethod]:
|
||||
conn = self._get_connection()
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
@@ -1194,7 +1194,7 @@ class LocalizationManager:
|
||||
finally:
|
||||
self._close_if_file_db(conn)
|
||||
|
||||
def get_localized_payment_methods(self, country_code: str, language: str = "en") -> List[Dict[str, Any]]:
|
||||
def get_localized_payment_methods(self, country_code: str, language: str = "en") -> list[dict[str, Any]]:
|
||||
methods = self.list_payment_methods(country_code=country_code)
|
||||
result = []
|
||||
for method in methods:
|
||||
@@ -1212,7 +1212,7 @@ class LocalizationManager:
|
||||
)
|
||||
return result
|
||||
|
||||
def get_country_config(self, code: str) -> Optional[CountryConfig]:
|
||||
def get_country_config(self, code: str) -> CountryConfig | None:
|
||||
conn = self._get_connection()
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
@@ -1224,7 +1224,7 @@ class LocalizationManager:
|
||||
finally:
|
||||
self._close_if_file_db(conn)
|
||||
|
||||
def list_country_configs(self, region: Optional[str] = None, active_only: bool = True) -> List[CountryConfig]:
|
||||
def list_country_configs(self, region: str | None = None, active_only: bool = True) -> list[CountryConfig]:
|
||||
conn = self._get_connection()
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
@@ -1243,7 +1243,7 @@ class LocalizationManager:
|
||||
self._close_if_file_db(conn)
|
||||
|
||||
def format_datetime(
|
||||
self, dt: datetime, language: str = "en", timezone: Optional[str] = None, format_type: str = "datetime"
|
||||
self, dt: datetime, language: str = "en", timezone: str | None = None, format_type: str = "datetime"
|
||||
) -> str:
|
||||
try:
|
||||
if timezone and PYTZ_AVAILABLE:
|
||||
@@ -1276,7 +1276,7 @@ class LocalizationManager:
|
||||
logger.error(f"Error formatting datetime: {e}")
|
||||
return dt.strftime("%Y-%m-%d %H:%M")
|
||||
|
||||
def format_number(self, number: float, language: str = "en", decimal_places: Optional[int] = None) -> str:
|
||||
def format_number(self, number: float, language: str = "en", decimal_places: int | None = None) -> str:
|
||||
try:
|
||||
if BABEL_AVAILABLE:
|
||||
try:
|
||||
@@ -1319,7 +1319,7 @@ class LocalizationManager:
|
||||
logger.error(f"Error converting timezone: {e}")
|
||||
return dt
|
||||
|
||||
def get_calendar_info(self, calendar_type: str, year: int, month: int) -> Dict[str, Any]:
|
||||
def get_calendar_info(self, calendar_type: str, year: int, month: int) -> dict[str, Any]:
|
||||
import calendar
|
||||
|
||||
cal = calendar.Calendar()
|
||||
@@ -1334,7 +1334,7 @@ class LocalizationManager:
|
||||
"weeks": month_days,
|
||||
}
|
||||
|
||||
def get_localization_settings(self, tenant_id: str) -> Optional[LocalizationSettings]:
|
||||
def get_localization_settings(self, tenant_id: str) -> LocalizationSettings | None:
|
||||
conn = self._get_connection()
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
@@ -1350,9 +1350,9 @@ class LocalizationManager:
|
||||
self,
|
||||
tenant_id: str,
|
||||
default_language: str = "en",
|
||||
supported_languages: Optional[List[str]] = None,
|
||||
supported_languages: list[str] | None = None,
|
||||
default_currency: str = "USD",
|
||||
supported_currencies: Optional[List[str]] = None,
|
||||
supported_currencies: list[str] | None = None,
|
||||
default_timezone: str = "UTC",
|
||||
region_code: str = "global",
|
||||
data_residency: str = "regional",
|
||||
@@ -1397,7 +1397,7 @@ class LocalizationManager:
|
||||
finally:
|
||||
self._close_if_file_db(conn)
|
||||
|
||||
def update_localization_settings(self, tenant_id: str, **kwargs) -> Optional[LocalizationSettings]:
|
||||
def update_localization_settings(self, tenant_id: str, **kwargs) -> LocalizationSettings | None:
|
||||
conn = self._get_connection()
|
||||
try:
|
||||
settings = self.get_localization_settings(tenant_id)
|
||||
@@ -1441,8 +1441,8 @@ class LocalizationManager:
|
||||
self._close_if_file_db(conn)
|
||||
|
||||
def detect_user_preferences(
|
||||
self, accept_language: Optional[str] = None, ip_country: Optional[str] = None
|
||||
) -> Dict[str, str]:
|
||||
self, accept_language: str | None = None, ip_country: str | None = None
|
||||
) -> dict[str, str]:
|
||||
preferences = {"language": "en", "country": "US", "timezone": "UTC", "currency": "USD"}
|
||||
if accept_language:
|
||||
langs = accept_language.split(",")
|
||||
|
||||
Reference in New Issue
Block a user