cuenca-validations 2.1.7.dev6__tar.gz → 2.1.8__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.7.dev6 → cuenca_validations-2.1.8}/PKG-INFO +1 -1
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/__init__.py +2 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/enums.py +13 -13
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/identities.py +34 -8
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/morals.py +3 -2
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/queries.py +13 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/requests.py +6 -6
- cuenca_validations-2.1.8/cuenca_validations/version.py +1 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations.egg-info/PKG-INFO +1 -1
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/tests/test_types.py +3 -16
- cuenca_validations-2.1.7.dev6/cuenca_validations/version.py +0 -1
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/LICENSE +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/README.md +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/__init__.py +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/card_bins.py +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/errors.py +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/py.typed +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/card.py +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/files.py +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/general.py +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/helpers.py +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/typing.py +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/validators.py +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations.egg-info/SOURCES.txt +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations.egg-info/dependency_links.txt +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations.egg-info/requires.txt +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations.egg-info/top_level.txt +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/setup.cfg +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/setup.py +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/tests/__init__.py +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/tests/test_card.py +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/tests/test_errors.py +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/tests/test_helpers.py +0 -0
- {cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/tests/test_statement.py +0 -0
{cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/__init__.py
RENAMED
|
@@ -7,6 +7,7 @@ __all__ = [
|
|
|
7
7
|
'BalanceEntryQuery',
|
|
8
8
|
'BankAccountValidationQuery',
|
|
9
9
|
'BankAccountValidationRequest',
|
|
10
|
+
'PostalCodeQuery',
|
|
10
11
|
'BankAccountStatus',
|
|
11
12
|
'BatchFileMetadata',
|
|
12
13
|
'Beneficiary',
|
|
@@ -185,6 +186,7 @@ from .queries import (
|
|
|
185
186
|
EventQuery,
|
|
186
187
|
FileQuery,
|
|
187
188
|
IdentityQuery,
|
|
189
|
+
PostalCodeQuery,
|
|
188
190
|
QueryParams,
|
|
189
191
|
SessionQuery,
|
|
190
192
|
StatementQuery,
|
{cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/enums.py
RENAMED
|
@@ -691,16 +691,16 @@ class SATRegimeCode(str, Enum):
|
|
|
691
691
|
|
|
692
692
|
|
|
693
693
|
class Profession(str, Enum):
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
694
|
+
artisticas = 'Actividades Artísticas'
|
|
695
|
+
agropecuario = 'Agricultura, Ganadería o Pesca'
|
|
696
|
+
comercio = 'Comercio'
|
|
697
|
+
estudiante = 'Estudiante'
|
|
698
|
+
empleado = 'Empleado(a/e)'
|
|
699
|
+
emprendimiento = 'Emprendimiento'
|
|
700
|
+
hogar = 'Hogar'
|
|
701
|
+
profesor = 'Profesor(a/e)'
|
|
702
|
+
profesionista = 'Profesionista'
|
|
703
|
+
servidor_publico = 'Servidor(a/e) Público'
|
|
704
|
+
sistemas = 'Sistemas y Comunicaciones'
|
|
705
|
+
independiente = 'Trabajador(a/e) Independiente'
|
|
706
|
+
oficios = 'Oficios Varios'
|
{cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/identities.py
RENAMED
|
@@ -36,17 +36,24 @@ Rfc = Annotated[
|
|
|
36
36
|
),
|
|
37
37
|
]
|
|
38
38
|
|
|
39
|
+
# NOTE:
|
|
40
|
+
# The Address model is kept for compatibility with legacy models and data
|
|
41
|
+
# that expect all address fields to be optional. This allows older systems
|
|
42
|
+
# or stored data using Address to continue working without breaking changes.
|
|
43
|
+
# For new request validation, use AddressRequest, which enforces required
|
|
44
|
+
# fields and is intended for validating incoming data.
|
|
45
|
+
|
|
39
46
|
|
|
40
47
|
class Address(BaseModel):
|
|
41
|
-
street:
|
|
42
|
-
ext_number:
|
|
43
|
-
int_number: Optional[
|
|
44
|
-
colonia:
|
|
45
|
-
postal_code:
|
|
48
|
+
street: Optional[str] = None
|
|
49
|
+
ext_number: Optional[str] = None
|
|
50
|
+
int_number: Optional[str] = None
|
|
51
|
+
colonia: Optional[str] = None
|
|
52
|
+
postal_code: Optional[str] = None
|
|
46
53
|
state: Optional[State] = None
|
|
47
|
-
country: Country
|
|
48
|
-
city:
|
|
49
|
-
|
|
54
|
+
country: Optional[Country] = None
|
|
55
|
+
city: Optional[str] = None
|
|
56
|
+
full_name: Optional[str] = None
|
|
50
57
|
model_config = ConfigDict(
|
|
51
58
|
json_schema_extra={
|
|
52
59
|
"example": {
|
|
@@ -63,6 +70,25 @@ class Address(BaseModel):
|
|
|
63
70
|
)
|
|
64
71
|
|
|
65
72
|
|
|
73
|
+
class AddressRequest(BaseModel):
|
|
74
|
+
# This model is mainly for request validation, enforcing required fields.
|
|
75
|
+
street: NonEmptyStr
|
|
76
|
+
ext_number: NonEmptyStr
|
|
77
|
+
int_number: Optional[NonEmptyStr] = None
|
|
78
|
+
postal_code_id: NonEmptyStr
|
|
79
|
+
|
|
80
|
+
model_config = ConfigDict(
|
|
81
|
+
json_schema_extra={
|
|
82
|
+
"example": {
|
|
83
|
+
"street": "Reforma",
|
|
84
|
+
"ext_number": "265",
|
|
85
|
+
"int_number": "5",
|
|
86
|
+
"postal_code_id": "PC2ygq9j2bS9-9tsuVawzErA",
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
|
|
66
92
|
class Beneficiary(BaseModel):
|
|
67
93
|
name: str
|
|
68
94
|
birth_date: dt.date
|
{cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/morals.py
RENAMED
|
@@ -3,7 +3,8 @@ from typing import Optional
|
|
|
3
3
|
|
|
4
4
|
from pydantic import BaseModel, EmailStr
|
|
5
5
|
|
|
6
|
-
from
|
|
6
|
+
from ..types import Curp, PhoneNumber, Rfc
|
|
7
|
+
from .identities import AddressRequest
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
class BusinessDetails(BaseModel):
|
|
@@ -60,7 +61,7 @@ class LegalRepresentative(PhysicalPerson):
|
|
|
60
61
|
job: str
|
|
61
62
|
phone_number: PhoneNumber
|
|
62
63
|
email_address: EmailStr
|
|
63
|
-
address:
|
|
64
|
+
address: AddressRequest
|
|
64
65
|
|
|
65
66
|
|
|
66
67
|
class ShareholderPhysical(PhysicalPerson):
|
{cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/queries.py
RENAMED
|
@@ -7,6 +7,7 @@ from pydantic import (
|
|
|
7
7
|
EmailStr,
|
|
8
8
|
Field,
|
|
9
9
|
PositiveInt,
|
|
10
|
+
StringConstraints,
|
|
10
11
|
field_validator,
|
|
11
12
|
)
|
|
12
13
|
|
|
@@ -179,3 +180,15 @@ class FileQuery(QueryParams):
|
|
|
179
180
|
class BankAccountValidationQuery(QueryParams):
|
|
180
181
|
account_number: Optional[str] = None
|
|
181
182
|
status: Optional[BankAccountStatus] = None
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
class PostalCodeQuery(QueryParams):
|
|
186
|
+
postal_code: Annotated[
|
|
187
|
+
str,
|
|
188
|
+
StringConstraints(
|
|
189
|
+
strip_whitespace=True,
|
|
190
|
+
min_length=5,
|
|
191
|
+
max_length=5,
|
|
192
|
+
pattern=r'^\d+$',
|
|
193
|
+
),
|
|
194
|
+
]
|
{cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/requests.py
RENAMED
|
@@ -64,7 +64,7 @@ from .general import (
|
|
|
64
64
|
StrictPositiveInt,
|
|
65
65
|
)
|
|
66
66
|
from .identities import (
|
|
67
|
-
|
|
67
|
+
AddressRequest,
|
|
68
68
|
Beneficiary,
|
|
69
69
|
Curp,
|
|
70
70
|
KYCFile,
|
|
@@ -416,7 +416,7 @@ class UserRequest(BaseModel):
|
|
|
416
416
|
)
|
|
417
417
|
|
|
418
418
|
profession: Profession = Field(description='User profession or occupation')
|
|
419
|
-
address:
|
|
419
|
+
address: AddressRequest = Field(
|
|
420
420
|
description='User residential address information'
|
|
421
421
|
)
|
|
422
422
|
phone_verification_id: str = Field(
|
|
@@ -435,7 +435,7 @@ class UserRequest(BaseModel):
|
|
|
435
435
|
'phone_number': '+525511223344',
|
|
436
436
|
'email_address': 'user@example.com',
|
|
437
437
|
'profession': 'engineer',
|
|
438
|
-
'address':
|
|
438
|
+
'address': AddressRequest.model_json_schema().get('example'),
|
|
439
439
|
}
|
|
440
440
|
},
|
|
441
441
|
)
|
|
@@ -464,7 +464,7 @@ class UserUpdateRequest(BaseModel):
|
|
|
464
464
|
verification_id: Optional[str] = None
|
|
465
465
|
email_verification_id: Optional[str] = None
|
|
466
466
|
phone_verification_id: Optional[str] = None
|
|
467
|
-
address: Optional[
|
|
467
|
+
address: Optional[AddressRequest] = None
|
|
468
468
|
beneficiaries: Optional[list[Beneficiary]] = None
|
|
469
469
|
govt_id: Optional[KYCFile] = None
|
|
470
470
|
proof_of_address: Optional[KYCFile] = None
|
|
@@ -685,7 +685,7 @@ class PartnerRequest(BaseRequest):
|
|
|
685
685
|
web_site: str
|
|
686
686
|
phone_number: PhoneNumber
|
|
687
687
|
email_address: EmailStr
|
|
688
|
-
address:
|
|
688
|
+
address: AddressRequest
|
|
689
689
|
|
|
690
690
|
|
|
691
691
|
class PartnerUpdateRequest(BaseRequest):
|
|
@@ -699,7 +699,7 @@ class PartnerUpdateRequest(BaseRequest):
|
|
|
699
699
|
web_site: Optional[str] = None
|
|
700
700
|
phone_number: Optional[PhoneNumber] = None
|
|
701
701
|
email_address: Optional[EmailStr] = None
|
|
702
|
-
address: Optional[
|
|
702
|
+
address: Optional[AddressRequest] = None
|
|
703
703
|
business_details: Optional[BusinessDetails] = None
|
|
704
704
|
transactional_profile: Optional[TransactionalProfile] = None
|
|
705
705
|
external_account: Optional[Clabe] = None
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '2.1.8'
|
|
@@ -20,7 +20,6 @@ from cuenca_validations.types import (
|
|
|
20
20
|
get_state_name,
|
|
21
21
|
)
|
|
22
22
|
from cuenca_validations.types.enums import (
|
|
23
|
-
Country,
|
|
24
23
|
EcommerceIndicator,
|
|
25
24
|
Profession,
|
|
26
25
|
SessionType,
|
|
@@ -307,23 +306,15 @@ def test_saving_update_request():
|
|
|
307
306
|
def test_user_request():
|
|
308
307
|
request = dict(
|
|
309
308
|
curp='ABCD920604HDFSRN03',
|
|
310
|
-
profession=Profession.
|
|
309
|
+
profession=Profession.empleado,
|
|
311
310
|
address=dict(
|
|
312
311
|
street='calle 1',
|
|
313
312
|
ext_number='2',
|
|
314
313
|
int_number='3',
|
|
315
|
-
|
|
316
|
-
postal_code='09900',
|
|
317
|
-
state=State.DF,
|
|
318
|
-
country=Country.MX,
|
|
319
|
-
city='Obrera',
|
|
314
|
+
postal_code_id='PC2ygq9j2bS9-9tsuVawzErA',
|
|
320
315
|
),
|
|
321
316
|
phone_verification_id='VE12345678',
|
|
322
317
|
email_verification_id='VE0987654321',
|
|
323
|
-
tos_agreement=dict(
|
|
324
|
-
tos_id='TOS123',
|
|
325
|
-
location=dict(latitude=19.4326, longitude=-99.1332),
|
|
326
|
-
),
|
|
327
318
|
)
|
|
328
319
|
assert UserRequest(**request).model_dump() == request
|
|
329
320
|
|
|
@@ -337,11 +328,7 @@ def test_user_request_underage():
|
|
|
337
328
|
street='calle 1',
|
|
338
329
|
ext_number='2',
|
|
339
330
|
int_number='3',
|
|
340
|
-
|
|
341
|
-
postal_code='09900',
|
|
342
|
-
state=State.DF,
|
|
343
|
-
country=Country.MX,
|
|
344
|
-
city='Obrera',
|
|
331
|
+
postal_code_id='PC2ygq9j2bS9-9tsuVawzErA',
|
|
345
332
|
),
|
|
346
333
|
phone_verification_id='VE12345678',
|
|
347
334
|
email_verification_id='VE0987654321',
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '2.1.7.dev6'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/files.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/general.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations/types/helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations.egg-info/requires.txt
RENAMED
|
File without changes
|
{cuenca_validations-2.1.7.dev6 → cuenca_validations-2.1.8}/cuenca_validations.egg-info/top_level.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
|