cuenca-validations 2.1.7.dev5__py3-none-any.whl → 2.1.7.dev7__py3-none-any.whl

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.
@@ -691,16 +691,16 @@ class SATRegimeCode(str, Enum):
691
691
 
692
692
 
693
693
  class Profession(str, Enum):
694
- arts = 'arts'
695
- agriculture = 'agriculture'
696
- commerce = 'commerce'
697
- student = 'student'
698
- employee = 'employee'
699
- entrepreneur = 'entrepreneur'
700
- homemaker = 'homemaker'
701
- teacher = 'teacher'
702
- professional = 'professional'
703
- public_servant = 'public_servant'
704
- it_communications = 'it_communications'
705
- freelancer = 'freelancer'
706
- skilled_trades = 'skilled_trades'
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'
@@ -36,8 +36,41 @@ 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.
39
45
 
40
46
  class Address(BaseModel):
47
+ street: Optional[str] = None
48
+ ext_number: Optional[str] = None
49
+ int_number: Optional[str] = None
50
+ colonia: Optional[str] = None
51
+ postal_code: Optional[str] = None
52
+ state: Optional[State] = None
53
+ country: Optional[Country] = None
54
+ city: Optional[str] = None
55
+ full_name: Optional[str] = None
56
+ model_config = ConfigDict(
57
+ json_schema_extra={
58
+ "example": {
59
+ "street": "Reforma",
60
+ "ext_number": "265",
61
+ "int_number": "5",
62
+ "colonia": "Cuauhtémoc",
63
+ "postal_code": "06500",
64
+ "state": "DF",
65
+ "country": "MX",
66
+ "city": "Cuauhtémoc",
67
+ }
68
+ }
69
+ )
70
+
71
+
72
+ class AddressRequest(BaseModel):
73
+ # This model is mainly for request validation, enforcing required fields.
41
74
  street: NonEmptyStr
42
75
  ext_number: NonEmptyStr
43
76
  int_number: Optional[NonEmptyStr] = None
@@ -64,7 +64,7 @@ from .general import (
64
64
  StrictPositiveInt,
65
65
  )
66
66
  from .identities import (
67
- Address,
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: Address = Field(
419
+ address: AddressRequest = Field(
420
420
  description='User residential address information'
421
421
  )
422
422
  phone_verification_id: str = Field(
@@ -427,9 +427,6 @@ class UserRequest(BaseModel):
427
427
  ...,
428
428
  description='ID of previously validated email verification',
429
429
  )
430
- tos_agreement: UserTOSAgreementRequest = Field(
431
- ..., description='TOS agreement for the user'
432
- )
433
430
 
434
431
  model_config = ConfigDict(
435
432
  json_schema_extra={
@@ -438,7 +435,7 @@ class UserRequest(BaseModel):
438
435
  'phone_number': '+525511223344',
439
436
  'email_address': 'user@example.com',
440
437
  'profession': 'engineer',
441
- 'address': Address.model_json_schema().get('example'),
438
+ 'address': AddressRequest.model_json_schema().get('example'),
442
439
  }
443
440
  },
444
441
  )
@@ -467,7 +464,7 @@ class UserUpdateRequest(BaseModel):
467
464
  verification_id: Optional[str] = None
468
465
  email_verification_id: Optional[str] = None
469
466
  phone_verification_id: Optional[str] = None
470
- address: Optional[Address] = None
467
+ address: Optional[AddressRequest] = None
471
468
  beneficiaries: Optional[list[Beneficiary]] = None
472
469
  govt_id: Optional[KYCFile] = None
473
470
  proof_of_address: Optional[KYCFile] = None
@@ -688,7 +685,7 @@ class PartnerRequest(BaseRequest):
688
685
  web_site: str
689
686
  phone_number: PhoneNumber
690
687
  email_address: EmailStr
691
- address: Address
688
+ address: AddressRequest
692
689
 
693
690
 
694
691
  class PartnerUpdateRequest(BaseRequest):
@@ -702,7 +699,7 @@ class PartnerUpdateRequest(BaseRequest):
702
699
  web_site: Optional[str] = None
703
700
  phone_number: Optional[PhoneNumber] = None
704
701
  email_address: Optional[EmailStr] = None
705
- address: Optional[Address] = None
702
+ address: Optional[AddressRequest] = None
706
703
  business_details: Optional[BusinessDetails] = None
707
704
  transactional_profile: Optional[TransactionalProfile] = None
708
705
  external_account: Optional[Clabe] = None
@@ -1 +1 @@
1
- __version__ = '2.1.7.dev5'
1
+ __version__ = '2.1.7.dev7'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.7.dev5
3
+ Version: 2.1.7.dev7
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -4,25 +4,25 @@ cuenca_validations/errors.py,sha256=OtM8EgiKqYdz9Hn66AbBO96orL1or7efkyt0vh0Zxbs,
4
4
  cuenca_validations/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  cuenca_validations/typing.py,sha256=1QCu81IbVZZpyInjyeAuO-nF36gpT5Gi4o6V9PozuOU,204
6
6
  cuenca_validations/validators.py,sha256=wzwLnJ4wHggZvqp3mearbFkzvDERGeTNvJkuofQnuMc,1484
7
- cuenca_validations/version.py,sha256=t_ZE4qAissTLU3mpMGxmvUi0gveTc5dOA6cEKwJL51c,27
7
+ cuenca_validations/version.py,sha256=g0MR42LWjuua2qxr_-4Fuk6Mt_oU-W9X1ihTawIyuN8,27
8
8
  cuenca_validations/types/__init__.py,sha256=1xGfD2tlFsPlhIy-T7BZPs-vvEgDoc6ZW2iXFLbyQpM,4799
9
9
  cuenca_validations/types/card.py,sha256=UGzz8NTFAverUmdUKAK1oGHnOnjSNTpIRUm93vKSSGY,1295
10
- cuenca_validations/types/enums.py,sha256=o2XmufNIBhx88KDVARnpoXqLkyXVP89XMW0DDPDH9NI,19424
10
+ cuenca_validations/types/enums.py,sha256=533fUCip5CXMD7m4Ww8VAcB5Yr4A0EmT5GBRt2mF4b0,19510
11
11
  cuenca_validations/types/files.py,sha256=2CszbwF9ytXV9suFFwyDjYG4XxY8UhCjRw3HttVXXNw,269
12
12
  cuenca_validations/types/general.py,sha256=vJmQBD_Iv_hsxD8x3_Bip-NlYAiE2rmXSPQKj4kTtto,2621
13
13
  cuenca_validations/types/helpers.py,sha256=6rHUhwoQ7jJZtGcW3LX-W5ZDl42PWE1RoBpGme7KCkk,610
14
- cuenca_validations/types/identities.py,sha256=FBpWUwRfy99jBr2Zhuv9gArnnUe12o3A2kbs25i9nwo,4470
14
+ cuenca_validations/types/identities.py,sha256=_8SYg01IwqgrhhU2CwbBVq_S7v6gr-sksE0UQnlRb7Y,5672
15
15
  cuenca_validations/types/morals.py,sha256=m8kAedevmwfSPTA9GYe03l7pkgipynwYgKfejyVtnuI,1813
16
16
  cuenca_validations/types/queries.py,sha256=KCRx0sPzWDtDDbZysmFGVgANgfqil17EITWaG7tGQ-A,4700
17
- cuenca_validations/types/requests.py,sha256=-47_fJrsTpZwYVSYUpNsLhMwLhncyv6dxAeVpxAWqo8,20482
18
- cuenca_validations-2.1.7.dev5.dist-info/licenses/LICENSE,sha256=wR76FmxBbfnQpwELkkE5iMF8sFIafEMgXLTE4N4WPTc,1063
17
+ cuenca_validations/types/requests.py,sha256=u2lUkeIQu2KqSo1PU0XNb1mFczBXZZoLy1p7vivQwiU,20412
18
+ cuenca_validations-2.1.7.dev7.dist-info/licenses/LICENSE,sha256=wR76FmxBbfnQpwELkkE5iMF8sFIafEMgXLTE4N4WPTc,1063
19
19
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  tests/test_card.py,sha256=QAfRz7e11gWICPnFJZ2tiYgUsFV3C9TwzJXrDnDNXFw,1202
21
21
  tests/test_errors.py,sha256=ixiIgEuBuzfsL5p4uCFdF32XqFRtTPF6EVhGJ0keOrI,930
22
22
  tests/test_helpers.py,sha256=ubzpi1UXCryLQdgsT_Zm2IX-XE_4L0dnHnhLwH06xK8,748
23
23
  tests/test_statement.py,sha256=IOE0rRRBgBZSJv_FLaETEyn5NzzXKMNTqgjv99GX-68,1436
24
- tests/test_types.py,sha256=TimSUqe0YX83qIzo7p6XUy8YYuf19a7M3iPkVKw0iMg,19203
25
- cuenca_validations-2.1.7.dev5.dist-info/METADATA,sha256=uhhQmpUuuRbj77vU8ggcDAWZ6R0hrf61EDRXaW0pOjs,1599
26
- cuenca_validations-2.1.7.dev5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
27
- cuenca_validations-2.1.7.dev5.dist-info/top_level.txt,sha256=4233xdOs2HtuT-GFRjcDcwK0IwdwvWdczOtk0fPB6Gw,25
28
- cuenca_validations-2.1.7.dev5.dist-info/RECORD,,
24
+ tests/test_types.py,sha256=svH813Q47p9Ziq0jcuPIvrIuelPoVKfuFyxdMAgPsdw,19070
25
+ cuenca_validations-2.1.7.dev7.dist-info/METADATA,sha256=DgzlWGRogj2MTz0T2nAqgiteWfBSauSK1I8nGy6RCLM,1599
26
+ cuenca_validations-2.1.7.dev7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
27
+ cuenca_validations-2.1.7.dev7.dist-info/top_level.txt,sha256=4233xdOs2HtuT-GFRjcDcwK0IwdwvWdczOtk0fPB6Gw,25
28
+ cuenca_validations-2.1.7.dev7.dist-info/RECORD,,
tests/test_types.py CHANGED
@@ -307,7 +307,7 @@ def test_saving_update_request():
307
307
  def test_user_request():
308
308
  request = dict(
309
309
  curp='ABCD920604HDFSRN03',
310
- profession=Profession.employee,
310
+ profession=Profession.empleado,
311
311
  address=dict(
312
312
  street='calle 1',
313
313
  ext_number='2',
@@ -320,10 +320,6 @@ def test_user_request():
320
320
  ),
321
321
  phone_verification_id='VE12345678',
322
322
  email_verification_id='VE0987654321',
323
- tos_agreement=dict(
324
- tos_id='TOS123',
325
- location=dict(latitude=19.4326, longitude=-99.1332),
326
- ),
327
323
  )
328
324
  assert UserRequest(**request).model_dump() == request
329
325