cuenca-validations 2.1.38.dev1__tar.gz → 2.1.39__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/PKG-INFO +1 -1
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/__init__.py +4 -2
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/enums.py +2 -7
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/queries.py +4 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/requests.py +23 -5
- cuenca_validations-2.1.39/cuenca_validations/version.py +1 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations.egg-info/PKG-INFO +1 -1
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/tests/test_types.py +10 -60
- cuenca_validations-2.1.38.dev1/cuenca_validations/version.py +0 -1
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/LICENSE +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/README.md +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/__init__.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/card_bins.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/errors.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/py.typed +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/card.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/files.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/general.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/helpers.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/identities.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/morals.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/typing.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/validators.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations.egg-info/SOURCES.txt +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations.egg-info/dependency_links.txt +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations.egg-info/requires.txt +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations.egg-info/top_level.txt +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/setup.cfg +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/setup.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/tests/__init__.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/tests/test_card.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/tests/test_errors.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/tests/test_helpers.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/tests/test_requests.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/tests/test_statement.py +0 -0
- {cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/tests/test_validators.py +0 -0
{cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/__init__.py
RENAMED
|
@@ -2,6 +2,8 @@ __all__ = [
|
|
|
2
2
|
'AccountUseType',
|
|
3
3
|
'AccountQuery',
|
|
4
4
|
'Address',
|
|
5
|
+
'AgentQuery',
|
|
6
|
+
'AgentRequest',
|
|
5
7
|
'ApiKeyQuery',
|
|
6
8
|
'ApiKeyUpdateRequest',
|
|
7
9
|
'AuthorizerTransaction',
|
|
@@ -45,7 +47,6 @@ __all__ = [
|
|
|
45
47
|
'FileRequest',
|
|
46
48
|
'FileUploadRequest',
|
|
47
49
|
'FraudFundsTransferRequest',
|
|
48
|
-
'FraudFundsTransferTipoPago',
|
|
49
50
|
'Gender',
|
|
50
51
|
'IncomeType',
|
|
51
52
|
'IssuerNetwork',
|
|
@@ -146,7 +147,6 @@ from .enums import (
|
|
|
146
147
|
EventType,
|
|
147
148
|
FileExtension,
|
|
148
149
|
FileFormat,
|
|
149
|
-
FraudFundsTransferTipoPago,
|
|
150
150
|
Gender,
|
|
151
151
|
IncomeType,
|
|
152
152
|
IssuerNetwork,
|
|
@@ -202,6 +202,7 @@ from .identities import (
|
|
|
202
202
|
)
|
|
203
203
|
from .queries import (
|
|
204
204
|
AccountQuery,
|
|
205
|
+
AgentQuery,
|
|
205
206
|
ApiKeyQuery,
|
|
206
207
|
BalanceEntryQuery,
|
|
207
208
|
BankAccountValidationQuery,
|
|
@@ -225,6 +226,7 @@ from .queries import (
|
|
|
225
226
|
WalletTransactionQuery,
|
|
226
227
|
)
|
|
227
228
|
from .requests import (
|
|
229
|
+
AgentRequest,
|
|
228
230
|
ApiKeyUpdateRequest,
|
|
229
231
|
BankAccountValidationRequest,
|
|
230
232
|
BeneficiaryRequest,
|
{cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/enums.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from enum import Enum
|
|
1
|
+
from enum import Enum
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class CardNetwork(str, Enum):
|
|
@@ -589,6 +589,7 @@ class SessionType(str, Enum):
|
|
|
589
589
|
account_entries = 'session.account_entries'
|
|
590
590
|
download_file = 'session.download_file'
|
|
591
591
|
upload_file = 'session.upload_file'
|
|
592
|
+
agent = 'session.agent'
|
|
592
593
|
|
|
593
594
|
|
|
594
595
|
class WebhookObject(str, Enum):
|
|
@@ -743,9 +744,3 @@ class RequiredAction(str, Enum):
|
|
|
743
744
|
level_up_required = 'level_up_required'
|
|
744
745
|
level_up_invitation = 'level_up_invitation'
|
|
745
746
|
fix_documents = 'fix_documents'
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
class FraudFundsTransferTipoPago(IntEnum):
|
|
749
|
-
participante_participante = 7
|
|
750
|
-
devolucion_especial_ordenes_aceptadas_acreditadas = 23
|
|
751
|
-
devolucion_extemporanea_especial_ordenes_acreditadas = 24
|
{cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/requests.py
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import datetime as dt
|
|
2
2
|
from typing import Annotated, Any, Optional, Union
|
|
3
3
|
|
|
4
|
-
from clabe import Clabe
|
|
4
|
+
from clabe import BANK_NAMES, Clabe
|
|
5
5
|
from pydantic import (
|
|
6
6
|
BaseModel,
|
|
7
7
|
ConfigDict,
|
|
@@ -29,7 +29,6 @@ from ..types.enums import (
|
|
|
29
29
|
Country,
|
|
30
30
|
EcommerceIndicator,
|
|
31
31
|
FileExtension,
|
|
32
|
-
FraudFundsTransferTipoPago,
|
|
33
32
|
Gender,
|
|
34
33
|
IncomeType,
|
|
35
34
|
IssuerNetwork,
|
|
@@ -329,16 +328,20 @@ class FraudFundsTransferRequest(BaseRequest):
|
|
|
329
328
|
user_id: NonEmptyStr
|
|
330
329
|
clabe: Optional[Clabe] = None
|
|
331
330
|
bank_code: Optional[str] = None
|
|
332
|
-
tipo_pago: Optional[FraudFundsTransferTipoPago] = None
|
|
333
331
|
amount: Optional[StrictPositiveInt] = None
|
|
334
332
|
concepto: Optional[NonEmptyStr] = None
|
|
335
333
|
|
|
334
|
+
@field_validator('bank_code')
|
|
335
|
+
@classmethod
|
|
336
|
+
def validate_bank_code(cls, bank_code: Optional[str]) -> Optional[str]:
|
|
337
|
+
if bank_code is not None and bank_code not in BANK_NAMES:
|
|
338
|
+
raise ValueError('Not a valid bank code')
|
|
339
|
+
return bank_code
|
|
340
|
+
|
|
336
341
|
@model_validator(mode='after')
|
|
337
342
|
def validate_destination(self) -> 'FraudFundsTransferRequest':
|
|
338
343
|
if self.clabe is None and self.bank_code is None:
|
|
339
344
|
raise ValueError('clabe or bank_code required')
|
|
340
|
-
if self.bank_code is not None and self.tipo_pago is None:
|
|
341
|
-
raise ValueError('tipo_pago required when using bank_code')
|
|
342
345
|
return self
|
|
343
346
|
|
|
344
347
|
|
|
@@ -642,6 +645,21 @@ class SessionRequest(BaseRequest):
|
|
|
642
645
|
)
|
|
643
646
|
|
|
644
647
|
|
|
648
|
+
class AgentRequest(BaseRequest):
|
|
649
|
+
pairing_code: str
|
|
650
|
+
phone_number: PhoneNumber
|
|
651
|
+
device_info: DictStrAny = Field(default_factory=dict)
|
|
652
|
+
model_config = ConfigDict(
|
|
653
|
+
json_schema_extra={
|
|
654
|
+
'example': {
|
|
655
|
+
'pairing_code': 'secret_code',
|
|
656
|
+
'phone_number': '+525512345678',
|
|
657
|
+
'device_info': {'client': 'cursor', 'os': 'macOS'},
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
)
|
|
661
|
+
|
|
662
|
+
|
|
645
663
|
class EndpointRequest(BaseRequest):
|
|
646
664
|
url: SerializableHttpUrl
|
|
647
665
|
events: Optional[list[WebhookEvent]] = None
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '2.1.39'
|
|
@@ -675,69 +675,19 @@ def test_bank_account_validation_clabe_request():
|
|
|
675
675
|
assert BankAccountValidationRequest(account_number='646180157098510917')
|
|
676
676
|
|
|
677
677
|
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
user_id='US123',
|
|
684
|
-
clabe='646180157098510917',
|
|
685
|
-
amount=10000,
|
|
686
|
-
concepto=' Devolución fraude ',
|
|
687
|
-
),
|
|
688
|
-
dict(
|
|
689
|
-
user_id='US123',
|
|
690
|
-
clabe='646180157098510917',
|
|
691
|
-
amount=10000,
|
|
692
|
-
concepto='Devolución fraude',
|
|
693
|
-
),
|
|
694
|
-
),
|
|
695
|
-
(
|
|
696
|
-
dict(user_id='US123', clabe='646180157098510917'),
|
|
697
|
-
dict(user_id='US123', clabe='646180157098510917'),
|
|
698
|
-
),
|
|
699
|
-
*[
|
|
700
|
-
(
|
|
701
|
-
dict(
|
|
702
|
-
user_id='US123',
|
|
703
|
-
bank_code='40012',
|
|
704
|
-
tipo_pago=tipo_pago,
|
|
705
|
-
amount=5000,
|
|
706
|
-
),
|
|
707
|
-
dict(
|
|
708
|
-
user_id='US123',
|
|
709
|
-
bank_code='40012',
|
|
710
|
-
tipo_pago=tipo_pago,
|
|
711
|
-
amount=5000,
|
|
712
|
-
),
|
|
713
|
-
)
|
|
714
|
-
for tipo_pago in (7, 23, 24)
|
|
715
|
-
],
|
|
716
|
-
],
|
|
717
|
-
)
|
|
718
|
-
def test_fraud_funds_transfer_request(data, expected_dump):
|
|
719
|
-
request = FraudFundsTransferRequest(**data)
|
|
720
|
-
assert request.model_dump() == expected_dump
|
|
678
|
+
def test_fraud_funds_transfer_request():
|
|
679
|
+
assert FraudFundsTransferRequest(
|
|
680
|
+
user_id='US123',
|
|
681
|
+
bank_code='40012',
|
|
682
|
+
).model_dump() == {'user_id': 'US123', 'bank_code': '40012'}
|
|
721
683
|
|
|
684
|
+
with pytest.raises(ValidationError) as exc:
|
|
685
|
+
FraudFundsTransferRequest(user_id='US123')
|
|
686
|
+
assert 'clabe or bank_code required' in str(exc.value)
|
|
722
687
|
|
|
723
|
-
@pytest.mark.parametrize(
|
|
724
|
-
'data, expected_error',
|
|
725
|
-
[
|
|
726
|
-
(dict(user_id='US123'), 'clabe or bank_code required'),
|
|
727
|
-
(
|
|
728
|
-
dict(user_id='US123', bank_code='40012'),
|
|
729
|
-
'tipo_pago required when using bank_code',
|
|
730
|
-
),
|
|
731
|
-
(
|
|
732
|
-
dict(user_id='US123', bank_code='40012', tipo_pago=1),
|
|
733
|
-
'Input should be 7, 23 or 24',
|
|
734
|
-
),
|
|
735
|
-
],
|
|
736
|
-
)
|
|
737
|
-
def test_fraud_funds_transfer_request_invalid(data, expected_error):
|
|
738
688
|
with pytest.raises(ValidationError) as exc:
|
|
739
|
-
FraudFundsTransferRequest(
|
|
740
|
-
assert
|
|
689
|
+
FraudFundsTransferRequest(user_id='US123', bank_code='99999')
|
|
690
|
+
assert 'Not a valid bank code' in str(exc.value)
|
|
741
691
|
|
|
742
692
|
|
|
743
693
|
@pytest.mark.parametrize(
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '2.1.38.dev1'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/card_bins.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/card.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/files.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/general.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/helpers.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/identities.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/types/morals.py
RENAMED
|
File without changes
|
|
File without changes
|
{cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations/validators.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.38.dev1 → cuenca_validations-2.1.39}/cuenca_validations.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|