cuenca-validations 2.1.3.dev1__tar.gz → 2.1.4__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}/PKG-INFO +3 -2
  2. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/types/enums.py +1 -0
  3. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/types/general.py +4 -0
  4. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/types/requests.py +19 -5
  5. cuenca_validations-2.1.4/cuenca_validations/version.py +1 -0
  6. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations.egg-info/PKG-INFO +3 -2
  7. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/tests/test_types.py +41 -3
  8. cuenca_validations-2.1.3.dev1/cuenca_validations/version.py +0 -1
  9. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/LICENSE +0 -0
  10. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/README.md +0 -0
  11. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/__init__.py +0 -0
  12. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/card_bins.py +0 -0
  13. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/errors.py +0 -0
  14. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/py.typed +0 -0
  15. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/types/__init__.py +0 -0
  16. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/types/card.py +0 -0
  17. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/types/files.py +0 -0
  18. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/types/helpers.py +0 -0
  19. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/types/identities.py +0 -0
  20. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/types/morals.py +0 -0
  21. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/types/queries.py +0 -0
  22. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/typing.py +0 -0
  23. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations/validators.py +0 -0
  24. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations.egg-info/SOURCES.txt +0 -0
  25. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations.egg-info/dependency_links.txt +0 -0
  26. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations.egg-info/requires.txt +0 -0
  27. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/cuenca_validations.egg-info/top_level.txt +0 -0
  28. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/setup.cfg +0 -0
  29. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/setup.py +0 -0
  30. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/tests/__init__.py +0 -0
  31. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/tests/test_card.py +0 -0
  32. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/tests/test_errors.py +0 -0
  33. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/tests/test_helpers.py +0 -0
  34. {cuenca_validations-2.1.3.dev1 → cuenca_validations-2.1.4}/tests/test_statement.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.3.dev1
3
+ Version: 2.1.4
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -27,6 +27,7 @@ Dynamic: classifier
27
27
  Dynamic: description
28
28
  Dynamic: description-content-type
29
29
  Dynamic: home-page
30
+ Dynamic: license-file
30
31
  Dynamic: requires-dist
31
32
  Dynamic: requires-python
32
33
  Dynamic: summary
@@ -544,6 +544,7 @@ class Country(str, Enum):
544
544
  ZA = 'ZA' # South Africa
545
545
  ZM = 'ZM' # Zambia
546
546
  ZW = 'ZW' # Zimbabwe
547
+ XA = 'XA' # Apatrida
547
548
 
548
549
 
549
550
  class VerificationStatus(str, Enum):
@@ -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):
@@ -55,6 +55,7 @@ from .card import (
55
55
  )
56
56
  from .general import (
57
57
  LogConfig,
58
+ NonEmptyStr,
58
59
  SerializableAnyUrl,
59
60
  SerializableHttpUrl,
60
61
  SerializableIPvAnyAddress,
@@ -635,19 +636,32 @@ class UserListsRequest(BaseModel):
635
636
  account_number: Optional[Union[Clabe, PaymentCardNumber]] = Field(
636
637
  None, description='Account to review on lists'
637
638
  )
638
- names: Optional[str] = Field(
639
+ names: Optional[NonEmptyStr] = Field(
639
640
  None, description='Names of the user to review on lists'
640
641
  )
641
- first_surname: Optional[str] = Field(
642
- None, description='first_surname of the user to review on lists'
642
+ first_surname: Optional[NonEmptyStr] = Field(
643
+ None, description='First surname of the user to review on lists'
643
644
  )
644
- second_surname: Optional[str] = Field(
645
- None, description='second_surname of the user to review on lists'
645
+ second_surname: Optional[NonEmptyStr] = Field(
646
+ None, description='Second surname of the user to review on lists'
646
647
  )
647
648
 
648
649
  @model_validator(mode='before')
649
650
  @classmethod
650
651
  def check_request(cls, values):
652
+ if (
653
+ values.get('first_surname') or values.get('second_surname')
654
+ ) and not values.get('names'):
655
+ raise ValueError(
656
+ 'names is required when first_surname or second_surname '
657
+ 'is provided'
658
+ )
659
+
660
+ if values.get('names') and not values.get('first_surname'):
661
+ raise ValueError(
662
+ 'first_surname is required when names is provided'
663
+ )
664
+
651
665
  has_name = all(values.get(f) for f in ['names', 'first_surname'])
652
666
  curp, account, rfc = (
653
667
  values.get('curp'),
@@ -0,0 +1 @@
1
+ __version__ = '2.1.4'
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.3.dev1
3
+ Version: 2.1.4
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -27,6 +27,7 @@ Dynamic: classifier
27
27
  Dynamic: description
28
28
  Dynamic: description-content-type
29
29
  Dynamic: home-page
30
+ Dynamic: license-file
30
31
  Dynamic: requires-dist
31
32
  Dynamic: requires-python
32
33
  Dynamic: summary
@@ -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'