cuenca-validations 2.1.8.dev2__tar.gz → 2.1.8.dev5__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.dev2 → cuenca_validations-2.1.8.dev5}/PKG-INFO +1 -1
  2. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/types/identities.py +9 -28
  3. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/types/requests.py +23 -6
  4. cuenca_validations-2.1.8.dev5/cuenca_validations/version.py +1 -0
  5. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations.egg-info/PKG-INFO +1 -1
  6. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/tests/test_types.py +1 -29
  7. cuenca_validations-2.1.8.dev2/cuenca_validations/version.py +0 -1
  8. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/LICENSE +0 -0
  9. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/README.md +0 -0
  10. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/__init__.py +0 -0
  11. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/card_bins.py +0 -0
  12. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/errors.py +0 -0
  13. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/py.typed +0 -0
  14. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/types/__init__.py +0 -0
  15. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/types/card.py +0 -0
  16. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/types/enums.py +0 -0
  17. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/types/files.py +0 -0
  18. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/types/general.py +0 -0
  19. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/types/helpers.py +0 -0
  20. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/types/morals.py +0 -0
  21. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/types/queries.py +0 -0
  22. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/typing.py +0 -0
  23. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations/validators.py +0 -0
  24. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations.egg-info/SOURCES.txt +0 -0
  25. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations.egg-info/dependency_links.txt +0 -0
  26. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations.egg-info/requires.txt +0 -0
  27. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/cuenca_validations.egg-info/top_level.txt +0 -0
  28. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/setup.cfg +0 -0
  29. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/setup.py +0 -0
  30. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/tests/__init__.py +0 -0
  31. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/tests/test_card.py +0 -0
  32. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/tests/test_errors.py +0 -0
  33. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/tests/test_helpers.py +0 -0
  34. {cuenca_validations-2.1.8.dev2 → cuenca_validations-2.1.8.dev5}/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.dev2
3
+ Version: 2.1.8.dev5
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -1,18 +1,11 @@
1
1
  import datetime as dt
2
- from typing import Annotated, Any, Optional
2
+ from typing import Annotated, Optional
3
3
 
4
- from pydantic import (
5
- BaseModel,
6
- ConfigDict,
7
- Field,
8
- SecretStr,
9
- StringConstraints,
10
- model_validator,
11
- )
4
+ from pydantic import BaseModel, ConfigDict, Field, SecretStr, StringConstraints
12
5
  from pydantic_extra_types.phone_numbers import PhoneNumber
13
6
 
14
7
  from .enums import Country, KYCFileType, State, VerificationStatus
15
- from .general import SerializableIPvAnyAddress
8
+ from .general import NonEmptyStr, SerializableIPvAnyAddress
16
9
 
17
10
  Password = Annotated[
18
11
  SecretStr,
@@ -45,15 +38,14 @@ Rfc = Annotated[
45
38
 
46
39
 
47
40
  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
41
+ street: NonEmptyStr
42
+ ext_number: NonEmptyStr
43
+ int_number: Optional[NonEmptyStr] = None
44
+ colonia: Optional[NonEmptyStr] = None
45
+ postal_code: Optional[NonEmptyStr] = None
53
46
  state: Optional[State] = None
54
47
  country: Optional[Country] = None
55
- city: Optional[str] = None
56
- full_name: Optional[str] = None
48
+ city: Optional[NonEmptyStr] = None
57
49
  model_config = ConfigDict(
58
50
  json_schema_extra={
59
51
  "example": {
@@ -69,17 +61,6 @@ class Address(BaseModel):
69
61
  }
70
62
  )
71
63
 
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
64
 
84
65
  class Beneficiary(BaseModel):
85
66
  name: str
@@ -64,7 +64,6 @@ from .general import (
64
64
  StrictPositiveInt,
65
65
  )
66
66
  from .identities import (
67
- Address,
68
67
  Beneficiary,
69
68
  Curp,
70
69
  KYCFile,
@@ -84,6 +83,24 @@ from .morals import (
84
83
  )
85
84
 
86
85
 
86
+ class AddressRequest(BaseModel):
87
+ street: NonEmptyStr
88
+ ext_number: NonEmptyStr
89
+ int_number: Optional[NonEmptyStr] = None
90
+ postal_code_id: NonEmptyStr
91
+
92
+ model_config = ConfigDict(
93
+ json_schema_extra={
94
+ "example": {
95
+ "street": "Reforma",
96
+ "ext_number": "265",
97
+ "int_number": "5",
98
+ "postal_code_id": "PC2ygq9j2bS9-9tsuVawzErA",
99
+ }
100
+ }
101
+ )
102
+
103
+
87
104
  class BaseRequest(BaseModel):
88
105
  model_config = ConfigDict(extra="forbid")
89
106
 
@@ -423,7 +440,7 @@ class UserRequest(BaseModel):
423
440
  None, description='Only if you validated previously on your side'
424
441
  )
425
442
  profession: Optional[str] = None
426
- address: Optional[Address] = None
443
+ address: AddressRequest
427
444
  status: Optional[UserStatus] = Field(
428
445
  None,
429
446
  description='Status that the user will have when created. '
@@ -454,7 +471,7 @@ class UserRequest(BaseModel):
454
471
  'phone_number': '+525511223344',
455
472
  'email_address': 'user@example.com',
456
473
  'profession': 'engineer',
457
- 'address': Address.schema().get('example'),
474
+ 'address': AddressRequest.model_json_schema().get('example'),
458
475
  }
459
476
  },
460
477
  )
@@ -485,7 +502,7 @@ class UserUpdateRequest(BaseModel):
485
502
  verification_id: Optional[str] = None
486
503
  email_verification_id: Optional[str] = None
487
504
  phone_verification_id: Optional[str] = None
488
- address: Optional[Address] = None
505
+ address: Optional[AddressRequest] = None
489
506
  beneficiaries: Optional[list[Beneficiary]] = None
490
507
  govt_id: Optional[KYCFile] = None
491
508
  proof_of_address: Optional[KYCFile] = None
@@ -709,7 +726,7 @@ class PartnerRequest(BaseRequest):
709
726
  web_site: str
710
727
  phone_number: PhoneNumber
711
728
  email_address: EmailStr
712
- address: Address
729
+ address: AddressRequest
713
730
 
714
731
 
715
732
  class PartnerUpdateRequest(BaseRequest):
@@ -723,7 +740,7 @@ class PartnerUpdateRequest(BaseRequest):
723
740
  web_site: Optional[str] = None
724
741
  phone_number: Optional[PhoneNumber] = None
725
742
  email_address: Optional[EmailStr] = None
726
- address: Optional[Address] = None
743
+ address: Optional[AddressRequest] = None
727
744
  business_details: Optional[BusinessDetails] = None
728
745
  transactional_profile: Optional[TransactionalProfile] = None
729
746
  external_account: Optional[Clabe] = None
@@ -0,0 +1 @@
1
+ __version__ = '2.1.8.dev5'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.8.dev2
3
+ Version: 2.1.8.dev5
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -10,7 +10,6 @@ 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,
14
13
  CardQuery,
15
14
  JSONEncoder,
16
15
  QueryParams,
@@ -21,7 +20,6 @@ from cuenca_validations.types import (
21
20
  get_state_name,
22
21
  )
23
22
  from cuenca_validations.types.enums import (
24
- Country,
25
23
  EcommerceIndicator,
26
24
  SessionType,
27
25
  State,
@@ -303,27 +301,6 @@ def test_saving_update_request():
303
301
  SavingUpdateRequest(**data)
304
302
 
305
303
 
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
304
  @freeze_time('2022-01-01')
328
305
  def test_user_request():
329
306
  request = dict(
@@ -337,12 +314,7 @@ def test_user_request():
337
314
  street='calle 1',
338
315
  ext_number='2',
339
316
  int_number='3',
340
- colonia='Juarez',
341
- postal_code='09900',
342
- state=State.DF.value,
343
- country=Country.MX,
344
- city='Obrera',
345
- full_name=None,
317
+ postal_code_id='PC2ygq9j2bS9-9tsuVawzErA',
346
318
  ),
347
319
  phone_verification_id='VE12345678',
348
320
  email_verification_id='VE0987654321',
@@ -1 +0,0 @@
1
- __version__ = '2.1.8.dev2'