cuenca-validations 2.1.14.dev2__py3-none-any.whl → 2.1.14.dev4__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.
@@ -375,6 +375,24 @@ class CurpValidationRequest(BaseModel):
375
375
  raise
376
376
  return date_of_birth
377
377
 
378
+ @field_validator('manual_curp')
379
+ @classmethod
380
+ def validate_manual_curp_birth_date(
381
+ cls, manual_curp: Optional[Curp]
382
+ ) -> Optional[Curp]:
383
+ if manual_curp:
384
+ current_date = dt.datetime.utcnow()
385
+ curp_date = manual_curp[4:10]
386
+ yy = int(curp_date[:2])
387
+ current_yy = current_date.year % 100
388
+ century = '19' if yy > current_yy else '20'
389
+ birth_date = dt.datetime.strptime(century + curp_date, '%Y%m%d')
390
+ try:
391
+ validate_age_requirement(birth_date)
392
+ except ValueError:
393
+ raise
394
+ return manual_curp
395
+
378
396
  @model_validator(mode="before")
379
397
  @classmethod
380
398
  def validate_state_of_birth(cls, values: DictStrAny) -> DictStrAny:
@@ -469,11 +487,9 @@ class UserRequest(BaseModel):
469
487
  if curp:
470
488
  current_date = dt.datetime.utcnow()
471
489
  curp_date = curp[4:10]
472
- century = (
473
- '19'
474
- if int(curp_date[:2]) > int(str(current_date.year)[:2])
475
- else '20'
476
- )
490
+ yy = int(curp_date[:2])
491
+ current_yy = current_date.year % 100
492
+ century = '19' if yy > current_yy else '20'
477
493
  birth_date = dt.datetime.strptime(century + curp_date, '%Y%m%d')
478
494
  try:
479
495
  validate_age_requirement(birth_date)
@@ -1 +1 @@
1
- __version__ = '2.1.14.dev2'
1
+ __version__ = '2.1.14.dev4'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.14.dev2
3
+ Version: 2.1.14.dev4
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -4,7 +4,7 @@ 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=XN3WKN-nViQP6jnY2tagoyj6n8JAoB8XZKdjGZDYBFc,28
7
+ cuenca_validations/version.py,sha256=_76tfT7c3a3V-c4iI9jqt2Jk13KLPL0_aJFlTrJV1E8,28
8
8
  cuenca_validations/types/__init__.py,sha256=fPmHzU6mY6l3qK2R8cOhjcrICTOnoHS6VQteX663FRE,4843
9
9
  cuenca_validations/types/card.py,sha256=UGzz8NTFAverUmdUKAK1oGHnOnjSNTpIRUm93vKSSGY,1295
10
10
  cuenca_validations/types/enums.py,sha256=533fUCip5CXMD7m4Ww8VAcB5Yr4A0EmT5GBRt2mF4b0,19510
@@ -14,16 +14,16 @@ cuenca_validations/types/helpers.py,sha256=6rHUhwoQ7jJZtGcW3LX-W5ZDl42PWE1RoBpGm
14
14
  cuenca_validations/types/identities.py,sha256=1wkutHzL9Gpd9oAZdyiikNxWKe5iBVAQT3TabR6YG1o,5451
15
15
  cuenca_validations/types/morals.py,sha256=davabh5hAnFVQyM7-yCyDaT5ewXnm0cr1BtqDIwzkX8,1833
16
16
  cuenca_validations/types/queries.py,sha256=3KWQfIawcXpyfD2SxBlUJpJVkc3CXL5rNMpHU-9GZXY,4992
17
- cuenca_validations/types/requests.py,sha256=sfAB1JrH9SvV0I8EVovWicD5XalcgTz6sldDgsO9dOE,21064
18
- cuenca_validations-2.1.14.dev2.dist-info/licenses/LICENSE,sha256=wR76FmxBbfnQpwELkkE5iMF8sFIafEMgXLTE4N4WPTc,1063
17
+ cuenca_validations/types/requests.py,sha256=XYK4aczPm_TH7gMB2GdqKEDFftLMuiAohw1pC1NwidI,21691
18
+ cuenca_validations-2.1.14.dev4.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_requests.py,sha256=HGKybPNlN-Vbf2Ew34csfMR5UzZdVPoX9J8eeD4yCiI,1095
24
24
  tests/test_statement.py,sha256=IOE0rRRBgBZSJv_FLaETEyn5NzzXKMNTqgjv99GX-68,1436
25
- tests/test_types.py,sha256=agu5f7cbKv2SPuX8CE3Xp7K_s-MW-oLQjj86BWKcXbw,18811
26
- cuenca_validations-2.1.14.dev2.dist-info/METADATA,sha256=oxpgG24EY_GPl4NoBsrFehT4qtoGiG-xr_xSvAzFCUM,1600
27
- cuenca_validations-2.1.14.dev2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
28
- cuenca_validations-2.1.14.dev2.dist-info/top_level.txt,sha256=4233xdOs2HtuT-GFRjcDcwK0IwdwvWdczOtk0fPB6Gw,25
29
- cuenca_validations-2.1.14.dev2.dist-info/RECORD,,
25
+ tests/test_types.py,sha256=__nBVJiYki2LMVtsHS5uQ3ATxUlCUlapqCYvFVFCUdM,19086
26
+ cuenca_validations-2.1.14.dev4.dist-info/METADATA,sha256=NJy7KiUUBhqws5hGz4IuNc84UbvK4mV1JJLfOxB4mVo,1600
27
+ cuenca_validations-2.1.14.dev4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
28
+ cuenca_validations-2.1.14.dev4.dist-info/top_level.txt,sha256=4233xdOs2HtuT-GFRjcDcwK0IwdwvWdczOtk0fPB6Gw,25
29
+ cuenca_validations-2.1.14.dev4.dist-info/RECORD,,
tests/test_types.py CHANGED
@@ -385,6 +385,17 @@ def test_curp_validation_request():
385
385
  assert 'state_of_birth required' in str(v)
386
386
 
387
387
 
388
+ def test_curp_validation_request_underage():
389
+ request = dict(
390
+ manual_curp='ABCD240614HDFSRN03', # underage CURP
391
+ )
392
+
393
+ with pytest.raises(ValueError) as v:
394
+ CurpValidationRequest(**request)
395
+
396
+ assert 'User does not meet age requirement.' in str(v)
397
+
398
+
388
399
  def test_user_update_request():
389
400
  request = dict(
390
401
  beneficiaries=[