tracktolib 0.38.1__py3-none-any.whl → 0.39.1__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.
tracktolib/api.py CHANGED
@@ -13,6 +13,7 @@ from .utils import json_serial, to_camel_case
13
13
  try:
14
14
  from fastapi import params, APIRouter
15
15
  from fastapi.responses import JSONResponse
16
+ import pydantic
16
17
  from pydantic import BaseModel
17
18
  import starlette.status
18
19
  except ImportError:
@@ -53,7 +54,7 @@ class MethodMeta(TypedDict):
53
54
  dependencies: Dependencies
54
55
  path: str | None
55
56
  response_model: Type[BaseModel | None | Sequence[BaseModel]] | None
56
-
57
+ openapi_extra: dict[str, Any] | None
57
58
 
58
59
  @dataclass
59
60
  class Endpoint:
@@ -67,52 +68,62 @@ class Endpoint:
67
68
  def get(self, status_code: StatusCode = None,
68
69
  dependencies: Dependencies = None,
69
70
  path: str | None = None,
70
- model: Type[B] | None = None):
71
+ model: Type[B] | None = None,
72
+ openapi_extra: dict[str, Any] | None = None):
71
73
  return _get_method_wrapper(cls=self, method='GET',
72
74
  status_code=status_code,
73
75
  dependencies=dependencies,
74
76
  path=path,
75
- model=model)
77
+ model=model,
78
+ openapi_extra=openapi_extra)
76
79
 
77
80
  def post(self, *, status_code: StatusCode = None,
78
81
  dependencies: Dependencies = None,
79
82
  path: str | None = None,
80
- model: Type[B] | None = None):
83
+ model: Type[B] | None = None,
84
+ openapi_extra: dict[str, Any] | None = None):
81
85
  return _get_method_wrapper(cls=self, method='POST',
82
86
  status_code=status_code,
83
87
  dependencies=dependencies,
84
88
  path=path,
85
- model=model)
89
+ model=model,
90
+ openapi_extra=openapi_extra)
86
91
 
87
92
  def put(self, status_code: StatusCode = None,
88
93
  dependencies: Dependencies = None,
89
94
  path: str | None = None,
90
- model: Type[B] | None = None):
95
+ model: Type[B] | None = None,
96
+ openapi_extra: dict[str, Any] | None = None):
91
97
  return _get_method_wrapper(cls=self, method='PUT',
92
98
  status_code=status_code,
93
99
  dependencies=dependencies,
94
100
  path=path,
95
- model=model)
101
+ model=model,
102
+ openapi_extra=openapi_extra)
96
103
 
97
104
  def delete(self, status_code: StatusCode = None,
98
105
  dependencies: Dependencies = None,
99
106
  path: str | None = None,
100
- model: Type[B] | None = None):
107
+ model: Type[B] | None = None,
108
+ openapi_extra: dict[str, Any] | None = None):
101
109
  return _get_method_wrapper(cls=self, method='DELETE',
102
110
  status_code=status_code,
103
111
  dependencies=dependencies,
104
112
  path=path,
105
- model=model)
113
+ model=model,
114
+ openapi_extra=openapi_extra)
106
115
 
107
116
  def patch(self, status_code: StatusCode = None,
108
117
  dependencies: Dependencies = None,
109
118
  path: str | None = None,
110
- model: Type[B] | None = None):
119
+ model: Type[B] | None = None,
120
+ openapi_extra: dict[str, Any] | None = None):
111
121
  return _get_method_wrapper(cls=self, method='PATCH',
112
122
  status_code=status_code,
113
123
  dependencies=dependencies,
114
124
  path=path,
115
- model=model)
125
+ model=model,
126
+ openapi_extra=openapi_extra)
116
127
 
117
128
 
118
129
  def _get_method_wrapper(cls: Endpoint, method: Method,
@@ -120,14 +131,16 @@ def _get_method_wrapper(cls: Endpoint, method: Method,
120
131
  status_code: StatusCode = None,
121
132
  dependencies: Dependencies = None,
122
133
  path: str | None = None,
123
- model: Type[B] | None = None):
134
+ model: Type[B] | None = None,
135
+ openapi_extra: dict[str, Any] | None = None):
124
136
  def _set_method_wrapper(func: EnpointFn):
125
137
  _meta: MethodMeta = {
126
138
  'fn': func,
127
139
  'status_code': status_code,
128
140
  'dependencies': dependencies,
129
141
  'path': path,
130
- 'response_model': model
142
+ 'response_model': model,
143
+ 'openapi_extra': openapi_extra
131
144
  }
132
145
  cls._methods[method] = _meta
133
146
 
@@ -169,7 +182,8 @@ def add_endpoint(path: str,
169
182
  name=getdoc(_fn),
170
183
  response_model=_response_model,
171
184
  status_code=_status_code,
172
- dependencies=[*(_dependencies or []), *(dependencies or [])])
185
+ dependencies=[*(_dependencies or []), *(dependencies or [])],
186
+ openapi_extra=_meta.get('openapi_extra'))
173
187
 
174
188
 
175
189
  @dataclass(init=False)
@@ -187,11 +201,15 @@ class JSONSerialResponse(JSONResponse):
187
201
  ).encode("utf-8")
188
202
 
189
203
 
190
- class CamelCaseModel(BaseModel):
191
- class Config:
192
- alias_generator = to_camel_case
193
- allow_population_by_field_name = True
194
-
204
+ if pydantic.__version__ < '2.0.0':
205
+ class CamelCaseModel(BaseModel): # type: ignore
206
+ class Config:
207
+ alias_generator = to_camel_case
208
+ allow_population_by_field_name = True
209
+ else:
210
+ class CamelCaseModel(BaseModel):
211
+ def __init__(self):
212
+ raise NotImplementedError('Please use pydantic < 2.0.0')
195
213
 
196
214
  def check_status(resp, status: int = starlette.status.HTTP_200_OK):
197
215
  assert resp.status_code == status, json.dumps(resp.json(), indent=4)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tracktolib
3
- Version: 0.38.1
3
+ Version: 0.39.1
4
4
  Summary: Utility library for python
5
5
  Home-page: https://github.com/tracktor/tracktolib
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  LICENSE,sha256=uUanH0X7SeZEPdsRTHegMSMTiIHMurt9H0jSwEwKE1Y,1081
2
2
  tracktolib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- tracktolib/api.py,sha256=2hAtq7Cjx7GqiqO2ATJfiCK3rM66kDfLKMBVZ_I8ttU,6743
3
+ tracktolib/api.py,sha256=RWXlSeARebJKI3PP5j5HC1l3XXcGok7QFwEnWB1ZDrU,7803
4
4
  tracktolib/http.py,sha256=GHWvD9rHTF1oAnG6Ptna_oeMDcwCxYYpPxLOME-oZ3Y,1574
5
5
  tracktolib/logs.py,sha256=nbI9LO2NaXDAv9aoUkad54V_x8B8zga-MwqUfYb-pkk,2523
6
6
  tracktolib/pg/__init__.py,sha256=Fb56_-_9MftglwiC99kWU1-_IMNJjh7WFkVWBK60U_U,297
@@ -13,7 +13,7 @@ tracktolib/s3/minio.py,sha256=gkpI2bvVwfXaAFY7M9e0Mlv82x0PjuriS8LdRmEJtMo,1258
13
13
  tracktolib/s3/s3.py,sha256=4AUtdkFO-T6Zx0cpo1Hw6yl31Namdbt6DnDVuF2M-sQ,4059
14
14
  tracktolib/tests.py,sha256=GycCVRUOdzazxqBXKBWWzhrlkV8yyD7NaActz_A2WXU,590
15
15
  tracktolib/utils.py,sha256=kU35LCJaFDNg0IR9ekAi4uEJ3unZCC3VPzqgkctt06Q,5437
16
- tracktolib-0.38.1.dist-info/LICENSE,sha256=uUanH0X7SeZEPdsRTHegMSMTiIHMurt9H0jSwEwKE1Y,1081
17
- tracktolib-0.38.1.dist-info/WHEEL,sha256=vxFmldFsRN_Hx10GDvsdv1wroKq8r5Lzvjp6GZ4OO8c,88
18
- tracktolib-0.38.1.dist-info/METADATA,sha256=9ncsbslfc85lQxE-nFrexezfnhL87xCjqf0bp8xDaRg,3563
19
- tracktolib-0.38.1.dist-info/RECORD,,
16
+ tracktolib-0.39.1.dist-info/LICENSE,sha256=uUanH0X7SeZEPdsRTHegMSMTiIHMurt9H0jSwEwKE1Y,1081
17
+ tracktolib-0.39.1.dist-info/WHEEL,sha256=vxFmldFsRN_Hx10GDvsdv1wroKq8r5Lzvjp6GZ4OO8c,88
18
+ tracktolib-0.39.1.dist-info/METADATA,sha256=W1pdt_tOL2AJ9AAfdP-mehFvK3EfmeocAv1F9lfLd9I,3563
19
+ tracktolib-0.39.1.dist-info/RECORD,,