From 17732a03702ee46da483153848ce392a65837483 Mon Sep 17 00:00:00 2001 From: Fringg Date: Mon, 4 May 2026 20:47:48 +0300 Subject: [PATCH] style: apply ruff format to payment integrations CI ruff format --check failed on 13 files. Applied ruff format to bring them in line with project formatting (line wrapping, trailing commas, quote consistency). No functional changes. --- app/config.py | 12 ++---------- app/database/crud/antilopay.py | 4 +--- app/database/crud/donut.py | 8 ++------ app/database/crud/jupiter.py | 4 +--- app/database/crud/lava.py | 4 +--- app/database/models.py | 4 +++- app/keyboards/inline.py | 6 +----- app/services/aurapay_service.py | 4 +--- app/services/payment/antilopay.py | 4 +--- app/services/payment/donut.py | 10 ++-------- app/services/payment/jupiter.py | 8 ++------ app/services/payment/lava.py | 8 ++------ tests/external/test_apple_iap.py | 20 ++++++++++---------- 13 files changed, 29 insertions(+), 67 deletions(-) diff --git a/app/config.py b/app/config.py index e7682ad6..8b6d28d7 100644 --- a/app/config.py +++ b/app/config.py @@ -2295,11 +2295,7 @@ class Settings(BaseSettings): return html.escape(self.get_antilopay_sberpay_display_name()) def is_jupiter_enabled(self) -> bool: - return ( - self.JUPITER_ENABLED - and self.JUPITER_TOKEN is not None - and self.JUPITER_SECRET is not None - ) + return self.JUPITER_ENABLED and self.JUPITER_TOKEN is not None and self.JUPITER_SECRET is not None def get_jupiter_display_name(self) -> str: name = (self.JUPITER_DISPLAY_NAME or '').strip() @@ -2319,11 +2315,7 @@ class Settings(BaseSettings): return html.escape(self.get_jupiter_sbp_display_name()) def is_donut_enabled(self) -> bool: - return ( - self.DONUT_ENABLED - and self.DONUT_TOKEN is not None - and self.DONUT_SECRET is not None - ) + return self.DONUT_ENABLED and self.DONUT_TOKEN is not None and self.DONUT_SECRET is not None def get_donut_display_name(self) -> str: name = (self.DONUT_DISPLAY_NAME or '').strip() diff --git a/app/database/crud/antilopay.py b/app/database/crud/antilopay.py index 37e6e689..535dec87 100644 --- a/app/database/crud/antilopay.py +++ b/app/database/crud/antilopay.py @@ -54,9 +54,7 @@ async def get_antilopay_payment_by_order_id(db: AsyncSession, order_id: str) -> return result.scalar_one_or_none() -async def get_antilopay_payment_by_invoice_id( - db: AsyncSession, antilopay_payment_id: str -) -> AntilopayPayment | None: +async def get_antilopay_payment_by_invoice_id(db: AsyncSession, antilopay_payment_id: str) -> AntilopayPayment | None: """Получает платеж по ID от Antilopay.""" result = await db.execute( select(AntilopayPayment).where(AntilopayPayment.antilopay_payment_id == antilopay_payment_id) diff --git a/app/database/crud/donut.py b/app/database/crud/donut.py index 0d75b313..97073140 100644 --- a/app/database/crud/donut.py +++ b/app/database/crud/donut.py @@ -54,13 +54,9 @@ async def get_donut_payment_by_order_id(db: AsyncSession, order_id: str) -> Donu return result.scalar_one_or_none() -async def get_donut_payment_by_invoice_id( - db: AsyncSession, donut_transaction_id: str -) -> DonutPayment | None: +async def get_donut_payment_by_invoice_id(db: AsyncSession, donut_transaction_id: str) -> DonutPayment | None: """Получает платёж по transaction_id, выданному Donut.""" - result = await db.execute( - select(DonutPayment).where(DonutPayment.donut_transaction_id == donut_transaction_id) - ) + result = await db.execute(select(DonutPayment).where(DonutPayment.donut_transaction_id == donut_transaction_id)) return result.scalar_one_or_none() diff --git a/app/database/crud/jupiter.py b/app/database/crud/jupiter.py index 674cef53..d6f683e2 100644 --- a/app/database/crud/jupiter.py +++ b/app/database/crud/jupiter.py @@ -54,9 +54,7 @@ async def get_jupiter_payment_by_order_id(db: AsyncSession, order_id: str) -> Ju return result.scalar_one_or_none() -async def get_jupiter_payment_by_invoice_id( - db: AsyncSession, jupiter_transaction_id: str -) -> JupiterPayment | None: +async def get_jupiter_payment_by_invoice_id(db: AsyncSession, jupiter_transaction_id: str) -> JupiterPayment | None: """Получает платёж по transaction_id, выданному Jupiter.""" result = await db.execute( select(JupiterPayment).where(JupiterPayment.jupiter_transaction_id == jupiter_transaction_id) diff --git a/app/database/crud/lava.py b/app/database/crud/lava.py index 9f4bc981..189490da 100644 --- a/app/database/crud/lava.py +++ b/app/database/crud/lava.py @@ -56,9 +56,7 @@ async def get_lava_payment_by_order_id(db: AsyncSession, order_id: str) -> LavaP async def get_lava_payment_by_invoice_id(db: AsyncSession, lava_invoice_id: str) -> LavaPayment | None: """Получает платёж по invoice_id, выданному Lava.""" - result = await db.execute( - select(LavaPayment).where(LavaPayment.lava_invoice_id == lava_invoice_id) - ) + result = await db.execute(select(LavaPayment).where(LavaPayment.lava_invoice_id == lava_invoice_id)) return result.scalar_one_or_none() diff --git a/app/database/models.py b/app/database/models.py index acdabacd..f40d5cae 100644 --- a/app/database/models.py +++ b/app/database/models.py @@ -1478,7 +1478,9 @@ class LavaPayment(Base): return self.status in ['failed', 'expired', 'cancel', 'cancelled', 'amount_mismatch', 'error'] def __repr__(self) -> str: # pragma: no cover - debug helper - return f'' + return ( + f'' + ) class PromoGroup(Base): diff --git a/app/keyboards/inline.py b/app/keyboards/inline.py index 03935675..337453a3 100644 --- a/app/keyboards/inline.py +++ b/app/keyboards/inline.py @@ -2084,11 +2084,7 @@ def get_payment_methods_keyboard(amount_kopeks: int, language: str = DEFAULT_LAN ) has_direct_payment_methods = True - if ( - settings.is_lava_enabled() - and not settings.is_lava_card_enabled() - and not settings.is_lava_sbp_enabled() - ): + if settings.is_lava_enabled() and not settings.is_lava_card_enabled() and not settings.is_lava_sbp_enabled(): lava_name = settings.get_lava_display_name() keyboard.append( [ diff --git a/app/services/aurapay_service.py b/app/services/aurapay_service.py index 372c887c..b62767b3 100644 --- a/app/services/aurapay_service.py +++ b/app/services/aurapay_service.py @@ -199,9 +199,7 @@ class AuraPayService: # Сортируем ключи по алфавиту и конкатенируем значения # None → '' (PHP implode() converts null to empty string, not "None") sorted_keys = sorted(payload.keys()) - concatenated_values = ''.join( - str(payload[key]) if payload[key] is not None else '' for key in sorted_keys - ) + concatenated_values = ''.join(str(payload[key]) if payload[key] is not None else '' for key in sorted_keys) expected = hmac.new( self.secret_key.encode('utf-8'), diff --git a/app/services/payment/antilopay.py b/app/services/payment/antilopay.py index a76385b4..bd7bef63 100644 --- a/app/services/payment/antilopay.py +++ b/app/services/payment/antilopay.py @@ -398,9 +398,7 @@ class AntilopayPaymentMixin: ) created_transaction = True - await antilopay_crud.link_antilopay_payment_to_transaction( - db, payment=payment, transaction_id=transaction.id - ) + await antilopay_crud.link_antilopay_payment_to_transaction(db, payment=payment, transaction_id=transaction.id) should_credit_balance = created_transaction or not balance_already_credited diff --git a/app/services/payment/donut.py b/app/services/payment/donut.py index e3a11b11..5a0671a0 100644 --- a/app/services/payment/donut.py +++ b/app/services/payment/donut.py @@ -115,11 +115,7 @@ class DonutPaymentMixin: transaction_id = api_result.get('transaction_id') details = api_result.get('details') or {} - payment_url = ( - api_result.get('redirect_url') - or details.get('qrcode_url') - or actual_return_url - ) + payment_url = api_result.get('redirect_url') or details.get('qrcode_url') or actual_return_url logger.info( 'Donut: получен ответ API', @@ -374,9 +370,7 @@ class DonutPaymentMixin: ) created_transaction = True - await donut_crud.link_donut_payment_to_transaction( - db, payment=payment, transaction_id=transaction.id - ) + await donut_crud.link_donut_payment_to_transaction(db, payment=payment, transaction_id=transaction.id) should_credit_balance = created_transaction or not balance_already_credited diff --git a/app/services/payment/jupiter.py b/app/services/payment/jupiter.py index a29311f3..19fcead7 100644 --- a/app/services/payment/jupiter.py +++ b/app/services/payment/jupiter.py @@ -94,9 +94,7 @@ class JupiterPaymentMixin: callback_url = self._build_jupiter_callback_url() customer_id = str(tg_id) if tg_id != 'guest' else f'guest-{order_id[-6:]}' customer_name = ( - getattr(user, 'first_name', None) - or getattr(user, 'username', None) - or settings.JUPITER_FALLBACK_NAME + getattr(user, 'first_name', None) or getattr(user, 'username', None) or settings.JUPITER_FALLBACK_NAME ) api_result = await jupiter_service.create_payment( @@ -366,9 +364,7 @@ class JupiterPaymentMixin: ) created_transaction = True - await jupiter_crud.link_jupiter_payment_to_transaction( - db, payment=payment, transaction_id=transaction.id - ) + await jupiter_crud.link_jupiter_payment_to_transaction(db, payment=payment, transaction_id=transaction.id) should_credit_balance = created_transaction or not balance_already_credited diff --git a/app/services/payment/lava.py b/app/services/payment/lava.py index 796b048c..da05a5fb 100644 --- a/app/services/payment/lava.py +++ b/app/services/payment/lava.py @@ -146,9 +146,7 @@ class LavaPaymentMixin: ) lifetime = settings.LAVA_PAYMENT_LIFETIME_MINUTES - expires_at = self._parse_lava_expired(expired_str) or ( - datetime.now(UTC) + timedelta(minutes=lifetime) - ) + expires_at = self._parse_lava_expired(expired_str) or (datetime.now(UTC) + timedelta(minutes=lifetime)) lava_crud = import_module('app.database.crud.lava') local_payment = await lava_crud.create_lava_payment( @@ -456,9 +454,7 @@ class LavaPaymentMixin: ) created_transaction = True - await lava_crud.link_lava_payment_to_transaction( - db, payment=payment, transaction_id=transaction.id - ) + await lava_crud.link_lava_payment_to_transaction(db, payment=payment, transaction_id=transaction.id) should_credit_balance = created_transaction or not balance_already_credited diff --git a/tests/external/test_apple_iap.py b/tests/external/test_apple_iap.py index 83610c1d..376a9798 100644 --- a/tests/external/test_apple_iap.py +++ b/tests/external/test_apple_iap.py @@ -35,13 +35,15 @@ def _enable_apple_iap(monkeypatch: pytest.MonkeyPatch) -> None: monkeypatch.setattr( settings, 'APPLE_IAP_PRODUCTS', - json.dumps({ - 'com.bitnet.vpnclient.topup.100': 10_000, - 'com.bitnet.vpnclient.topup.300': 30_000, - 'com.bitnet.vpnclient.topup.500': 50_000, - 'com.bitnet.vpnclient.topup.1000': 100_000, - 'com.bitnet.vpnclient.topup.3000': 300_000, - }), + json.dumps( + { + 'com.bitnet.vpnclient.topup.100': 10_000, + 'com.bitnet.vpnclient.topup.300': 30_000, + 'com.bitnet.vpnclient.topup.500': 50_000, + 'com.bitnet.vpnclient.topup.1000': 100_000, + 'com.bitnet.vpnclient.topup.3000': 300_000, + } + ), raising=False, ) @@ -297,9 +299,7 @@ class TestVerifyAndDecodeJWS: def test_rejects_empty_x5c(self) -> None: service = AppleIAPService() - header = ( - base64.urlsafe_b64encode(json.dumps({'alg': 'ES256', 'x5c': []}).encode()).rstrip(b'=').decode() - ) + header = base64.urlsafe_b64encode(json.dumps({'alg': 'ES256', 'x5c': []}).encode()).rstrip(b'=').decode() payload = base64.urlsafe_b64encode(b'{}').rstrip(b'=').decode() sig = base64.urlsafe_b64encode(b'sig').rstrip(b'=').decode() assert service._verify_and_decode_jws(f'{header}.{payload}.{sig}') is None