cuenca-validations 2.0.4.dev2__tar.gz → 2.0.5.dev2__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.
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/PKG-INFO +1 -1
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/__init__.py +2 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/files.py +2 -2
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/general.py +9 -6
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/requests.py +7 -7
- cuenca_validations-2.0.5.dev2/cuenca_validations/version.py +1 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations.egg-info/PKG-INFO +1 -1
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/tests/test_types.py +23 -1
- cuenca_validations-2.0.4.dev2/cuenca_validations/version.py +0 -1
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/LICENSE +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/README.md +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/__init__.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/card_bins.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/errors.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/py.typed +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/card.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/enums.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/helpers.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/identities.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/morals.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/queries.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/typing.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/validators.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations.egg-info/SOURCES.txt +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations.egg-info/dependency_links.txt +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations.egg-info/requires.txt +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations.egg-info/top_level.txt +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/setup.cfg +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/setup.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/tests/__init__.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/tests/test_card.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/tests/test_errors.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/tests/test_helpers.py +0 -0
- {cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/tests/test_statement.py +0 -0
{cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/__init__.py
RENAMED
|
@@ -104,6 +104,7 @@ __all__ = [
|
|
|
104
104
|
'digits',
|
|
105
105
|
'get_state_name',
|
|
106
106
|
'uuid_field',
|
|
107
|
+
'Metadata',
|
|
107
108
|
]
|
|
108
109
|
|
|
109
110
|
from .card import StrictPaymentCardNumber
|
|
@@ -152,6 +153,7 @@ from .enums import (
|
|
|
152
153
|
from .files import BatchFileMetadata
|
|
153
154
|
from .general import (
|
|
154
155
|
JSONEncoder,
|
|
156
|
+
Metadata,
|
|
155
157
|
SantizedDict,
|
|
156
158
|
StrictPositiveInt,
|
|
157
159
|
digits,
|
{cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/files.py
RENAMED
|
@@ -3,11 +3,11 @@ from typing import Optional
|
|
|
3
3
|
from pydantic import BaseModel
|
|
4
4
|
|
|
5
5
|
from .enums import KYCFileType
|
|
6
|
-
from .general import
|
|
6
|
+
from .general import SerializableHttpUrl
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class BatchFileMetadata(BaseModel):
|
|
10
10
|
id: Optional[str] = None
|
|
11
11
|
is_back: bool
|
|
12
12
|
type: KYCFileType
|
|
13
|
-
url:
|
|
13
|
+
url: SerializableHttpUrl
|
{cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/general.py
RENAMED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import json
|
|
2
|
+
from dataclasses import dataclass
|
|
2
3
|
from typing import Annotated, Any, Optional
|
|
3
4
|
|
|
4
5
|
from pydantic import AnyUrl, Field, HttpUrl, PlainSerializer, StringConstraints
|
|
@@ -6,13 +7,9 @@ from pydantic import AnyUrl, Field, HttpUrl, PlainSerializer, StringConstraints
|
|
|
6
7
|
from ..validators import sanitize_dict, sanitize_item
|
|
7
8
|
from .enums import State
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
HttpUrl, PlainSerializer(lambda x: x.unicode_string(), return_type=str)
|
|
11
|
-
]
|
|
10
|
+
SerializableHttpUrl = Annotated[HttpUrl, PlainSerializer(str, return_type=str)]
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
AnyUrl, PlainSerializer(lambda x: x.unicode_string(), return_type=str)
|
|
15
|
-
]
|
|
12
|
+
SerializableAnyUrl = Annotated[AnyUrl, PlainSerializer(str, return_type=str)]
|
|
16
13
|
|
|
17
14
|
|
|
18
15
|
class SantizedDict(dict):
|
|
@@ -86,3 +83,9 @@ names_state = {
|
|
|
86
83
|
|
|
87
84
|
def get_state_name(state: State):
|
|
88
85
|
return names_state[state]
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
@dataclass
|
|
89
|
+
class Metadata:
|
|
90
|
+
sensitive: bool
|
|
91
|
+
log_chars: int = 0
|
{cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/requests.py
RENAMED
|
@@ -54,7 +54,7 @@ from .card import (
|
|
|
54
54
|
PaymentCardNumber,
|
|
55
55
|
StrictPaymentCardNumber,
|
|
56
56
|
)
|
|
57
|
-
from .general import
|
|
57
|
+
from .general import SerializableAnyUrl, SerializableHttpUrl, StrictPositiveInt
|
|
58
58
|
from .identities import (
|
|
59
59
|
Address,
|
|
60
60
|
Beneficiary,
|
|
@@ -477,7 +477,7 @@ class UserUpdateRequest(BaseModel):
|
|
|
477
477
|
status: Optional[UserStatus] = None
|
|
478
478
|
terms_of_service: Optional[TOSRequest] = None
|
|
479
479
|
platform_terms_of_service: Optional[TOSAgreement] = None
|
|
480
|
-
curp_document_uri: Optional[
|
|
480
|
+
curp_document_uri: Optional[SerializableHttpUrl] = None
|
|
481
481
|
|
|
482
482
|
@field_validator('beneficiaries')
|
|
483
483
|
@classmethod
|
|
@@ -500,8 +500,8 @@ class UserLoginRequest(BaseRequest):
|
|
|
500
500
|
class SessionRequest(BaseRequest):
|
|
501
501
|
user_id: str
|
|
502
502
|
type: SessionType
|
|
503
|
-
success_url: Optional[
|
|
504
|
-
failure_url: Optional[
|
|
503
|
+
success_url: Optional[SerializableAnyUrl] = None
|
|
504
|
+
failure_url: Optional[SerializableAnyUrl] = None
|
|
505
505
|
model_config = ConfigDict(
|
|
506
506
|
json_schema_extra={
|
|
507
507
|
'example': {
|
|
@@ -515,13 +515,13 @@ class SessionRequest(BaseRequest):
|
|
|
515
515
|
|
|
516
516
|
|
|
517
517
|
class EndpointRequest(BaseRequest):
|
|
518
|
-
url:
|
|
518
|
+
url: SerializableHttpUrl
|
|
519
519
|
events: Optional[list[WebhookEvent]] = None
|
|
520
520
|
user_id: Optional[str] = None
|
|
521
521
|
|
|
522
522
|
|
|
523
523
|
class EndpointUpdateRequest(BaseRequest):
|
|
524
|
-
url: Optional[
|
|
524
|
+
url: Optional[SerializableHttpUrl] = None
|
|
525
525
|
is_enable: Optional[bool] = None
|
|
526
526
|
events: Optional[list[WebhookEvent]] = None
|
|
527
527
|
|
|
@@ -536,7 +536,7 @@ class FileUploadRequest(BaseRequest):
|
|
|
536
536
|
|
|
537
537
|
class FileRequest(BaseModel):
|
|
538
538
|
is_back: Optional[bool] = False
|
|
539
|
-
url:
|
|
539
|
+
url: SerializableHttpUrl
|
|
540
540
|
type: KYCFileType
|
|
541
541
|
|
|
542
542
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '2.0.5.dev2'
|
|
@@ -2,6 +2,7 @@ import datetime as dt
|
|
|
2
2
|
import json
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from enum import Enum
|
|
5
|
+
from typing import Annotated
|
|
5
6
|
|
|
6
7
|
import pytest
|
|
7
8
|
from freezegun import freeze_time
|
|
@@ -24,7 +25,7 @@ from cuenca_validations.types.enums import (
|
|
|
24
25
|
SessionType,
|
|
25
26
|
State,
|
|
26
27
|
)
|
|
27
|
-
from cuenca_validations.types.general import StrictPositiveInt
|
|
28
|
+
from cuenca_validations.types.general import Metadata, StrictPositiveInt
|
|
28
29
|
from cuenca_validations.types.requests import (
|
|
29
30
|
ApiKeyUpdateRequest,
|
|
30
31
|
BankAccountValidationRequest,
|
|
@@ -586,3 +587,24 @@ class IntModel(BaseModel):
|
|
|
586
587
|
def test_strict_positive_int_invalid(value, expected_error, expected_message):
|
|
587
588
|
with pytest.raises(expected_error, match=expected_message):
|
|
588
589
|
IntModel(value=value)
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
class MetadataModel(BaseModel):
|
|
593
|
+
secret: Annotated[str, Metadata(sensitive=True)]
|
|
594
|
+
partial_secret: Annotated[str, Metadata(sensitive=True, log_chars=4)]
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
def test_metadata():
|
|
598
|
+
model = MetadataModel(secret="super-secret", partial_secret="1234567890")
|
|
599
|
+
|
|
600
|
+
secret_field = MetadataModel.model_fields["secret"]
|
|
601
|
+
partial_field = MetadataModel.model_fields["partial_secret"]
|
|
602
|
+
|
|
603
|
+
assert secret_field.metadata[0].sensitive is True
|
|
604
|
+
assert secret_field.metadata[0].log_chars == 0
|
|
605
|
+
|
|
606
|
+
assert partial_field.metadata[0].sensitive is True
|
|
607
|
+
assert partial_field.metadata[0].log_chars == 4
|
|
608
|
+
|
|
609
|
+
assert model.secret == "super-secret"
|
|
610
|
+
assert model.partial_secret == "1234567890"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '2.0.4.dev02'
|
|
File without changes
|
|
File without changes
|
{cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/__init__.py
RENAMED
|
File without changes
|
{cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/card_bins.py
RENAMED
|
File without changes
|
{cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/errors.py
RENAMED
|
File without changes
|
|
File without changes
|
{cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/card.py
RENAMED
|
File without changes
|
{cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/enums.py
RENAMED
|
File without changes
|
{cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
{cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/morals.py
RENAMED
|
File without changes
|
{cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/types/queries.py
RENAMED
|
File without changes
|
{cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/typing.py
RENAMED
|
File without changes
|
{cuenca_validations-2.0.4.dev2 → cuenca_validations-2.0.5.dev2}/cuenca_validations/validators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|