cuenca-validations 2.1.16.dev6__py3-none-any.whl → 2.1.16.dev7__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.
@@ -110,6 +110,10 @@ __all__ = [
110
110
  'WebhookEvent',
111
111
  'digits',
112
112
  'get_state_name',
113
+ 'get_profession_name',
114
+ 'get_account_use_type_name',
115
+ 'get_monthly_movements_type_name',
116
+ 'get_monthly_spending_type_name',
113
117
  'uuid_field',
114
118
  'LogConfig',
115
119
  ]
@@ -169,6 +173,10 @@ from .general import (
169
173
  SantizedDict,
170
174
  StrictPositiveInt,
171
175
  digits,
176
+ get_account_use_type_name,
177
+ get_monthly_movements_type_name,
178
+ get_monthly_spending_type_name,
179
+ get_profession_name,
172
180
  get_state_name,
173
181
  )
174
182
  from .helpers import uuid_field
@@ -691,39 +691,39 @@ class SATRegimeCode(str, Enum):
691
691
 
692
692
 
693
693
  class Profession(str, Enum):
694
- artisticas = 'Actividades Artísticas'
695
- agropecuario = 'Agricultura, Ganadería o Pesca'
696
- comercio = 'Comercio'
697
- estudiante = 'Estudiante'
698
- empleado = 'Empleado(a/e)'
699
- emprendimiento = 'Emprendimiento'
700
- hogar = 'Hogar'
701
- profesor = 'Profesor(a/e)'
702
- profesionista = 'Profesionista'
703
- servidor_publico = 'Servidor(a/e) Público'
704
- sistemas = 'Sistemas y Comunicaciones'
705
- independiente = 'Trabajador(a/e) Independiente'
706
- oficios = 'Oficios Varios'
694
+ artisticas = 'artisticas'
695
+ agropecuario = 'agropecuario'
696
+ comercio = 'comercio'
697
+ estudiante = 'estudiante'
698
+ empleado = 'empleado'
699
+ emprendimiento = 'emprendimiento'
700
+ hogar = 'hogar'
701
+ profesor = 'profesor'
702
+ profesionista = 'profesionista'
703
+ servidor_publico = 'servidor_publico'
704
+ sistemas = 'sistemas'
705
+ independiente = 'independiente'
706
+ oficios = 'oficios'
707
707
 
708
708
 
709
709
  class AccountUseTypes(str, Enum):
710
- personal_expenses = 'Gastos personales o familiares'
711
- business_expenses = 'Gastos relacionados con tu actividad económica'
712
- payment_of_goods_or_services = 'Pago de bienes o servicios'
713
- send_or_receive_transfers = 'Enviar o recibir transferencias'
710
+ personal_expenses = 'personal_expenses'
711
+ business_expenses = 'business_expenses'
712
+ payment_of_goods_or_services = 'payment_of_goods_or_services'
713
+ send_or_receive_transfers = 'send_or_receive_transfers'
714
714
 
715
715
 
716
716
  class MonthlyMovementsTypes(str, Enum):
717
- between_1_and_20 = 'Entre 1 y 20 movimientos'
718
- between_20_and_40 = 'Entre 20 y 40 movimientos'
719
- between_40_and_60 = 'Entre 40 y 60 movimientos'
720
- more_than_60 = 'Más de 60 movimientos'
717
+ between_1_and_20 = 'between_1_and_20'
718
+ between_20_and_40 = 'between_20_and_40'
719
+ between_40_and_60 = 'between_40_and_60'
720
+ more_than_60 = 'more_than_60'
721
721
 
722
722
 
723
723
  class MonthlySpendingTypes(str, Enum):
724
- less_than_1k = 'Menos de $1,000'
725
- between_1k_and_10k = 'Entre $1,000 y $10,000'
726
- between_10k_and_20k = 'Entre $10,000 y $20,000'
727
- between_20k_and_50k = 'Entre $20,000 y $50,000'
728
- between_50k_and_100k = 'Entre $50,000 y $100,000'
729
- more_than_100k = 'Más de $100,000'
724
+ less_than_1k = 'less_than_1k'
725
+ between_1k_and_10k = 'between_1k_and_10k'
726
+ between_10k_and_20k = 'between_10k_and_20k'
727
+ between_20k_and_50k = 'between_20k_and_50k'
728
+ between_50k_and_100k = 'between_50k_and_100k'
729
+ more_than_100k = 'more_than_100k'
@@ -12,7 +12,13 @@ from pydantic import (
12
12
  )
13
13
 
14
14
  from ..validators import sanitize_dict, sanitize_item
15
- from .enums import State
15
+ from .enums import (
16
+ AccountUseTypes,
17
+ MonthlyMovementsTypes,
18
+ MonthlySpendingTypes,
19
+ Profession,
20
+ State,
21
+ )
16
22
 
17
23
  # We use custom serializers for IP addresses and URLs because
18
24
  # Pydantic's IPvAnyAddress, AnyUrl, HttpUrl types are not JSON serializable.
@@ -96,10 +102,77 @@ names_state = {
96
102
  }
97
103
 
98
104
 
99
- def get_state_name(state: State):
105
+ def get_state_name(state: State) -> str:
100
106
  return names_state[state]
101
107
 
102
108
 
109
+ names_professions = {
110
+ Profession.artisticas: 'Actividades Artísticas',
111
+ Profession.agropecuario: 'Agricultura, Ganadería o Pesca',
112
+ Profession.comercio: 'Comercio',
113
+ Profession.estudiante: 'Estudiante',
114
+ Profession.empleado: 'Empleado(a/e)',
115
+ Profession.emprendimiento: 'Emprendimiento',
116
+ Profession.hogar: 'Hogar',
117
+ Profession.profesor: 'Profesor(a/e)',
118
+ Profession.profesionista: 'Profesionista',
119
+ Profession.servidor_publico: 'Servidor(a/e) Público',
120
+ Profession.sistemas: 'Sistemas y Comunicaciones',
121
+ Profession.independiente: 'Trabajador(a/e) Independiente',
122
+ Profession.oficios: 'Oficios Varios',
123
+ }
124
+
125
+
126
+ def get_profession_name(profession: Profession) -> str:
127
+ return names_professions[profession]
128
+
129
+
130
+ names_account_use_types = {
131
+ AccountUseTypes.personal_expenses: 'Gastos personales o familiares',
132
+ AccountUseTypes.business_expenses: (
133
+ 'Gastos relacionados con tu actividad económica'
134
+ ),
135
+ AccountUseTypes.payment_of_goods_or_services: 'Pago de bienes o servicios',
136
+ AccountUseTypes.send_or_receive_transfers: (
137
+ 'Enviar o recibir transferencias'
138
+ ),
139
+ }
140
+
141
+
142
+ def get_account_use_type_name(account_use_type: AccountUseTypes) -> str:
143
+ return names_account_use_types[account_use_type]
144
+
145
+
146
+ names_monthly_movements_types = {
147
+ MonthlyMovementsTypes.between_1_and_20: 'Entre 1 y 20 movimientos',
148
+ MonthlyMovementsTypes.between_20_and_40: 'Entre 20 y 40 movimientos',
149
+ MonthlyMovementsTypes.between_40_and_60: 'Entre 40 y 60 movimientos',
150
+ MonthlyMovementsTypes.more_than_60: 'Más de 60 movimientos',
151
+ }
152
+
153
+
154
+ def get_monthly_movements_type_name(
155
+ monthly_movements_type: MonthlyMovementsTypes,
156
+ ) -> str:
157
+ return names_monthly_movements_types[monthly_movements_type]
158
+
159
+
160
+ names_monthly_spending_types = {
161
+ MonthlySpendingTypes.less_than_1k: 'Menos de $1,000',
162
+ MonthlySpendingTypes.between_1k_and_10k: 'Entre $1,000 y $10,000',
163
+ MonthlySpendingTypes.between_10k_and_20k: 'Entre $10,000 y $20,000',
164
+ MonthlySpendingTypes.between_20k_and_50k: 'Entre $20,000 y $50,000',
165
+ MonthlySpendingTypes.between_50k_and_100k: 'Entre $50,000 y $100,000',
166
+ MonthlySpendingTypes.more_than_100k: 'Más de $100,000',
167
+ }
168
+
169
+
170
+ def get_monthly_spending_type_name(
171
+ monthly_spending_type: MonthlySpendingTypes,
172
+ ) -> str:
173
+ return names_monthly_spending_types[monthly_spending_type]
174
+
175
+
103
176
  @dataclass
104
177
  class LogConfig:
105
178
  masked: bool = False
@@ -1 +1 @@
1
- __version__ = '2.1.16.dev6'
1
+ __version__ = '2.1.16.dev7'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.16.dev6
3
+ Version: 2.1.16.dev7
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -4,26 +4,26 @@ 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=mYJDXxJVokl5jZIA4FYn8wkaMUnOxAH54t1Pfg_0kmQ,1190
7
- cuenca_validations/version.py,sha256=RyZVaGq9XAL49PksF_VU1U5C0lU1ICPsbkn__qW4HDU,28
8
- cuenca_validations/types/__init__.py,sha256=baGwT90LP2Ro-YKa7J-mttT6TAAG_Ye5PLUJMoAJl2I,5067
7
+ cuenca_validations/version.py,sha256=qawF-kLYMYXIdqgBiQeMWY7wduiaZwKXQfTbMP0E7H8,28
8
+ cuenca_validations/types/__init__.py,sha256=Wy9HGpF_V12DnMqd5PUYUpReGVhvpALzrxFP7UL5L54,5333
9
9
  cuenca_validations/types/card.py,sha256=UGzz8NTFAverUmdUKAK1oGHnOnjSNTpIRUm93vKSSGY,1295
10
- cuenca_validations/types/enums.py,sha256=N4mE2P2PxTWLrI4nRZTcz-f1hdaYiJwHKfEvHOfJdfU,20373
10
+ cuenca_validations/types/enums.py,sha256=Fi6SzVavV6gdvIC1lQXdX1VlPjTgK-XxNEHCpEzSuFs,20183
11
11
  cuenca_validations/types/files.py,sha256=2CszbwF9ytXV9suFFwyDjYG4XxY8UhCjRw3HttVXXNw,269
12
- cuenca_validations/types/general.py,sha256=VtXzz24IJ7AQfLyxVAEOesGYC70ZLEU-ANRUpCOii4E,2622
12
+ cuenca_validations/types/general.py,sha256=OiFdzFc5pIoXB0Tmm3IAIfdGP0-5GaeVwvfzHNypTo8,5092
13
13
  cuenca_validations/types/helpers.py,sha256=XPiYVTLDtmBB5R1heWUy1c35zZMh7nh-BmS6rtwEltg,1379
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=Pp7BAPk20hzImxb5EIiy3oI8S6AeCruU-NbQpOlrWVo,5146
17
17
  cuenca_validations/types/requests.py,sha256=WDibEaZS94YLjRDY6oS7Wr7KZba6MwHSWxYENSXUk6I,21581
18
- cuenca_validations-2.1.16.dev6.dist-info/licenses/LICENSE,sha256=wR76FmxBbfnQpwELkkE5iMF8sFIafEMgXLTE4N4WPTc,1063
18
+ cuenca_validations-2.1.16.dev7.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=bqAKoJBQjZq5OISB-pBO_Rcg--aG0dHowzhSl2FrlQM,19047
26
- cuenca_validations-2.1.16.dev6.dist-info/METADATA,sha256=efGjC5wFX3xGERmNI3fm7VPrq-DHjvzyZqwViXtS32k,1600
27
- cuenca_validations-2.1.16.dev6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
28
- cuenca_validations-2.1.16.dev6.dist-info/top_level.txt,sha256=4233xdOs2HtuT-GFRjcDcwK0IwdwvWdczOtk0fPB6Gw,25
29
- cuenca_validations-2.1.16.dev6.dist-info/RECORD,,
25
+ tests/test_types.py,sha256=5q1BJhismfrmJ29LNlwa0DoGxKkMWyo6xc3Z6cwc1Wo,19917
26
+ cuenca_validations-2.1.16.dev7.dist-info/METADATA,sha256=tGB4yBUb71KHedabhMp6T5MG2OxDF82osGgr6lhQKlY,1600
27
+ cuenca_validations-2.1.16.dev7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
28
+ cuenca_validations-2.1.16.dev7.dist-info/top_level.txt,sha256=4233xdOs2HtuT-GFRjcDcwK0IwdwvWdczOtk0fPB6Gw,25
29
+ cuenca_validations-2.1.16.dev7.dist-info/RECORD,,
tests/test_types.py CHANGED
@@ -17,10 +17,17 @@ from cuenca_validations.types import (
17
17
  SessionRequest,
18
18
  TransactionStatus,
19
19
  digits,
20
+ get_account_use_type_name,
21
+ get_monthly_movements_type_name,
22
+ get_monthly_spending_type_name,
23
+ get_profession_name,
20
24
  get_state_name,
21
25
  )
22
26
  from cuenca_validations.types.enums import (
27
+ AccountUseTypes,
23
28
  EcommerceIndicator,
29
+ MonthlyMovementsTypes,
30
+ MonthlySpendingTypes,
24
31
  Profession,
25
32
  SessionType,
26
33
  State,
@@ -544,10 +551,35 @@ def test_limited_wallet_request():
544
551
  assert LimitedWalletRequest(allowed_curp=curp, allowed_rfc=rfc)
545
552
 
546
553
 
547
- def test_get_state_name():
554
+ def test_get_state_name() -> None:
548
555
  assert get_state_name(State.VZ) == 'Veracruz'
549
556
 
550
557
 
558
+ def test_get_profession_name() -> None:
559
+ assert get_profession_name(Profession.empleado) == 'Empleado(a/e)'
560
+
561
+
562
+ def test_get_account_use_type_name() -> None:
563
+ assert (
564
+ get_account_use_type_name(AccountUseTypes.personal_expenses)
565
+ == 'Gastos personales o familiares'
566
+ )
567
+
568
+
569
+ def test_get_monthly_spending_type_name() -> None:
570
+ assert (
571
+ get_monthly_spending_type_name(MonthlySpendingTypes.less_than_1k)
572
+ == 'Menos de $1,000'
573
+ )
574
+
575
+
576
+ def test_get_monthly_movements_type_name() -> None:
577
+ assert (
578
+ get_monthly_movements_type_name(MonthlyMovementsTypes.between_1_and_20)
579
+ == 'Entre 1 y 20 movimientos'
580
+ )
581
+
582
+
551
583
  def test_bank_account_validation_clabe_request():
552
584
  assert BankAccountValidationRequest(account_number='646180157098510917')
553
585