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.
Files changed (34) hide show
  1. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/PKG-INFO +1 -1
  2. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/identities.py +10 -21
  3. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/requests.py +8 -13
  4. cuenca_validations-2.1.7.dev1/cuenca_validations/version.py +1 -0
  5. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations.egg-info/PKG-INFO +1 -1
  6. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/tests/test_types.py +23 -33
  7. cuenca_validations-2.1.7.dev0/cuenca_validations/version.py +0 -1
  8. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/LICENSE +0 -0
  9. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/README.md +0 -0
  10. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/__init__.py +0 -0
  11. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/card_bins.py +0 -0
  12. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/errors.py +0 -0
  13. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/py.typed +0 -0
  14. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/__init__.py +0 -0
  15. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/card.py +0 -0
  16. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/enums.py +0 -0
  17. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/files.py +0 -0
  18. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/general.py +0 -0
  19. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/helpers.py +0 -0
  20. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/morals.py +0 -0
  21. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/types/queries.py +0 -0
  22. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/typing.py +0 -0
  23. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations/validators.py +0 -0
  24. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations.egg-info/SOURCES.txt +0 -0
  25. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations.egg-info/dependency_links.txt +0 -0
  26. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations.egg-info/requires.txt +0 -0
  27. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/cuenca_validations.egg-info/top_level.txt +0 -0
  28. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/setup.cfg +0 -0
  29. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/setup.py +0 -0
  30. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/tests/__init__.py +0 -0
  31. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/tests/test_card.py +0 -0
  32. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/tests/test_errors.py +0 -0
  33. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/tests/test_helpers.py +0 -0
  34. {cuenca_validations-2.1.7.dev0 → cuenca_validations-2.1.7.dev1}/tests/test_statement.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.7.dev0
3
+ Version: 2.1.7.dev1
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -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: 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
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: Optional[Country] = None
55
- city: Optional[str] = None
56
- full_name: Optional[str] = None
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": {
@@ -410,21 +410,16 @@ class UserTOSAgreementRequest(BaseModel):
410
410
 
411
411
 
412
412
  class UserRequest(BaseModel):
413
- # curp: Curp = Field(
414
- # description='Previously validated in `curp_validations`'
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
- # phone_number: PhoneNumber = Field(
421
- # ..., description='Only if you validated previously on your side'
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
- profession: Optional[str] = None
427
- address: Optional[Address] = None
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'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.7.dev0
3
+ Version: 2.1.7.dev1
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -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.value,
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
- # changing curp so user is underage
356
- request['curp'] = 'ABCD060604HDFSRN03'
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
- assert 'User does not meet age requirement.' in str(v)
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'