cuenca-validations 2.1.8.dev3__tar.gz → 2.1.9.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.8.dev3 → cuenca_validations-2.1.9.dev1}/PKG-INFO +1 -1
  2. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/types/__init__.py +0 -2
  3. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/types/identities.py +36 -10
  4. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/types/queries.py +0 -4
  5. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/types/requests.py +2 -1
  6. cuenca_validations-2.1.9.dev1/cuenca_validations/version.py +1 -0
  7. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations.egg-info/PKG-INFO +1 -1
  8. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/tests/test_types.py +29 -1
  9. cuenca_validations-2.1.8.dev3/cuenca_validations/version.py +0 -1
  10. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/LICENSE +0 -0
  11. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/README.md +0 -0
  12. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/__init__.py +0 -0
  13. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/card_bins.py +0 -0
  14. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/errors.py +0 -0
  15. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/py.typed +0 -0
  16. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/types/card.py +0 -0
  17. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/types/enums.py +0 -0
  18. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/types/files.py +0 -0
  19. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/types/general.py +0 -0
  20. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/types/helpers.py +0 -0
  21. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/types/morals.py +0 -0
  22. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/typing.py +0 -0
  23. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations/validators.py +0 -0
  24. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations.egg-info/SOURCES.txt +0 -0
  25. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations.egg-info/dependency_links.txt +0 -0
  26. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations.egg-info/requires.txt +0 -0
  27. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/cuenca_validations.egg-info/top_level.txt +0 -0
  28. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/setup.cfg +0 -0
  29. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/setup.py +0 -0
  30. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/tests/__init__.py +0 -0
  31. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/tests/test_card.py +0 -0
  32. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/tests/test_errors.py +0 -0
  33. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.dev1}/tests/test_helpers.py +0 -0
  34. {cuenca_validations-2.1.8.dev3 → cuenca_validations-2.1.9.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.8.dev3
3
+ Version: 2.1.9.dev1
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -7,7 +7,6 @@ __all__ = [
7
7
  'BalanceEntryQuery',
8
8
  'BankAccountValidationQuery',
9
9
  'BankAccountValidationRequest',
10
- 'PostalCodeQuery',
11
10
  'BankAccountStatus',
12
11
  'BatchFileMetadata',
13
12
  'Beneficiary',
@@ -184,7 +183,6 @@ from .queries import (
184
183
  EventQuery,
185
184
  FileQuery,
186
185
  IdentityQuery,
187
- PostalCodeQuery,
188
186
  QueryParams,
189
187
  SessionQuery,
190
188
  StatementQuery,
@@ -1,11 +1,18 @@
1
1
  import datetime as dt
2
- from typing import Annotated, Optional
2
+ from typing import Annotated, Any, Optional
3
3
 
4
- from pydantic import BaseModel, ConfigDict, Field, SecretStr, StringConstraints
4
+ from pydantic import (
5
+ BaseModel,
6
+ ConfigDict,
7
+ Field,
8
+ SecretStr,
9
+ StringConstraints,
10
+ model_validator,
11
+ )
5
12
  from pydantic_extra_types.phone_numbers import PhoneNumber
6
13
 
7
- from .enums import KYCFileType, VerificationStatus
8
- from .general import NonEmptyStr, SerializableIPvAnyAddress
14
+ from .enums import Country, KYCFileType, State, VerificationStatus
15
+ from .general import SerializableIPvAnyAddress
9
16
 
10
17
  Password = Annotated[
11
18
  SecretStr,
@@ -38,22 +45,41 @@ Rfc = Annotated[
38
45
 
39
46
 
40
47
  class Address(BaseModel):
41
- street: NonEmptyStr
42
- ext_number: NonEmptyStr
43
- int_number: Optional[NonEmptyStr] = None
44
- postal_code_id: NonEmptyStr
45
-
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
53
+ state: Optional[State] = None
54
+ country: Optional[Country] = None
55
+ city: Optional[str] = None
56
+ full_name: Optional[str] = None
46
57
  model_config = ConfigDict(
47
58
  json_schema_extra={
48
59
  "example": {
49
60
  "street": "Reforma",
50
61
  "ext_number": "265",
51
62
  "int_number": "5",
52
- "postal_code_id": "PC2ygq9j2bS9-9tsuVawzErA",
63
+ "colonia": "Cuauhtémoc",
64
+ "postal_code": "06500",
65
+ "state": "DF",
66
+ "country": "MX",
67
+ "city": "Cuauhtémoc",
53
68
  }
54
69
  }
55
70
  )
56
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
+
57
83
 
58
84
  class Beneficiary(BaseModel):
59
85
  name: str
@@ -179,7 +179,3 @@ class FileQuery(QueryParams):
179
179
  class BankAccountValidationQuery(QueryParams):
180
180
  account_number: Optional[str] = None
181
181
  status: Optional[BankAccountStatus] = None
182
-
183
-
184
- class PostalCodeQuery(QueryParams):
185
- postal_code: str
@@ -407,6 +407,7 @@ class TOSRequest(BaseModel):
407
407
  class UserTOSAgreementRequest(BaseModel):
408
408
  tos_id: str
409
409
  location: Coordinate
410
+ signature: SerializableHttpUrl | None = None
410
411
 
411
412
 
412
413
  class UserRequest(BaseModel):
@@ -423,7 +424,7 @@ class UserRequest(BaseModel):
423
424
  None, description='Only if you validated previously on your side'
424
425
  )
425
426
  profession: Optional[str] = None
426
- address: Address
427
+ address: Optional[Address] = None
427
428
  status: Optional[UserStatus] = Field(
428
429
  None,
429
430
  description='Status that the user will have when created. '
@@ -0,0 +1 @@
1
+ __version__ = '2.1.9.dev1'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.8.dev3
3
+ Version: 2.1.9.dev1
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -10,6 +10,7 @@ from pydantic import AfterValidator, BaseModel, SecretStr, ValidationError
10
10
  from pydantic.fields import FieldInfo
11
11
 
12
12
  from cuenca_validations.types import (
13
+ Address,
13
14
  CardQuery,
14
15
  JSONEncoder,
15
16
  QueryParams,
@@ -20,6 +21,7 @@ from cuenca_validations.types import (
20
21
  get_state_name,
21
22
  )
22
23
  from cuenca_validations.types.enums import (
24
+ Country,
23
25
  EcommerceIndicator,
24
26
  SessionType,
25
27
  State,
@@ -301,6 +303,27 @@ def test_saving_update_request():
301
303
  SavingUpdateRequest(**data)
302
304
 
303
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
+
304
327
  @freeze_time('2022-01-01')
305
328
  def test_user_request():
306
329
  request = dict(
@@ -314,7 +337,12 @@ def test_user_request():
314
337
  street='calle 1',
315
338
  ext_number='2',
316
339
  int_number='3',
317
- postal_code_id='PC2ygq9j2bS9-9tsuVawzErA',
340
+ colonia='Juarez',
341
+ postal_code='09900',
342
+ state=State.DF.value,
343
+ country=Country.MX,
344
+ city='Obrera',
345
+ full_name=None,
318
346
  ),
319
347
  phone_verification_id='VE12345678',
320
348
  email_verification_id='VE0987654321',
@@ -1 +0,0 @@
1
- __version__ = '2.1.8.dev3'