cuenca-validations 2.1.9.dev2__tar.gz → 2.1.10__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.9.dev2 → cuenca_validations-2.1.10}/PKG-INFO +1 -1
  2. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/types/queries.py +2 -0
  3. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/types/requests.py +23 -1
  4. cuenca_validations-2.1.10/cuenca_validations/version.py +1 -0
  5. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations.egg-info/PKG-INFO +1 -1
  6. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations.egg-info/SOURCES.txt +1 -0
  7. cuenca_validations-2.1.10/tests/test_requests.py +31 -0
  8. cuenca_validations-2.1.9.dev2/cuenca_validations/version.py +0 -1
  9. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/LICENSE +0 -0
  10. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/README.md +0 -0
  11. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/__init__.py +0 -0
  12. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/card_bins.py +0 -0
  13. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/errors.py +0 -0
  14. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/py.typed +0 -0
  15. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/types/__init__.py +0 -0
  16. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/types/card.py +0 -0
  17. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/types/enums.py +0 -0
  18. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/types/files.py +0 -0
  19. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/types/general.py +0 -0
  20. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/types/helpers.py +0 -0
  21. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/types/identities.py +0 -0
  22. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/types/morals.py +0 -0
  23. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/typing.py +0 -0
  24. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations/validators.py +0 -0
  25. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations.egg-info/dependency_links.txt +0 -0
  26. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations.egg-info/requires.txt +0 -0
  27. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/cuenca_validations.egg-info/top_level.txt +0 -0
  28. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/setup.cfg +0 -0
  29. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/setup.py +0 -0
  30. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/tests/__init__.py +0 -0
  31. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/tests/test_card.py +0 -0
  32. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/tests/test_errors.py +0 -0
  33. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/tests/test_helpers.py +0 -0
  34. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/tests/test_statement.py +0 -0
  35. {cuenca_validations-2.1.9.dev2 → cuenca_validations-2.1.10}/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.9.dev2
3
+ Version: 2.1.10
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -175,6 +175,8 @@ class SessionQuery(QueryParams):
175
175
 
176
176
  class FileQuery(QueryParams):
177
177
  type: Optional[KYCFileType] = None
178
+ id: Optional[str] = None
179
+ user_id: Optional[str] = None
178
180
 
179
181
 
180
182
  class BankAccountValidationQuery(QueryParams):
@@ -1,5 +1,5 @@
1
1
  import datetime as dt
2
- from typing import Annotated, Optional, Union
2
+ from typing import Annotated, Any, Optional, Union
3
3
 
4
4
  from clabe import Clabe
5
5
  from pydantic import (
@@ -7,11 +7,13 @@ from pydantic import (
7
7
  ConfigDict,
8
8
  EmailStr,
9
9
  Field,
10
+ GetCoreSchemaHandler,
10
11
  StrictStr,
11
12
  StringConstraints,
12
13
  field_validator,
13
14
  model_validator,
14
15
  )
16
+ from pydantic_core import core_schema
15
17
  from pydantic_extra_types.coordinate import Coordinate
16
18
 
17
19
  from ..types.enums import (
@@ -82,6 +84,10 @@ from .morals import (
82
84
  VulnerableActivityDetails,
83
85
  )
84
86
 
87
+ CUENCA_FILE_URL = (
88
+ r'^https:\/\/(?:stage|sandbox|api)\.cuenca\.com\/files\/([a-zA-Z0-9\-]+)$'
89
+ )
90
+
85
91
 
86
92
  class BaseRequest(BaseModel):
87
93
  model_config = ConfigDict(extra="forbid")
@@ -403,9 +409,25 @@ class TOSRequest(BaseModel):
403
409
  ip: Optional[SerializableIPvAnyAddress] = None
404
410
 
405
411
 
412
+ class FileCuencaUrl(str):
413
+
414
+ @property
415
+ def file_id(self) -> str:
416
+ return self.split('/')[-1]
417
+
418
+ @classmethod
419
+ def __get_pydantic_core_schema__(
420
+ cls, _source_type: Any, _handler: GetCoreSchemaHandler
421
+ ) -> core_schema.CoreSchema:
422
+ return core_schema.no_info_after_validator_function(
423
+ cls, core_schema.str_schema(pattern=CUENCA_FILE_URL)
424
+ )
425
+
426
+
406
427
  class UserTOSAgreementRequest(BaseModel):
407
428
  tos_id: str
408
429
  location: Coordinate
430
+ signature_image_url: Optional[FileCuencaUrl] = None
409
431
 
410
432
 
411
433
  class UserRequest(BaseModel):
@@ -0,0 +1 @@
1
+ __version__ = '2.1.10'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.9.dev2
3
+ Version: 2.1.10
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -28,5 +28,6 @@ tests/__init__.py
28
28
  tests/test_card.py
29
29
  tests/test_errors.py
30
30
  tests/test_helpers.py
31
+ tests/test_requests.py
31
32
  tests/test_statement.py
32
33
  tests/test_types.py
@@ -0,0 +1,31 @@
1
+ import pytest
2
+ from pydantic import ValidationError
3
+
4
+ from cuenca_validations.types.requests import UserTOSAgreementRequest
5
+ from cuenca_validations.typing import DictStrAny
6
+
7
+
8
+ @pytest.mark.parametrize('environment', ['stage', 'sandbox', 'api'])
9
+ def test_file_cuenca_url(environment: str) -> None:
10
+ request_data: DictStrAny = dict(
11
+ tos_id='TS67dcae8e74e81bba5a77bf47',
12
+ location=(19.432607, -99.133209),
13
+ signature_image_url=(
14
+ f'https://{environment}.cuenca.com/files/EFQL87ohvoRp-PkOTYgvQYFA'
15
+ ),
16
+ )
17
+ utos = UserTOSAgreementRequest(**request_data)
18
+ assert utos.signature_image_url is not None
19
+ assert utos.signature_image_url.file_id == 'EFQL87ohvoRp-PkOTYgvQYFA'
20
+
21
+
22
+ def test_file_cuenca_url_invalid() -> None:
23
+ request_data: DictStrAny = dict(
24
+ tos_id='TS67dcae8e74e81bba5a77bf47',
25
+ location=(19.432607, -99.133209),
26
+ signature_image_url=(
27
+ 'https://cuenca.com/files/EFQL87ohvoRp-PkOTYgvQYFA/invalid'
28
+ ),
29
+ )
30
+ with pytest.raises(ValidationError):
31
+ UserTOSAgreementRequest(**request_data)
@@ -1 +0,0 @@
1
- __version__ = '2.1.9.dev2'