cuenca-validations 2.1.7.dev0__tar.gz → 2.1.7.dev1__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.dev0 → cuenca_validations-2.1.7.dev1}/PKG-INFO +1 -1
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/identities.py +10 -21
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/requests.py +8 -13
- cuenca_validations-2.1.7.dev1/cuenca_validations/version.py +1 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations.egg-info/PKG-INFO +1 -1
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/tests/test_types.py +23 -33
- cuenca_validations-2.1.7.dev0/cuenca_validations/version.py +0 -1
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/LICENSE +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/README.md +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/__init__.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/card_bins.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/errors.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/py.typed +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/__init__.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/card.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/enums.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/files.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/general.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/helpers.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/morals.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/queries.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/typing.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/validators.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations.egg-info/SOURCES.txt +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations.egg-info/dependency_links.txt +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations.egg-info/requires.txt +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations.egg-info/top_level.txt +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/setup.cfg +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/setup.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/tests/__init__.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/tests/test_card.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/tests/test_errors.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/tests/test_helpers.py +0 -0
- {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/tests/test_statement.py +0 -0
|
@@ -12,7 +12,7 @@ from pydantic import (
|
|
|
12
12
|
from pydantic_extra_types.phone_numbers import PhoneNumber
|
|
13
13
|
|
|
14
14
|
from .enums import Country, KYCFileType, State, VerificationStatus
|
|
15
|
-
from .general import SerializableIPvAnyAddress
|
|
15
|
+
from .general import NonEmptyStr, SerializableIPvAnyAddress
|
|
16
16
|
|
|
17
17
|
Password = Annotated[
|
|
18
18
|
SecretStr,
|
|
@@ -45,15 +45,15 @@ Rfc = Annotated[
|
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
class Address(BaseModel):
|
|
48
|
-
street:
|
|
49
|
-
ext_number:
|
|
50
|
-
int_number: Optional[
|
|
51
|
-
colonia:
|
|
52
|
-
postal_code:
|
|
48
|
+
street: NonEmptyStr
|
|
49
|
+
ext_number: NonEmptyStr
|
|
50
|
+
int_number: Optional[NonEmptyStr] = None
|
|
51
|
+
colonia: NonEmptyStr
|
|
52
|
+
postal_code: NonEmptyStr
|
|
53
53
|
state: Optional[State] = None
|
|
54
|
-
country:
|
|
55
|
-
city:
|
|
56
|
-
|
|
54
|
+
country: Country
|
|
55
|
+
city: NonEmptyStr
|
|
56
|
+
|
|
57
57
|
model_config = ConfigDict(
|
|
58
58
|
json_schema_extra={
|
|
59
59
|
"example": {
|
|
@@ -69,24 +69,13 @@ class Address(BaseModel):
|
|
|
69
69
|
}
|
|
70
70
|
)
|
|
71
71
|
|
|
72
|
-
@model_validator(mode='before')
|
|
73
|
-
@classmethod
|
|
74
|
-
def full_name_complete(cls, values: dict[str, Any]) -> dict[str, Any]:
|
|
75
|
-
if values.get('full_name'):
|
|
76
|
-
return values
|
|
77
|
-
if not values.get('street'):
|
|
78
|
-
raise ValueError('required street')
|
|
79
|
-
if not values.get('ext_number'):
|
|
80
|
-
raise ValueError('required ext_number')
|
|
81
|
-
return values
|
|
82
|
-
|
|
83
72
|
|
|
84
73
|
class Beneficiary(BaseModel):
|
|
85
74
|
name: str
|
|
86
75
|
birth_date: dt.date
|
|
87
76
|
phone_number: PhoneNumber
|
|
88
77
|
user_relationship: str
|
|
89
|
-
percentage: int
|
|
78
|
+
percentage: Annotated[int, Field(ge=1, le=100)]
|
|
90
79
|
model_config = ConfigDict(
|
|
91
80
|
json_schema_extra={
|
|
92
81
|
"example": {
|
{cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/requests.py
RENAMED
|
@@ -410,21 +410,16 @@ class UserTOSAgreementRequest(BaseModel):
|
|
|
410
410
|
|
|
411
411
|
|
|
412
412
|
class UserRequest(BaseModel):
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
# )
|
|
416
|
-
curp_verification_id: str = Field(
|
|
417
|
-
...,
|
|
418
|
-
description='Previously validated in `curp_validations`',
|
|
413
|
+
curp: Curp = Field(
|
|
414
|
+
description='Previously validated in `curp_validations`'
|
|
419
415
|
)
|
|
420
|
-
#
|
|
421
|
-
# ...,
|
|
422
|
-
#
|
|
423
|
-
# email_address: EmailStr = Field(
|
|
424
|
-
# ..., description='Only if you validated previously on your side'
|
|
416
|
+
# curp_verification_id: str = Field(
|
|
417
|
+
# ...,
|
|
418
|
+
# description='Previously validated in `curp_validations`',
|
|
425
419
|
# )
|
|
426
|
-
|
|
427
|
-
|
|
420
|
+
|
|
421
|
+
profession: str = None
|
|
422
|
+
address: Address = None
|
|
428
423
|
# status: Optional[UserStatus] = Field(
|
|
429
424
|
# None,
|
|
430
425
|
# description='Status that the user will have when created. '
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '2.1.7.dev1'
|
|
@@ -303,60 +303,50 @@ def test_saving_update_request():
|
|
|
303
303
|
SavingUpdateRequest(**data)
|
|
304
304
|
|
|
305
305
|
|
|
306
|
-
def test_address_validation():
|
|
307
|
-
data = dict(
|
|
308
|
-
full_name='Varsovia 36, Col Cuahutemoc',
|
|
309
|
-
)
|
|
310
|
-
assert Address(**data)
|
|
311
|
-
with pytest.raises(ValueError) as v:
|
|
312
|
-
Address(**dict())
|
|
313
|
-
assert 'required street' in str(v)
|
|
314
|
-
data = dict(street='somestreet')
|
|
315
|
-
with pytest.raises(ValueError) as v:
|
|
316
|
-
Address(**data)
|
|
317
|
-
assert 'required ext_number' in str(v)
|
|
318
|
-
data = dict(
|
|
319
|
-
street='varsovia',
|
|
320
|
-
ext_number='36',
|
|
321
|
-
state=State.DF,
|
|
322
|
-
country=Country.MX,
|
|
323
|
-
)
|
|
324
|
-
assert Address(**data)
|
|
325
|
-
|
|
326
|
-
|
|
327
306
|
@freeze_time('2022-01-01')
|
|
328
307
|
def test_user_request():
|
|
329
308
|
request = dict(
|
|
330
|
-
id=None,
|
|
331
309
|
curp='ABCD920604HDFSRN03',
|
|
332
|
-
phone_number='+525555555555',
|
|
333
|
-
email_address='email@email.com',
|
|
334
310
|
profession='worker',
|
|
335
|
-
status='active',
|
|
336
311
|
address=dict(
|
|
337
312
|
street='calle 1',
|
|
338
313
|
ext_number='2',
|
|
339
314
|
int_number='3',
|
|
340
315
|
colonia='Juarez',
|
|
341
316
|
postal_code='09900',
|
|
342
|
-
state=State.DF
|
|
317
|
+
state=State.DF,
|
|
343
318
|
country=Country.MX,
|
|
344
319
|
city='Obrera',
|
|
345
|
-
full_name=None,
|
|
346
320
|
),
|
|
347
321
|
phone_verification_id='VE12345678',
|
|
348
322
|
email_verification_id='VE0987654321',
|
|
349
|
-
required_level=3,
|
|
350
|
-
terms_of_service=None,
|
|
351
|
-
signature=None,
|
|
352
323
|
)
|
|
353
324
|
assert UserRequest(**request).model_dump() == request
|
|
354
325
|
|
|
355
|
-
|
|
356
|
-
|
|
326
|
+
|
|
327
|
+
@freeze_time('2022-01-01')
|
|
328
|
+
def test_user_request_underage():
|
|
329
|
+
request = dict(
|
|
330
|
+
curp='ABCD060604HDFSRN03', # underage CURP
|
|
331
|
+
profession='worker',
|
|
332
|
+
address=dict(
|
|
333
|
+
street='calle 1',
|
|
334
|
+
ext_number='2',
|
|
335
|
+
int_number='3',
|
|
336
|
+
colonia='Juarez',
|
|
337
|
+
postal_code='09900',
|
|
338
|
+
state=State.DF,
|
|
339
|
+
country=Country.MX,
|
|
340
|
+
city='Obrera',
|
|
341
|
+
),
|
|
342
|
+
phone_verification_id='VE12345678',
|
|
343
|
+
email_verification_id='VE0987654321',
|
|
344
|
+
)
|
|
345
|
+
|
|
357
346
|
with pytest.raises(ValueError) as v:
|
|
358
347
|
UserRequest(**request)
|
|
359
|
-
|
|
348
|
+
|
|
349
|
+
assert 'User does not meet age requirement.' in str(v)
|
|
360
350
|
|
|
361
351
|
|
|
362
352
|
@freeze_time('2022-01-01')
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '2.1.7.dev0'
|
|
File without changes
|
|
File without changes
|
{cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/__init__.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/card_bins.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/errors.py
RENAMED
|
File without changes
|
|
File without changes
|
{cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/__init__.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/card.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/enums.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/files.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/general.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/helpers.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/morals.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/queries.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/typing.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/validators.py
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
|