cuenca-validations 2.1.2.dev1__py3-none-any.whl → 2.1.3__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.
@@ -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,
@@ -631,25 +632,43 @@ class BankAccountValidationRequest(BaseModel):
631
632
 
632
633
  class UserListsRequest(BaseModel):
633
634
  curp: Optional[Curp] = Field(None, description='Curp to review on lists')
635
+ rfc: Optional[Rfc] = Field(None, description='Rfc to review on lists')
634
636
  account_number: Optional[Union[Clabe, PaymentCardNumber]] = Field(
635
637
  None, description='Account to review on lists'
636
638
  )
637
- names: Optional[str] = Field(
639
+ names: Optional[NonEmptyStr] = Field(
638
640
  None, description='Names of the user to review on lists'
639
641
  )
640
- first_surname: Optional[str] = Field(
641
- 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'
642
644
  )
643
- second_surname: Optional[str] = Field(
644
- 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'
645
647
  )
646
648
 
647
649
  @model_validator(mode='before')
648
650
  @classmethod
649
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
+
650
665
  has_name = all(values.get(f) for f in ['names', 'first_surname'])
651
- curp, account = values.get('curp'), values.get('account_number')
652
- if not any([curp, account, has_name]):
666
+ curp, account, rfc = (
667
+ values.get('curp'),
668
+ values.get('account_number'),
669
+ values.get('rfc'),
670
+ )
671
+ if not any([curp, account, rfc, has_name]):
653
672
  raise ValueError("At least 1 param is required")
654
673
  return values
655
674
 
@@ -658,6 +677,7 @@ class UserListsRequest(BaseModel):
658
677
  json_schema_extra={
659
678
  'example': {
660
679
  'curp': 'GOCG650418HVZNML08',
680
+ 'rfc': 'GOCG650418TJ1',
661
681
  'account_number': '9203929392939292392',
662
682
  'names': 'Pedrito',
663
683
  'first_surname': 'Sola',
@@ -1 +1 @@
1
- __version__ = '2.1.2.dev1'
1
+ __version__ = '2.1.3'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: cuenca_validations
3
- Version: 2.1.2.dev1
3
+ Version: 2.1.3
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=jYCSC0KeXBFDD5uNaDFuT7DDXNyNSE3tg3IkrMgbF_s,27
7
+ cuenca_validations/version.py,sha256=hgD1miBO_f3fboq1GKyV4DdK_igCLGJFnZRD7l9oNRs,22
8
8
  cuenca_validations/types/__init__.py,sha256=8fiuz26oYQT2DriQ7sbD740yFJergVhB1OYoUGETB5A,4783
9
9
  cuenca_validations/types/card.py,sha256=UGzz8NTFAverUmdUKAK1oGHnOnjSNTpIRUm93vKSSGY,1295
10
10
  cuenca_validations/types/enums.py,sha256=sK9ayp8wuu4D5-hjkFTV_-h9xdeVHFj_cZkGjLAzPGI,18853
11
11
  cuenca_validations/types/files.py,sha256=2CszbwF9ytXV9suFFwyDjYG4XxY8UhCjRw3HttVXXNw,269
12
- cuenca_validations/types/general.py,sha256=I1sFlVL61_-Z9n0SQC7ziL9SDEAEgZP4aq_Sem99NOw,2529
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
14
  cuenca_validations/types/identities.py,sha256=-TWRDRpmIaCI4nE4hVy1FQtQtlxuErtmEtzJW1FBzec,4956
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=1GpBV-b0IrxuUAkgC_xyBop9CuzXdt9hvTKm1iH36ts,20555
17
+ cuenca_validations/types/requests.py,sha256=WJnHmGEh8oqIVWw2nC8HpBMzVoEimcfYvl1ldJDSvaQ,21242
18
18
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  tests/test_card.py,sha256=QAfRz7e11gWICPnFJZ2tiYgUsFV3C9TwzJXrDnDNXFw,1202
20
20
  tests/test_errors.py,sha256=ixiIgEuBuzfsL5p4uCFdF32XqFRtTPF6EVhGJ0keOrI,930
21
21
  tests/test_helpers.py,sha256=ubzpi1UXCryLQdgsT_Zm2IX-XE_4L0dnHnhLwH06xK8,748
22
22
  tests/test_statement.py,sha256=IOE0rRRBgBZSJv_FLaETEyn5NzzXKMNTqgjv99GX-68,1436
23
- tests/test_types.py,sha256=SroPI5wo5pV4TN27MEnKArUnyHItFpXm2q2nQoarpuI,17761
24
- cuenca_validations-2.1.2.dev1.dist-info/LICENSE,sha256=wR76FmxBbfnQpwELkkE5iMF8sFIafEMgXLTE4N4WPTc,1063
25
- cuenca_validations-2.1.2.dev1.dist-info/METADATA,sha256=6wv_MNe7G61mAfBUj4gXopqmEDMpVL75iXyATppZ_sc,1577
26
- cuenca_validations-2.1.2.dev1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
27
- cuenca_validations-2.1.2.dev1.dist-info/top_level.txt,sha256=4233xdOs2HtuT-GFRjcDcwK0IwdwvWdczOtk0fPB6Gw,25
28
- cuenca_validations-2.1.2.dev1.dist-info/RECORD,,
23
+ tests/test_types.py,sha256=K_YNFz0Kac3k8fJNeXuYGkL1hjXDQu084jCX6xEMEE4,19348
24
+ cuenca_validations-2.1.3.dist-info/LICENSE,sha256=wR76FmxBbfnQpwELkkE5iMF8sFIafEMgXLTE4N4WPTc,1063
25
+ cuenca_validations-2.1.3.dist-info/METADATA,sha256=qUm6RkPgUbyxqHJyQpUa6CtE9iEvqEna1sfnBnboXgo,1572
26
+ cuenca_validations-2.1.3.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
27
+ cuenca_validations-2.1.3.dist-info/top_level.txt,sha256=4233xdOs2HtuT-GFRjcDcwK0IwdwvWdczOtk0fPB6Gw,25
28
+ cuenca_validations-2.1.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (75.8.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
tests/test_types.py CHANGED
@@ -564,10 +564,66 @@ def test_bank_account_validation_clabe_request():
564
564
  assert BankAccountValidationRequest(account_number='646180157098510917')
565
565
 
566
566
 
567
- def test_user_lists_request():
568
- UserListsRequest(names='Pedro', first_surname='Paramo')
569
- with pytest.raises(ValueError):
570
- UserListsRequest()
567
+ @pytest.mark.parametrize(
568
+ 'input_data',
569
+ [
570
+ {'names': 'Pedro', 'first_surname': 'Paramo'},
571
+ {'curp': 'GOCG650418HVZNML08'},
572
+ {'rfc': 'GOCG650418TJ1'},
573
+ {'account_number': '646180157034181180'},
574
+ {
575
+ 'curp': 'GOCG650418HVZNML08',
576
+ 'rfc': 'GOCG650418TJ1',
577
+ 'names': 'Pedro',
578
+ 'first_surname': 'Paramo',
579
+ },
580
+ ],
581
+ )
582
+ def test_user_lists_request_valid_params(input_data):
583
+ UserListsRequest(**input_data)
584
+
585
+
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)
571
627
 
572
628
 
573
629
  class IntModel(BaseModel):