Skip to content

Commit 89d18e3

Browse files
authored
Merge pull request #60 from fingerprintjs/INTER-803-inline-types
Use inline types instead of type annotations
2 parents 4eefbd6 + f6c8b47 commit 89d18e3

File tree

104 files changed

+1169
-1789
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

104 files changed

+1169
-1789
lines changed

README.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ api_instance = fingerprint_pro_server_api_sdk.FingerprintApi(configuration)
8989
Fetching visits using visitorId:
9090
```python
9191
import fingerprint_pro_server_api_sdk
92-
from fingerprint_pro_server_api_sdk import Response
9392
from fingerprint_pro_server_api_sdk.rest import ApiException, KnownApiException
9493

9594
configuration = fingerprint_pro_server_api_sdk.Configuration(api_key="SECRET_API_KEY")
@@ -102,7 +101,7 @@ limit = 10 # int | Limit scanned results. For performance reasons, the API fi
102101
#pagination_key = 'pagination_key_example' # str | Use `paginationKey` to get the next page of results. When more results are available (e.g., you requested 200 results using `limit` parameter, but a total of 600 results are available), the `paginationKey` top-level attribute is added to the response. The key corresponds to the `requestId` of the last returned event. In the following request, use that value in the `paginationKey` parameter to get the next page of results: 1. First request, returning most recent 200 events: `GET api-base-url/visitors/:visitorId?limit=200` 2. Use `response.paginationKey` to get the next page of results: `GET api-base-url/visitors/:visitorId?limit=200&paginationKey=1683900801733.Ogvu1j` Pagination happens during scanning and before filtering, so you can get less visits than the `limit` you specified with more available on the next page. When there are no more results available for scanning, the `paginationKey` attribute is not returned. (optional)
103102

104103
try:
105-
api_response: Response = api_instance.get_visits(visitor_id, limit=2)
104+
api_response = api_instance.get_visits(visitor_id, limit=2)
106105
print(api_response)
107106
except KnownApiException as e:
108107
structured_error = e.structured_error
@@ -133,7 +132,6 @@ except ApiException as e:
133132
Fetching events for requestId:
134133
```python
135134
import fingerprint_pro_server_api_sdk
136-
from fingerprint_pro_server_api_sdk import EventResponse
137135
from fingerprint_pro_server_api_sdk.rest import ApiException, KnownApiException
138136

139137
configuration = fingerprint_pro_server_api_sdk.Configuration(api_key="SECRET_API_KEY")
@@ -142,7 +140,7 @@ api_instance = fingerprint_pro_server_api_sdk.FingerprintApi(configuration)
142140
request_id = 'request_id_example' # str | The unique event [identifier](https://dev.fingerprint.com/docs/js-agent#requestid).
143141

144142
try:
145-
events_response: EventResponse = api_instance.get_event(request_id)
143+
events_response = api_instance.get_event(request_id)
146144

147145
except KnownApiException as e:
148146
structured_error = e.structured_error

fingerprint_pro_server_api_sdk/api/fingerprint_api.py

Lines changed: 77 additions & 60 deletions
Large diffs are not rendered by default.

fingerprint_pro_server_api_sdk/api_client.py

Lines changed: 51 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,25 @@
88
Contact: support@fingerprint.com
99
Generated by: https://github.com/swagger-api/swagger-codegen.git
1010
"""
11-
import datetime
1211
import json
1312
import mimetypes
1413
import os
1514
import re
1615
import tempfile
1716

1817
from urllib.parse import quote
18+
from multiprocessing import Pool
19+
from typing import Optional, Any, Union, Dict, List, Tuple
20+
from datetime import date, datetime
1921

2022
from fingerprint_pro_server_api_sdk.configuration import Configuration
2123
import fingerprint_pro_server_api_sdk.models
2224
from fingerprint_pro_server_api_sdk import rest
23-
from fingerprint_pro_server_api_sdk.rest import ApiException
25+
from fingerprint_pro_server_api_sdk.rest import ApiException, RESTResponse
26+
from fingerprint_pro_server_api_sdk.base_model import BaseModel
2427

2528

26-
class ApiClient(object):
29+
class ApiClient:
2730
"""Generic API client for Swagger client library builds.
2831
2932
Swagger generic API client. This client handles the client-
@@ -50,13 +53,13 @@ class ApiClient(object):
5053
'float': float,
5154
'str': str,
5255
'bool': bool,
53-
'date': datetime.date,
54-
'datetime': datetime.datetime,
56+
'date': date,
57+
'datetime': datetime,
5558
'object': object,
5659
}
5760

58-
def __init__(self, configuration=None, header_name=None, header_value=None,
59-
cookie=None, pool=None):
61+
def __init__(self, configuration: Optional[Configuration] = None, header_name: Optional[str] = None,
62+
header_value: Optional[str] = None, cookie: Optional[str] = None, pool: Optional[Pool] = None):
6063
if configuration is None:
6164
configuration = Configuration()
6265
self.configuration = configuration
@@ -83,23 +86,25 @@ def __del__(self):
8386
self.pool.join()
8487

8588
@property
86-
def user_agent(self):
89+
def user_agent(self) -> Optional[str]:
8790
"""User agent for this API client"""
8891
return self.default_headers['User-Agent']
8992

9093
@user_agent.setter
91-
def user_agent(self, value):
94+
def user_agent(self, value: str):
9295
self.default_headers['User-Agent'] = value
9396

94-
def set_default_header(self, header_name, header_value):
97+
def set_default_header(self, header_name: str, header_value: str):
9598
self.default_headers[header_name] = header_value
9699

97100
def __call_api(
98-
self, resource_path, method, path_params=None,
99-
query_params=None, header_params=None, body=None, post_params=None,
100-
files=None, response_type=None, auth_settings=None,
101-
_return_http_data_only=None, collection_formats=None,
102-
_preload_content=True, _request_timeout=None):
101+
self, resource_path: str, method: str, path_params: Optional[Dict[str, Any]] = None,
102+
query_params: Optional[List[Tuple[str, Any]]] = None, header_params: Optional[Dict[str, Any]] = None,
103+
body: Any = None, post_params: Optional[List[Tuple[str, Any]]] = None,
104+
files: Optional[Dict[str, Any]] = None, response_type: Optional[str] = None,
105+
auth_settings: Optional[List[str]] = None, _return_http_data_only: Optional[bool] = None,
106+
collection_formats: Optional[Dict[str, Any]] = None, _preload_content: bool = True,
107+
_request_timeout: Optional[int] = None):
103108

104109
config = self.configuration
105110

@@ -176,7 +181,7 @@ def __call_api(
176181
return (return_data, response_data.status,
177182
response_data.getheaders())
178183

179-
def sanitize_for_serialization(self, obj):
184+
def sanitize_for_serialization(self, obj: Union[Dict[str, Any], List[Tuple[str, Any]], BaseModel]):
180185
"""Builds a JSON POST object.
181186
182187
If obj is None, return None.
@@ -200,7 +205,7 @@ def sanitize_for_serialization(self, obj):
200205
elif isinstance(obj, tuple):
201206
return tuple(self.sanitize_for_serialization(sub_obj)
202207
for sub_obj in obj)
203-
elif isinstance(obj, (datetime.datetime, datetime.date)):
208+
elif isinstance(obj, (datetime, date)):
204209
return obj.isoformat()
205210

206211
if isinstance(obj, dict):
@@ -218,7 +223,7 @@ def sanitize_for_serialization(self, obj):
218223
return {key: self.sanitize_for_serialization(val)
219224
for key, val in obj_dict.items()}
220225

221-
def deserialize(self, response, response_type, is_error=False):
226+
def deserialize(self, response: Union[RESTResponse, ApiException], response_type: Any, is_error=False):
222227
"""Deserializes response into an object.
223228
224229
:param response: RESTResponse object to be deserialized.
@@ -248,7 +253,7 @@ def deserialize(self, response, response_type, is_error=False):
248253

249254
return self.__deserialize(data, response_type)
250255

251-
def __deserialize(self, data, klass):
256+
def __deserialize(self, data: Union[Dict, List, str], klass: Any):
252257
"""Deserializes dict, list, str into an object.
253258
254259
:param data: dict, list or str.
@@ -279,20 +284,21 @@ def __deserialize(self, data, klass):
279284
if klass in self.PRIMITIVE_TYPES:
280285
return self.__deserialize_primitive(data, klass)
281286
elif klass == object:
282-
return self.__deserialize_object(data)
283-
elif klass == datetime.date:
287+
return data
288+
elif klass == date:
284289
return self.__deserialize_date(data)
285-
elif klass == datetime.datetime:
290+
elif klass == datetime:
286291
return self.__deserialize_datatime(data)
287292
else:
288293
return self.__deserialize_model(data, klass)
289294

290-
def call_api(self, resource_path, method,
291-
path_params=None, query_params=None, header_params=None,
292-
body=None, post_params=None, files=None,
293-
response_type=None, auth_settings=None, async_req=None,
294-
_return_http_data_only=None, collection_formats=None,
295-
_preload_content=True, _request_timeout=None):
295+
def call_api(self, resource_path: str, method: str, path_params: Optional[Dict[str, Any]] = None,
296+
query_params: Optional[List[Tuple[str, Any]]] = None, header_params: Optional[Dict[str, Any]] = None,
297+
body: Any = None, post_params: Optional[List[Tuple[str, Any]]] = None,
298+
files: Optional[Dict[str, Any]] = None, response_type: Optional[str] = None,
299+
auth_settings: Optional[List[str]] = None, async_req: Optional[bool] = None,
300+
_return_http_data_only: Optional[bool] = None, collection_formats: Optional[Dict[str, Any]] = None,
301+
_preload_content: bool = True, _request_timeout: Optional[int] = None):
296302
"""Makes the HTTP request (synchronous) and returns deserialized data.
297303
298304
To make an async request, set the async_req parameter.
@@ -304,13 +310,13 @@ def call_api(self, resource_path, method,
304310
:param header_params: Header parameters to be
305311
placed in the request header.
306312
:param body: Request body.
307-
:param post_params dict: Request post form parameters,
313+
:param post_params: Request post form parameters,
308314
for `application/x-www-form-urlencoded`, `multipart/form-data`.
309-
:param auth_settings list: Auth Settings names for the request.
310-
:param response: Response data type.
311-
:param files dict: key -> filename, value -> filepath,
315+
:param auth_settings: Auth Settings names for the request.
316+
:param response_type: Response data type.
317+
:param files: key -> filename, value -> filepath,
312318
for `multipart/form-data`.
313-
:param async_req bool: execute request asynchronously
319+
:param async_req: execute request asynchronously
314320
:param _return_http_data_only: response data without head status code
315321
and headers
316322
:param collection_formats: dict of collection formats for path, query,
@@ -351,57 +357,14 @@ def request(self, method, url, query_params=None, headers=None,
351357
post_params=None, body=None, _preload_content=True,
352358
_request_timeout=None):
353359
"""Makes the HTTP request using RESTClient."""
354-
if method == "GET":
355-
return self.rest_client.GET(url,
356-
query_params=query_params,
357-
_preload_content=_preload_content,
358-
_request_timeout=_request_timeout,
359-
headers=headers)
360-
elif method == "HEAD":
361-
return self.rest_client.HEAD(url,
362-
query_params=query_params,
363-
_preload_content=_preload_content,
364-
_request_timeout=_request_timeout,
365-
headers=headers)
366-
elif method == "OPTIONS":
367-
return self.rest_client.OPTIONS(url,
360+
if method in ["GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH", "DELETE"]:
361+
return self.rest_client.request(method, url,
368362
query_params=query_params,
369363
headers=headers,
370364
post_params=post_params,
371365
_preload_content=_preload_content,
372366
_request_timeout=_request_timeout,
373367
body=body)
374-
elif method == "POST":
375-
return self.rest_client.POST(url,
376-
query_params=query_params,
377-
headers=headers,
378-
post_params=post_params,
379-
_preload_content=_preload_content,
380-
_request_timeout=_request_timeout,
381-
body=body)
382-
elif method == "PUT":
383-
return self.rest_client.PUT(url,
384-
query_params=query_params,
385-
headers=headers,
386-
post_params=post_params,
387-
_preload_content=_preload_content,
388-
_request_timeout=_request_timeout,
389-
body=body)
390-
elif method == "PATCH":
391-
return self.rest_client.PATCH(url,
392-
query_params=query_params,
393-
headers=headers,
394-
post_params=post_params,
395-
_preload_content=_preload_content,
396-
_request_timeout=_request_timeout,
397-
body=body)
398-
elif method == "DELETE":
399-
return self.rest_client.DELETE(url,
400-
query_params=query_params,
401-
headers=headers,
402-
_preload_content=_preload_content,
403-
_request_timeout=_request_timeout,
404-
body=body)
405368
else:
406369
raise ValueError(
407370
"http method must be `GET`, `HEAD`, `OPTIONS`,"
@@ -438,7 +401,8 @@ def parameters_to_tuples(self, params, collection_formats):
438401
new_params.append((k, v))
439402
return new_params
440403

441-
def prepare_post_parameters(self, post_params=None, files=None):
404+
def prepare_post_parameters(self, post_params: Optional[List[Tuple[str, Any]]] = None,
405+
files: Optional[Dict[str, Any]] = None):
442406
"""Builds form parameters.
443407
444408
:param post_params: Normal form parameters.
@@ -466,7 +430,7 @@ def prepare_post_parameters(self, post_params=None, files=None):
466430

467431
return params
468432

469-
def select_header_accept(self, accepts):
433+
def select_header_accept(self, accepts: List[str]) -> Optional[str]:
470434
"""Returns `Accept` based on an array of accepts provided.
471435
472436
:param accepts: List of headers.
@@ -482,7 +446,7 @@ def select_header_accept(self, accepts):
482446
else:
483447
return ', '.join(accepts)
484448

485-
def select_header_content_type(self, content_types):
449+
def select_header_content_type(self, content_types: List[str]) -> str:
486450
"""Returns `Content-Type` based on an array of content_types provided.
487451
488452
:param content_types: List of content-types.
@@ -498,11 +462,12 @@ def select_header_content_type(self, content_types):
498462
else:
499463
return content_types[0]
500464

501-
def update_params_for_auth(self, headers, querys, auth_settings):
465+
def update_params_for_auth(self, headers: Optional[Dict[str, Any]], queries: Optional[List[Tuple[str, Any]]],
466+
auth_settings: Optional[List[str]]):
502467
"""Updates header and query params based on authentication setting.
503468
504469
:param headers: Header parameters dict to be updated.
505-
:param querys: Query parameters tuple list to be updated.
470+
:param queries: Query parameters tuple list to be updated.
506471
:param auth_settings: Authentication setting identifiers list.
507472
"""
508473
if not auth_settings:
@@ -516,7 +481,7 @@ def update_params_for_auth(self, headers, querys, auth_settings):
516481
elif auth_setting['in'] == 'header':
517482
headers[auth_setting['key']] = auth_setting['value']
518483
elif auth_setting['in'] == 'query':
519-
querys.append((auth_setting['key'], auth_setting['value']))
484+
queries.append((auth_setting['key'], auth_setting['value']))
520485
else:
521486
raise ValueError(
522487
'Authentication token must be in `query` or `header`'
@@ -565,18 +530,10 @@ def __deserialize_primitive(self, data, klass):
565530
except TypeError:
566531
return data
567532

568-
def __deserialize_object(self, value):
569-
"""Return a original value.
570-
571-
:return: object.
572-
"""
573-
return value
574-
575-
def __deserialize_date(self, string):
533+
def __deserialize_date(self, string: str) -> date:
576534
"""Deserializes string to date.
577535
578536
:param string: str.
579-
:return: date.
580537
"""
581538
try:
582539
from dateutil.parser import parse
@@ -589,13 +546,12 @@ def __deserialize_date(self, string):
589546
reason="Failed to parse `{0}` as date object".format(string)
590547
)
591548

592-
def __deserialize_datatime(self, string):
549+
def __deserialize_datatime(self, string: str) -> datetime:
593550
"""Deserializes string to datetime.
594551
595552
The string should be in iso8601 datetime format.
596553
597554
:param string: str.
598-
:return: datetime.
599555
"""
600556
try:
601557
from dateutil.parser import parse

0 commit comments

Comments
 (0)