cuenca-validations 2.1.21.dev1__tar.gz → 2.1.23__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 (35) hide show
  1. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/PKG-INFO +1 -1
  2. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/types/helpers.py +5 -1
  3. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/types/requests.py +15 -0
  4. cuenca_validations-2.1.23/cuenca_validations/version.py +1 -0
  5. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations.egg-info/PKG-INFO +1 -1
  6. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/tests/test_helpers.py +7 -0
  7. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/tests/test_requests.py +9 -0
  8. cuenca_validations-2.1.21.dev1/cuenca_validations/version.py +0 -1
  9. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/LICENSE +0 -0
  10. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/README.md +0 -0
  11. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/__init__.py +0 -0
  12. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/card_bins.py +0 -0
  13. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/errors.py +0 -0
  14. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/py.typed +0 -0
  15. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/types/__init__.py +0 -0
  16. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/types/card.py +0 -0
  17. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/types/enums.py +0 -0
  18. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/types/files.py +0 -0
  19. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/types/general.py +0 -0
  20. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/types/identities.py +0 -0
  21. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/types/morals.py +0 -0
  22. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/types/queries.py +0 -0
  23. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/typing.py +0 -0
  24. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations/validators.py +0 -0
  25. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations.egg-info/SOURCES.txt +0 -0
  26. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations.egg-info/dependency_links.txt +0 -0
  27. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations.egg-info/requires.txt +0 -0
  28. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/cuenca_validations.egg-info/top_level.txt +0 -0
  29. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/setup.cfg +0 -0
  30. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/setup.py +0 -0
  31. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/tests/__init__.py +0 -0
  32. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/tests/test_card.py +0 -0
  33. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/tests/test_errors.py +0 -0
  34. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/tests/test_statement.py +0 -0
  35. {cuenca_validations-2.1.21.dev1 → cuenca_validations-2.1.23}/tests/test_types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.21.dev1
3
+ Version: 2.1.23
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -1,4 +1,5 @@
1
1
  import datetime as dt
2
+ import random
2
3
  import uuid
3
4
  from base64 import urlsafe_b64encode
4
5
  from typing import Callable, Optional, Union
@@ -12,7 +13,10 @@ from .identities import Curp
12
13
 
13
14
  def uuid_field(prefix: str = '') -> Callable[[], str]:
14
15
  def base64_uuid_func() -> str:
15
- return prefix + urlsafe_b64encode(uuid.uuid4().bytes).decode()[:-2]
16
+ base64_str = urlsafe_b64encode(uuid.uuid4().bytes).decode()[:-2]
17
+ rnd = str(random.randint(0, 9))
18
+ sanitized = base64_str.replace('-', rnd).replace('_', rnd)
19
+ return prefix + sanitized
16
20
 
17
21
  return base64_uuid_func
18
22
 
@@ -94,6 +94,13 @@ CUENCA_FILE_URL = (
94
94
  r'^https:\/\/(?:stage|sandbox|api)\.cuenca\.com\/files\/([a-zA-Z0-9\-_]+)$'
95
95
  )
96
96
 
97
+ DOCS_WITH_BACK = [
98
+ KYCFileType.ine,
99
+ KYCFileType.dni,
100
+ KYCFileType.residency,
101
+ KYCFileType.matricula_consular,
102
+ ]
103
+
97
104
 
98
105
  class BaseRequest(BaseModel):
99
106
  model_config = ConfigDict(extra="forbid")
@@ -545,6 +552,14 @@ class UserUpdateRequest(BaseRequest):
545
552
  raise ValueError('Profession "otro" is not allowed')
546
553
  return profession
547
554
 
555
+ @field_validator('govt_id')
556
+ @classmethod
557
+ def validate_govt_id(cls, govt_id: KYCFile) -> KYCFile:
558
+ if govt_id and govt_id.type in DOCS_WITH_BACK and not govt_id.uri_back:
559
+ error = f'uri_back must be provided for type {govt_id.type.value}'
560
+ raise ValueError(error)
561
+ return govt_id
562
+
548
563
 
549
564
  class UserLoginRequest(BaseRequest):
550
565
  password: Annotated[
@@ -0,0 +1 @@
1
+ __version__ = '2.1.23'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.21.dev1
3
+ Version: 2.1.23
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -27,3 +27,10 @@ def test_multiple_generators():
27
27
  assert uuid1.startswith('CA')
28
28
  assert uuid2.startswith('TR')
29
29
  assert uuid1 != uuid2
30
+
31
+
32
+ def test_sanitized_uuid():
33
+ generator = uuid_field('US')
34
+ uuid_str = generator()
35
+ assert "-" not in uuid_str
36
+ assert "_" not in uuid_str
@@ -44,3 +44,12 @@ def test_extra_params_are_not_allowed():
44
44
  with pytest.raises(ValueError) as ex:
45
45
  UserUpdateRequest(foo='bar')
46
46
  assert 'Extra inputs are not permitted' in str(ex.value)
47
+
48
+
49
+ def test_update_user_update_govt() -> None:
50
+ govt_id: DictStrAny = {
51
+ "govt_id": {"type": "ine", "uri_front": "files/123"}
52
+ }
53
+ with pytest.raises(ValueError) as ex:
54
+ UserUpdateRequest(**govt_id)
55
+ assert 'uri_back must be provided for type ine' in str(ex.value)
@@ -1 +0,0 @@
1
- __version__ = '2.1.21.dev1'