ul-api-utils 8.1.17__py3-none-any.whl → 8.1.18__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.

Potentially problematic release.


This version of ul-api-utils might be problematic. Click here for more details.

@@ -165,7 +165,7 @@ class ApiResourceFnTyping(NamedTuple):
165
165
  return kwargs, errors
166
166
  body = self._get_body()
167
167
  try:
168
- expected_typing: Type[BaseModel | List[BaseModel]] = List[self.body_typing] if self.request_body_many else self.body_typing
168
+ expected_typing: Type[BaseModel | List[BaseModel]] = List[self.body_typing] if self.request_body_many else self.body_typing # type: ignore
169
169
  kwargs['body'] = TypeAdapter(expected_typing).validate_python(body)
170
170
  except ValidationError as ve:
171
171
  if self.has_body_validation_error:
@@ -2,7 +2,7 @@ import dataclasses
2
2
  import decimal
3
3
  import json
4
4
  from base64 import b64encode
5
- from datetime import date, datetime
5
+ from datetime import date, datetime, time
6
6
  from enum import Enum
7
7
  from json import JSONEncoder
8
8
  from typing import Dict, Any, Union, List, Optional, TYPE_CHECKING
@@ -62,6 +62,8 @@ class CustomJSONEncoder(JSONEncoder):
62
62
  return str(obj.isoformat())
63
63
  if isinstance(obj, date):
64
64
  return str(obj.isoformat())
65
+ if isinstance(obj, time):
66
+ return str(obj.isoformat())
65
67
  if isinstance(obj, UUID):
66
68
  return str(obj)
67
69
  if isinstance(obj, Enum):
@@ -59,8 +59,6 @@ class QueryParamsSeparatedList(Generic[QueryParamsSeparatedListValueType]):
59
59
  if cls._contains_type is None:
60
60
  raise TypeError("QueryParamsSeparatedList must be parameterized with a type, e.g., QueryParamsSeparatedList[int]")
61
61
 
62
- adapter = TypeAdapter(cls._contains_type)
63
-
64
62
  if not isinstance(query_param, list):
65
63
  query_param = [query_param]
66
64
 
@@ -72,7 +70,14 @@ class QueryParamsSeparatedList(Generic[QueryParamsSeparatedListValueType]):
72
70
 
73
71
  for idx, value in enumerate(splitted):
74
72
  try:
75
- validated_items.append(adapter.validate_python(value))
73
+ if cls._contains_type == Union[int, str]:
74
+ try:
75
+ validated_items.append(int(value))
76
+ except ValueError:
77
+ validated_items.append(value) # type: ignore
78
+ else:
79
+ adapter = TypeAdapter(cls._contains_type)
80
+ validated_items.append(adapter.validate_python(value))
76
81
  except ValidationError as e:
77
82
  for error in e.errors(include_url=False):
78
83
  error['loc'] = ('param', idx)
@@ -81,4 +86,4 @@ class QueryParamsSeparatedList(Generic[QueryParamsSeparatedListValueType]):
81
86
  if errors:
82
87
  raise ValidationError.from_exception_data("List validation error", errors)
83
88
 
84
- return validated_items
89
+ return validated_items # type: ignore
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ul-api-utils
3
- Version: 8.1.17
3
+ Version: 8.1.18
4
4
  Summary: Python api utils
5
5
  Author: Unic-lab
6
6
  Author-email:
@@ -29,7 +29,7 @@ ul_api_utils/api_resource/api_request.py,sha256=6Ag2trKIkenhYYPU2--hnfNJC5lLgBxV
29
29
  ul_api_utils/api_resource/api_resource.py,sha256=ERAGC4rrN_jmZ_dFhYZZ_Eczqdy5tQK7cfN7SY4sIfA,17914
30
30
  ul_api_utils/api_resource/api_resource_config.py,sha256=l9OYJy75UZLshOkEQDO5jlhXeb5H4HDPu-nLOjuoexw,769
31
31
  ul_api_utils/api_resource/api_resource_error_handling.py,sha256=E0SWpjFSIP-4SumbgzrHtFuFiGe9q38WsvLROt0YcPE,1168
32
- ul_api_utils/api_resource/api_resource_fn_typing.py,sha256=2jTHmcTeTZBpYc-LZ1wcT1YfM8NaifBBo1Bhs_uP6zw,18965
32
+ ul_api_utils/api_resource/api_resource_fn_typing.py,sha256=ogVJ8Y69DlL3CztpyfK_vI5CImdkJmfyJTtQm7JUi5Y,18981
33
33
  ul_api_utils/api_resource/api_resource_type.py,sha256=mgjSQI3swGpgpLI6y35LYtFrdN-kXyV5cQorwGW7h6g,462
34
34
  ul_api_utils/api_resource/api_response.py,sha256=DYKqNI8xbXIMBCn-GmZx24Bsr7SBgKQDtGU2nbw3p6Q,10141
35
35
  ul_api_utils/api_resource/api_response_db.py,sha256=ucY6ANPlHZml7JAbvq-PL85z0bvERTjEJKvz-REPyok,888
@@ -111,7 +111,7 @@ ul_api_utils/utils/deprecated.py,sha256=xR3ELgoDj7vJEY4CAYeEhdbtSJTfkukbjxcULtpM
111
111
  ul_api_utils/utils/flags.py,sha256=AYN5nKWp4-uu6PSlPptL7ZiLqr3Pu-x5dffF6SBsqfg,957
112
112
  ul_api_utils/utils/imports.py,sha256=i8PhoD0c_jnWTeXt_VxW_FihynwXSL_dHRT7jQiFyXE,376
113
113
  ul_api_utils/utils/instance_checks.py,sha256=9punTfY5uabuJhmSGLfTgBqRderoFysCXBSI8rvbPco,467
114
- ul_api_utils/utils/json_encoder.py,sha256=ra43WhkAadIvVpUY3uik_Nzg0LVXUXTGYvx4Gx7fD_g,4578
114
+ ul_api_utils/utils/json_encoder.py,sha256=2uJuoZHNx0TpDLYdlVpch_Am1OXIG_gWHHvdPkfRV2c,4658
115
115
  ul_api_utils/utils/load_modules.py,sha256=_CPmQuB6o_33FE6zFl_GyO5xS5gmjfNffB6k-cglKAA,685
116
116
  ul_api_utils/utils/token_check.py,sha256=-Quuh8gOs9fNE1shYhdiMpQedafsLN7MB2ilSxG_F8E,489
117
117
  ul_api_utils/utils/token_check_through_request.py,sha256=OyyObu6Btk9br7auIYvWcMULhNznNSD5T0mWOwZX7Uk,663
@@ -143,14 +143,14 @@ ul_api_utils/utils/memory_db/errors.py,sha256=Bw1O1Y_WTCeCRNgb9iwrGT1fst6iHORhrN
143
143
  ul_api_utils/utils/memory_db/repository.py,sha256=0AI0-VA4Md54BrAuZLX0Lg7rxyyGv54aWiiNUPycGSA,3760
144
144
  ul_api_utils/utils/memory_db/__tests__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
145
145
  ul_api_utils/validators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
146
- ul_api_utils/validators/custom_fields.py,sha256=LKmsn2R66BRPaDiZDqXmC7wCKxDK8OTD1Jk8fFj0_So,3778
146
+ ul_api_utils/validators/custom_fields.py,sha256=XAWXOp6RlbRcScSWO7ghPwlors2n_-yy0GELoS6O1M8,4082
147
147
  ul_api_utils/validators/validate_empty_object.py,sha256=3Ck_iwyJE_M5e7l6s1i88aqb73zIt06uaLrMG2PAb0A,299
148
148
  ul_api_utils/validators/validate_uuid.py,sha256=EfvlRirv2EW0Z6w3s8E8rUa9GaI8qXZkBWhnPs8NFrA,257
149
149
  ul_api_utils/validators/__tests__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
150
  ul_api_utils/validators/__tests__/test_custom_fields.py,sha256=20gLlnm1Ithsbbz3NIUXVAd92lW6YwVRSg_nETZhfaI,1442
151
- ul_api_utils-8.1.17.dist-info/LICENSE,sha256=6Qo8OdcqI8aGrswJKJYhST-bYqxVQBQ3ujKdTSdq-80,1062
152
- ul_api_utils-8.1.17.dist-info/METADATA,sha256=sErifyqu-OT3p_wAZzWuKVGN8TM7q3SZnN9hq5LvHtg,14748
153
- ul_api_utils-8.1.17.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
154
- ul_api_utils-8.1.17.dist-info/entry_points.txt,sha256=8tL3ySHWTyJMuV1hx1fHfN8zumDVOCOm63w3StphkXg,53
155
- ul_api_utils-8.1.17.dist-info/top_level.txt,sha256=1XsW8iOSFaH4LOzDcnNyxHpHrbKU3fSn-aIAxe04jmw,21
156
- ul_api_utils-8.1.17.dist-info/RECORD,,
151
+ ul_api_utils-8.1.18.dist-info/LICENSE,sha256=6Qo8OdcqI8aGrswJKJYhST-bYqxVQBQ3ujKdTSdq-80,1062
152
+ ul_api_utils-8.1.18.dist-info/METADATA,sha256=UlE7xz7c69sj9M6v4iTSv-s57s7o5sJSJRINnWauUHk,14748
153
+ ul_api_utils-8.1.18.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
154
+ ul_api_utils-8.1.18.dist-info/entry_points.txt,sha256=8tL3ySHWTyJMuV1hx1fHfN8zumDVOCOm63w3StphkXg,53
155
+ ul_api_utils-8.1.18.dist-info/top_level.txt,sha256=1XsW8iOSFaH4LOzDcnNyxHpHrbKU3fSn-aIAxe04jmw,21
156
+ ul_api_utils-8.1.18.dist-info/RECORD,,