cuenca-validations 2.0.3.dev2__py3-none-any.whl → 2.0.4.dev1__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.
@@ -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,
@@ -78,3 +78,9 @@ names_state = {
78
78
 
79
79
  def get_state_name(state: State):
80
80
  return names_state[state]
81
+
82
+
83
+ class Metadata:
84
+ def __init__(self, sensitive: bool, log_chars: int = 0):
85
+ self.sensitive = sensitive
86
+ self.log_chars = log_chars
@@ -1 +1 @@
1
- __version__ = '2.0.3.dev2'
1
+ __version__ = '2.0.4.dev01'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: cuenca_validations
3
- Version: 2.0.3.dev2
3
+ Version: 2.0.4.dev1
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -4,12 +4,12 @@ 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=njlhSWStaNBqkWgoHiIN-idmSczDgTYzbajeOxofLEY,27
8
- cuenca_validations/types/__init__.py,sha256=4xjEu92oblZkz0wZw9jb_ZK9L_lOkK0_4pi5PYS2LsA,4751
7
+ cuenca_validations/version.py,sha256=bjH6r8gfpb0UFXLhSXMxhlD9-7NZvJiA-Axm1hLSHAQ,28
8
+ cuenca_validations/types/__init__.py,sha256=6Ar8oHXmWUZNnGLFdb_NLnkILzCGBbSzb7-I1b7Ov20,4781
9
9
  cuenca_validations/types/card.py,sha256=UGzz8NTFAverUmdUKAK1oGHnOnjSNTpIRUm93vKSSGY,1295
10
10
  cuenca_validations/types/enums.py,sha256=1ACr7I1iknXfm49y0YeP2sY1ZdZfreFC5cV4_6OJCw8,18825
11
11
  cuenca_validations/types/files.py,sha256=8-8vPKywxdZYGBIZ5tAQcK1EHtbiqCOMNy89OORzB_Y,225
12
- cuenca_validations/types/general.py,sha256=Dc_QlSJxgFo7Y9V8rWQ6u0jFKSRsMZP1V3OaeaL5SU8,1904
12
+ cuenca_validations/types/general.py,sha256=fKoUorvBAh84mqokQq6j-cUPBWaNYTGUN-ZpiKDFG00,2053
13
13
  cuenca_validations/types/helpers.py,sha256=1_YCrAqL0lttrGOv3slc_MJ-bvETOwLv0NGIH-6lDlM,274
14
14
  cuenca_validations/types/identities.py,sha256=TivJcz0I_zolAWXZB3RTwt80OUAyW_wGdCL_6VJlxSM,4735
15
15
  cuenca_validations/types/morals.py,sha256=m8kAedevmwfSPTA9GYe03l7pkgipynwYgKfejyVtnuI,1813
@@ -20,9 +20,9 @@ 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=JCWJG-McORIdvsnuWuOaujwPRIWTAhU8wNAwJMqv480,15742
24
- cuenca_validations-2.0.3.dev2.dist-info/LICENSE,sha256=wR76FmxBbfnQpwELkkE5iMF8sFIafEMgXLTE4N4WPTc,1063
25
- cuenca_validations-2.0.3.dev2.dist-info/METADATA,sha256=-MN2fuwbhvD--uIWVRC93y6iqTgIx6HWbX_Pg8lToBI,1577
26
- cuenca_validations-2.0.3.dev2.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
27
- cuenca_validations-2.0.3.dev2.dist-info/top_level.txt,sha256=4233xdOs2HtuT-GFRjcDcwK0IwdwvWdczOtk0fPB6Gw,25
28
- cuenca_validations-2.0.3.dev2.dist-info/RECORD,,
23
+ tests/test_types.py,sha256=gGuJKICpVBb_CfhT0G7NO_GnL9Op_ufQrTXY-XGvbak,16470
24
+ cuenca_validations-2.0.4.dev1.dist-info/LICENSE,sha256=wR76FmxBbfnQpwELkkE5iMF8sFIafEMgXLTE4N4WPTc,1063
25
+ cuenca_validations-2.0.4.dev1.dist-info/METADATA,sha256=WuEdanXbvNX8veSgN65U7dOVeYrYL6eH728-I6uWN-c,1577
26
+ cuenca_validations-2.0.4.dev1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
27
+ cuenca_validations-2.0.4.dev1.dist-info/top_level.txt,sha256=4233xdOs2HtuT-GFRjcDcwK0IwdwvWdczOtk0fPB6Gw,25
28
+ cuenca_validations-2.0.4.dev1.dist-info/RECORD,,
tests/test_types.py CHANGED
@@ -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"