cuenca-validations 2.1.3.dev1__tar.gz → 2.1.4.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.3.dev1 → cuenca_validations-2.1.4.dev1}/PKG-INFO +1 -1
  2. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/types/__init__.py +2 -2
  3. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/types/enums.py +5 -0
  4. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/types/general.py +4 -0
  5. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/types/requests.py +22 -10
  6. cuenca_validations-2.1.4.dev1/cuenca_validations/version.py +1 -0
  7. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations.egg-info/PKG-INFO +1 -1
  8. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/tests/test_types.py +41 -3
  9. cuenca_validations-2.1.3.dev1/cuenca_validations/version.py +0 -1
  10. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/LICENSE +0 -0
  11. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/README.md +0 -0
  12. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/__init__.py +0 -0
  13. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/card_bins.py +0 -0
  14. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/errors.py +0 -0
  15. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/py.typed +0 -0
  16. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/types/card.py +0 -0
  17. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/types/files.py +0 -0
  18. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/types/helpers.py +0 -0
  19. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/types/identities.py +0 -0
  20. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/types/morals.py +0 -0
  21. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/types/queries.py +0 -0
  22. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/typing.py +0 -0
  23. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations/validators.py +0 -0
  24. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations.egg-info/SOURCES.txt +0 -0
  25. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations.egg-info/dependency_links.txt +0 -0
  26. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations.egg-info/requires.txt +0 -0
  27. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/cuenca_validations.egg-info/top_level.txt +0 -0
  28. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/setup.cfg +0 -0
  29. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/setup.py +0 -0
  30. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/tests/__init__.py +0 -0
  31. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/tests/test_card.py +0 -0
  32. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/tests/test_errors.py +0 -0
  33. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/tests/test_helpers.py +0 -0
  34. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4.dev1}/tests/test_statement.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: cuenca_validations
3
- Version: 2.1.3.dev1
3
+ Version: 2.1.4.dev1
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -46,7 +46,7 @@ __all__ = [
46
46
  'KYCFile',
47
47
  'KYCFileType',
48
48
  'KYCValidationRequest',
49
- 'KYCVerificationUpdateRequest',
49
+ 'KYCValidationType',
50
50
  'Language',
51
51
  'LimitedWalletRequest',
52
52
  'PartnerRequest',
@@ -130,6 +130,7 @@ from .enums import (
130
130
  Gender,
131
131
  IssuerNetwork,
132
132
  KYCFileType,
133
+ KYCValidationType,
133
134
  Language,
134
135
  PlatformType,
135
136
  PosCapability,
@@ -201,7 +202,6 @@ from .requests import (
201
202
  FileRequest,
202
203
  FileUploadRequest,
203
204
  KYCValidationRequest,
204
- KYCVerificationUpdateRequest,
205
205
  LimitedWalletRequest,
206
206
  PartnerRequest,
207
207
  PartnerUpdateRequest,
@@ -250,6 +250,11 @@ class KYCFileType(str, Enum):
250
250
  signature = 'signature'
251
251
 
252
252
 
253
+ class KYCValidationType(str, Enum):
254
+ client_side = 'client_side'
255
+ background = 'background'
256
+
257
+
253
258
  class Gender(str, Enum):
254
259
  female = 'female'
255
260
  male = 'male'
@@ -22,6 +22,10 @@ SerializableIPvAnyAddress = Annotated[
22
22
  IPvAnyAddress, PlainSerializer(str, return_type=str)
23
23
  ]
24
24
 
25
+ NonEmptyStr = Annotated[
26
+ str, StringConstraints(strip_whitespace=True, min_length=1)
27
+ ]
28
+
25
29
 
26
30
  class SantizedDict(dict):
27
31
  def __init__(self, *args, **kwargs):
@@ -28,6 +28,7 @@ from ..types.enums import (
28
28
  Gender,
29
29
  IssuerNetwork,
30
30
  KYCFileType,
31
+ KYCValidationType,
31
32
  PlatformType,
32
33
  PosCapability,
33
34
  SavingCategory,
@@ -55,6 +56,7 @@ from .card import (
55
56
  )
56
57
  from .general import (
57
58
  LogConfig,
59
+ NonEmptyStr,
58
60
  SerializableAnyUrl,
59
61
  SerializableHttpUrl,
60
62
  SerializableIPvAnyAddress,
@@ -421,7 +423,7 @@ class UserRequest(BaseModel):
421
423
  description='Status that the user will have when created. '
422
424
  'Defined by platform',
423
425
  )
424
- required_level: Optional[Annotated[int, Field(ge=-1, le=4)]] = Field(
426
+ required_level: Optional[Annotated[int, Field(ge=-1, le=3)]] = Field(
425
427
  None,
426
428
  description='Maximum level a User can reach. ' 'Defined by platform',
427
429
  )
@@ -596,10 +598,6 @@ class LimitedWalletRequest(BaseRequest):
596
598
  allowed_rfc: Optional[Rfc] = None
597
599
 
598
600
 
599
- class KYCVerificationUpdateRequest(BaseRequest):
600
- curp: Curp
601
-
602
-
603
601
  class PlatformRequest(BaseModel):
604
602
  name: str
605
603
  rfc: Optional[str] = None
@@ -621,6 +619,7 @@ class WebhookRequest(BaseModel):
621
619
 
622
620
  class KYCValidationRequest(BaseRequest):
623
621
  user_id: str
622
+ validation_type: KYCValidationType
624
623
  force: bool = False
625
624
  documents: list[KYCFile] = []
626
625
 
@@ -635,19 +634,32 @@ class UserListsRequest(BaseModel):
635
634
  account_number: Optional[Union[Clabe, PaymentCardNumber]] = Field(
636
635
  None, description='Account to review on lists'
637
636
  )
638
- names: Optional[str] = Field(
637
+ names: Optional[NonEmptyStr] = Field(
639
638
  None, description='Names of the user to review on lists'
640
639
  )
641
- first_surname: Optional[str] = Field(
642
- None, description='first_surname of the user to review on lists'
640
+ first_surname: Optional[NonEmptyStr] = Field(
641
+ None, description='First surname of the user to review on lists'
643
642
  )
644
- second_surname: Optional[str] = Field(
645
- None, description='second_surname of the user to review on lists'
643
+ second_surname: Optional[NonEmptyStr] = Field(
644
+ None, description='Second surname of the user to review on lists'
646
645
  )
647
646
 
648
647
  @model_validator(mode='before')
649
648
  @classmethod
650
649
  def check_request(cls, values):
650
+ if (
651
+ values.get('first_surname') or values.get('second_surname')
652
+ ) and not values.get('names'):
653
+ raise ValueError(
654
+ 'names is required when first_surname or second_surname '
655
+ 'is provided'
656
+ )
657
+
658
+ if values.get('names') and not values.get('first_surname'):
659
+ raise ValueError(
660
+ 'first_surname is required when names is provided'
661
+ )
662
+
651
663
  has_name = all(values.get(f) for f in ['names', 'first_surname'])
652
664
  curp, account, rfc = (
653
665
  values.get('curp'),
@@ -0,0 +1 @@
1
+ __version__ = '2.1.4.dev1'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: cuenca_validations
3
- Version: 2.1.3.dev1
3
+ Version: 2.1.4.dev1
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -583,9 +583,47 @@ def test_user_lists_request_valid_params(input_data):
583
583
  UserListsRequest(**input_data)
584
584
 
585
585
 
586
- def test_user_lists_request_invalid_params():
587
- with pytest.raises(ValueError):
588
- UserListsRequest(first_surname='Paramo', second_surname='Paramo')
586
+ @pytest.mark.parametrize(
587
+ 'input_data,expected_error',
588
+ [
589
+ (
590
+ {'first_surname': 'Paramo'},
591
+ (
592
+ 'names is required when first_surname or second_surname '
593
+ 'is provided'
594
+ ),
595
+ ),
596
+ (
597
+ {'second_surname': 'Paramo'},
598
+ (
599
+ 'names is required when first_surname or second_surname '
600
+ 'is provided'
601
+ ),
602
+ ),
603
+ (
604
+ {'first_surname': 'Paramo', 'second_surname': 'Paramo'},
605
+ (
606
+ 'names is required when first_surname or second_surname '
607
+ 'is provided'
608
+ ),
609
+ ),
610
+ (
611
+ {'names': 'Juan'},
612
+ 'first_surname is required when names is provided',
613
+ ),
614
+ (
615
+ {'first_surname': 'Paramo', 'curp': 'GOCG650418HVZNML08'},
616
+ (
617
+ 'names is required when first_surname or second_surname '
618
+ 'is provided'
619
+ ),
620
+ ),
621
+ ({}, 'At least 1 param is required'),
622
+ ],
623
+ )
624
+ def test_user_lists_request_invalid_params(input_data, expected_error):
625
+ with pytest.raises(ValueError, match=expected_error):
626
+ UserListsRequest(**input_data)
589
627
 
590
628
 
591
629
  class IntModel(BaseModel):
@@ -1 +0,0 @@
1
- __version__ = '2.1.3.dev1'