stadiamaps 1.0.7__py3-none-any.whl → 2.1.0__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.
- stadiamaps/__init__.py +6 -24
- stadiamaps/api/geocoding_api.py +1917 -760
- stadiamaps/api/geospatial_api.py +483 -221
- stadiamaps/api/routing_api.py +1615 -723
- stadiamaps/api_client.py +275 -272
- stadiamaps/api_response.py +12 -16
- stadiamaps/configuration.py +13 -11
- stadiamaps/exceptions.py +67 -30
- stadiamaps/models/__init__.py +5 -23
- stadiamaps/models/access.py +44 -26
- stadiamaps/models/admin_region.py +46 -28
- stadiamaps/models/administrative.py +48 -30
- stadiamaps/models/auto_costing_options.py +75 -48
- stadiamaps/models/base_costing_options.py +59 -34
- stadiamaps/models/base_trace_request.py +70 -40
- stadiamaps/models/bicycle_costing_options.py +67 -42
- stadiamaps/models/bike_network.py +42 -24
- stadiamaps/models/contour.py +45 -27
- stadiamaps/models/coordinate.py +45 -26
- stadiamaps/models/costing_model.py +10 -12
- stadiamaps/models/costing_options.py +51 -33
- stadiamaps/models/directions_options.py +45 -27
- stadiamaps/models/distance_unit.py +8 -11
- stadiamaps/models/edge_sign.py +46 -28
- stadiamaps/models/edge_use.py +8 -11
- stadiamaps/models/end_node.py +48 -30
- stadiamaps/models/geo_attributes.py +47 -29
- stadiamaps/models/geo_json_geometry.py +25 -25
- stadiamaps/models/geo_json_geometry_base.py +45 -27
- stadiamaps/models/geo_json_line_string.py +47 -28
- stadiamaps/models/geo_json_line_string_all_of.py +1 -1
- stadiamaps/models/geo_json_point.py +47 -28
- stadiamaps/models/geo_json_point_all_of.py +1 -1
- stadiamaps/models/geo_json_polygon.py +47 -28
- stadiamaps/models/geo_json_polygon_all_of.py +1 -1
- stadiamaps/models/geocoding_object.py +46 -28
- stadiamaps/models/height_request.py +55 -34
- stadiamaps/models/height_response.py +49 -30
- stadiamaps/models/highway_classification.py +52 -34
- stadiamaps/models/intersecting_edge.py +45 -27
- stadiamaps/models/isochrone_costing_model.py +8 -11
- stadiamaps/models/isochrone_feature.py +45 -27
- stadiamaps/models/isochrone_properties.py +48 -30
- stadiamaps/models/isochrone_request.py +54 -35
- stadiamaps/models/isochrone_response.py +47 -29
- stadiamaps/models/locate_detailed_edge.py +73 -55
- stadiamaps/models/locate_edge.py +56 -39
- stadiamaps/models/locate_edge_info.py +47 -29
- stadiamaps/models/locate_node.py +50 -31
- stadiamaps/models/locate_object.py +49 -31
- stadiamaps/models/maneuver_sign.py +50 -32
- stadiamaps/models/maneuver_sign_element.py +45 -27
- stadiamaps/models/map_match_costing_model.py +8 -11
- stadiamaps/models/map_match_request.py +74 -44
- stadiamaps/models/map_match_route_response.py +57 -29
- stadiamaps/models/map_match_trace_options.py +47 -29
- stadiamaps/models/map_match_waypoint.py +49 -30
- stadiamaps/models/matched_point.py +52 -34
- stadiamaps/models/matrix_costing_model.py +9 -12
- stadiamaps/models/matrix_distance.py +46 -28
- stadiamaps/models/matrix_request.py +70 -39
- stadiamaps/models/matrix_response.py +60 -36
- stadiamaps/models/motor_scooter_costing_options.py +76 -49
- stadiamaps/models/motorcycle_costing_options.py +75 -48
- stadiamaps/models/nearest_roads_request.py +65 -34
- stadiamaps/models/node_id.py +42 -24
- stadiamaps/models/node_type.py +8 -11
- stadiamaps/models/optimized_route_request.py +66 -35
- stadiamaps/models/pedestrian_costing_options.py +59 -40
- stadiamaps/models/pelias_geo_json_feature.py +50 -31
- stadiamaps/models/pelias_geo_json_properties.py +54 -36
- stadiamaps/models/pelias_geo_json_properties_addendum.py +43 -25
- stadiamaps/models/pelias_geo_json_properties_addendum_osm.py +42 -24
- stadiamaps/models/pelias_layer.py +8 -11
- stadiamaps/models/pelias_response.py +49 -30
- stadiamaps/models/pelias_source.py +8 -11
- stadiamaps/models/restrictions.py +44 -26
- stadiamaps/models/road_class.py +8 -11
- stadiamaps/models/route_leg.py +48 -29
- stadiamaps/models/route_maneuver.py +73 -55
- stadiamaps/models/route_request.py +76 -43
- stadiamaps/models/route_response.py +56 -28
- stadiamaps/models/route_response_alternates_inner.py +105 -0
- stadiamaps/models/route_summary.py +48 -30
- stadiamaps/models/route_trip.py +135 -0
- stadiamaps/models/routing_response_waypoint.py +49 -30
- stadiamaps/models/routing_waypoint.py +60 -41
- stadiamaps/models/routing_waypoint_all_of_search_filter.py +48 -30
- stadiamaps/models/simple_routing_waypoint.py +48 -29
- stadiamaps/models/speeds.py +49 -31
- stadiamaps/models/trace_attribute_filter_options.py +47 -28
- stadiamaps/models/trace_attribute_key.py +8 -11
- stadiamaps/models/trace_attributes_base_response.py +51 -32
- stadiamaps/models/trace_attributes_request.py +72 -42
- stadiamaps/models/trace_attributes_request_all_of_filters.py +1 -1
- stadiamaps/models/trace_attributes_response.py +54 -35
- stadiamaps/models/trace_edge.py +88 -70
- stadiamaps/models/travel_mode.py +8 -11
- stadiamaps/models/traversability.py +8 -11
- stadiamaps/models/truck_costing_options.py +78 -51
- stadiamaps/models/tz_response.py +45 -27
- stadiamaps/models/valhalla_languages.py +8 -11
- stadiamaps/models/valhalla_long_units.py +8 -11
- stadiamaps/models/warning.py +42 -24
- stadiamaps/py.typed +0 -0
- stadiamaps/rest.py +127 -172
- {stadiamaps-1.0.7.dist-info → stadiamaps-2.1.0.dist-info}/METADATA +4 -4
- stadiamaps-2.1.0.dist-info/RECORD +128 -0
- {stadiamaps-1.0.7.dist-info → stadiamaps-2.1.0.dist-info}/WHEEL +1 -1
- stadiamaps-1.0.7.dist-info/RECORD +0 -125
- {stadiamaps-1.0.7.dist-info → stadiamaps-2.1.0.dist-info}/LICENSE.txt +0 -0
- {stadiamaps-1.0.7.dist-info → stadiamaps-2.1.0.dist-info}/top_level.txt +0 -0
stadiamaps/rest.py
CHANGED
@@ -3,55 +3,67 @@
|
|
3
3
|
"""
|
4
4
|
Stadia Maps Geospatial APIs
|
5
5
|
|
6
|
-
The Stadia Maps Geospatial APIs provide you with the data you need to build awesome applications.
|
6
|
+
The Stadia Maps Geospatial APIs provide you with the data you need to build awesome applications.
|
7
7
|
|
8
|
-
The version of the OpenAPI document:
|
8
|
+
The version of the OpenAPI document: 6.1.0
|
9
9
|
Contact: support@stadiamaps.com
|
10
10
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
11
11
|
|
12
12
|
Do not edit the class manually.
|
13
|
-
"""
|
13
|
+
""" # noqa: E501
|
14
14
|
|
15
15
|
|
16
16
|
import io
|
17
17
|
import json
|
18
|
-
import logging
|
19
18
|
import re
|
20
19
|
import ssl
|
21
20
|
|
22
|
-
from urllib.parse import urlencode, quote_plus
|
23
21
|
import urllib3
|
24
22
|
|
25
|
-
from stadiamaps.exceptions import ApiException,
|
23
|
+
from stadiamaps.exceptions import ApiException, ApiValueError
|
24
|
+
|
25
|
+
SUPPORTED_SOCKS_PROXIES = {"socks5", "socks5h", "socks4", "socks4a"}
|
26
|
+
RESTResponseType = urllib3.HTTPResponse
|
26
27
|
|
27
28
|
|
28
|
-
|
29
|
+
def is_socks_proxy_url(url):
|
30
|
+
if url is None:
|
31
|
+
return False
|
32
|
+
split_section = url.split("://")
|
33
|
+
if len(split_section) < 2:
|
34
|
+
return False
|
35
|
+
else:
|
36
|
+
return split_section[0].lower() in SUPPORTED_SOCKS_PROXIES
|
29
37
|
|
30
38
|
|
31
39
|
class RESTResponse(io.IOBase):
|
32
40
|
|
33
|
-
def __init__(self, resp):
|
34
|
-
self.
|
41
|
+
def __init__(self, resp) -> None:
|
42
|
+
self.response = resp
|
35
43
|
self.status = resp.status
|
36
44
|
self.reason = resp.reason
|
37
|
-
self.data =
|
45
|
+
self.data = None
|
46
|
+
|
47
|
+
def read(self):
|
48
|
+
if self.data is None:
|
49
|
+
self.data = self.response.data
|
50
|
+
return self.data
|
38
51
|
|
39
52
|
def getheaders(self):
|
40
53
|
"""Returns a dictionary of the response headers."""
|
41
|
-
return self.
|
54
|
+
return self.response.headers
|
42
55
|
|
43
56
|
def getheader(self, name, default=None):
|
44
57
|
"""Returns a given response header."""
|
45
|
-
return self.
|
58
|
+
return self.response.headers.get(name, default)
|
46
59
|
|
47
60
|
|
48
|
-
class RESTClientObject
|
61
|
+
class RESTClientObject:
|
49
62
|
|
50
|
-
def __init__(self, configuration
|
63
|
+
def __init__(self, configuration) -> None:
|
51
64
|
# urllib3.PoolManager will pass all kw parameters to connectionpool
|
52
65
|
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75 # noqa: E501
|
53
66
|
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680 # noqa: E501
|
54
|
-
# maxsize is the number of requests to host that are allowed in parallel # noqa: E501
|
55
67
|
# Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html # noqa: E501
|
56
68
|
|
57
69
|
# cert_reqs
|
@@ -60,74 +72,79 @@ class RESTClientObject(object):
|
|
60
72
|
else:
|
61
73
|
cert_reqs = ssl.CERT_NONE
|
62
74
|
|
63
|
-
|
75
|
+
pool_args = {
|
76
|
+
"cert_reqs": cert_reqs,
|
77
|
+
"ca_certs": configuration.ssl_ca_cert,
|
78
|
+
"cert_file": configuration.cert_file,
|
79
|
+
"key_file": configuration.key_file,
|
80
|
+
}
|
64
81
|
if configuration.assert_hostname is not None:
|
65
|
-
|
82
|
+
pool_args['assert_hostname'] = (
|
83
|
+
configuration.assert_hostname
|
84
|
+
)
|
66
85
|
|
67
86
|
if configuration.retries is not None:
|
68
|
-
|
87
|
+
pool_args['retries'] = configuration.retries
|
69
88
|
|
70
89
|
if configuration.tls_server_name:
|
71
|
-
|
90
|
+
pool_args['server_hostname'] = configuration.tls_server_name
|
72
91
|
|
73
92
|
|
74
93
|
if configuration.socket_options is not None:
|
75
|
-
|
94
|
+
pool_args['socket_options'] = configuration.socket_options
|
76
95
|
|
77
|
-
if
|
78
|
-
|
79
|
-
maxsize = configuration.connection_pool_maxsize
|
80
|
-
else:
|
81
|
-
maxsize = 4
|
96
|
+
if configuration.connection_pool_maxsize is not None:
|
97
|
+
pool_args['maxsize'] = configuration.connection_pool_maxsize
|
82
98
|
|
83
99
|
# https pool manager
|
100
|
+
self.pool_manager: urllib3.PoolManager
|
101
|
+
|
84
102
|
if configuration.proxy:
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
**addition_pool_args
|
95
|
-
)
|
103
|
+
if is_socks_proxy_url(configuration.proxy):
|
104
|
+
from urllib3.contrib.socks import SOCKSProxyManager
|
105
|
+
pool_args["proxy_url"] = configuration.proxy
|
106
|
+
pool_args["headers"] = configuration.proxy_headers
|
107
|
+
self.pool_manager = SOCKSProxyManager(**pool_args)
|
108
|
+
else:
|
109
|
+
pool_args["proxy_url"] = configuration.proxy
|
110
|
+
pool_args["proxy_headers"] = configuration.proxy_headers
|
111
|
+
self.pool_manager = urllib3.ProxyManager(**pool_args)
|
96
112
|
else:
|
97
|
-
self.pool_manager = urllib3.PoolManager(
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
body=None, post_params=None, _preload_content=True,
|
109
|
-
_request_timeout=None):
|
113
|
+
self.pool_manager = urllib3.PoolManager(**pool_args)
|
114
|
+
|
115
|
+
def request(
|
116
|
+
self,
|
117
|
+
method,
|
118
|
+
url,
|
119
|
+
headers=None,
|
120
|
+
body=None,
|
121
|
+
post_params=None,
|
122
|
+
_request_timeout=None
|
123
|
+
):
|
110
124
|
"""Perform requests.
|
111
125
|
|
112
126
|
:param method: http request method
|
113
127
|
:param url: http request url
|
114
|
-
:param query_params: query parameters in the url
|
115
128
|
:param headers: http request headers
|
116
129
|
:param body: request json body, for `application/json`
|
117
130
|
:param post_params: request post parameters,
|
118
131
|
`application/x-www-form-urlencoded`
|
119
132
|
and `multipart/form-data`
|
120
|
-
:param _preload_content: if False, the urllib3.HTTPResponse object will
|
121
|
-
be returned without reading/decoding response
|
122
|
-
data. Default is True.
|
123
133
|
:param _request_timeout: timeout setting for this request. If one
|
124
134
|
number provided, it will be total request
|
125
135
|
timeout. It can also be a pair (tuple) of
|
126
136
|
(connection, read) timeouts.
|
127
137
|
"""
|
128
138
|
method = method.upper()
|
129
|
-
assert method in [
|
130
|
-
|
139
|
+
assert method in [
|
140
|
+
'GET',
|
141
|
+
'HEAD',
|
142
|
+
'DELETE',
|
143
|
+
'POST',
|
144
|
+
'PUT',
|
145
|
+
'PATCH',
|
146
|
+
'OPTIONS'
|
147
|
+
]
|
131
148
|
|
132
149
|
if post_params and body:
|
133
150
|
raise ApiValueError(
|
@@ -136,63 +153,84 @@ class RESTClientObject(object):
|
|
136
153
|
|
137
154
|
post_params = post_params or {}
|
138
155
|
headers = headers or {}
|
139
|
-
# url already contains the URL query string
|
140
|
-
# so reset query_params to empty dict
|
141
|
-
query_params = {}
|
142
156
|
|
143
157
|
timeout = None
|
144
158
|
if _request_timeout:
|
145
|
-
if isinstance(_request_timeout, (int,float)):
|
159
|
+
if isinstance(_request_timeout, (int, float)):
|
146
160
|
timeout = urllib3.Timeout(total=_request_timeout)
|
147
|
-
elif (
|
148
|
-
|
161
|
+
elif (
|
162
|
+
isinstance(_request_timeout, tuple)
|
163
|
+
and len(_request_timeout) == 2
|
164
|
+
):
|
149
165
|
timeout = urllib3.Timeout(
|
150
|
-
connect=_request_timeout[0],
|
166
|
+
connect=_request_timeout[0],
|
167
|
+
read=_request_timeout[1]
|
168
|
+
)
|
151
169
|
|
152
170
|
try:
|
153
171
|
# For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE`
|
154
172
|
if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']:
|
155
173
|
|
156
174
|
# no content type provided or payload is json
|
157
|
-
|
175
|
+
content_type = headers.get('Content-Type')
|
176
|
+
if (
|
177
|
+
not content_type
|
178
|
+
or re.search('json', content_type, re.IGNORECASE)
|
179
|
+
):
|
158
180
|
request_body = None
|
159
181
|
if body is not None:
|
160
182
|
request_body = json.dumps(body)
|
161
183
|
r = self.pool_manager.request(
|
162
|
-
method,
|
184
|
+
method,
|
185
|
+
url,
|
163
186
|
body=request_body,
|
164
|
-
preload_content=_preload_content,
|
165
187
|
timeout=timeout,
|
166
|
-
headers=headers
|
167
|
-
|
188
|
+
headers=headers,
|
189
|
+
preload_content=False
|
190
|
+
)
|
191
|
+
elif content_type == 'application/x-www-form-urlencoded':
|
168
192
|
r = self.pool_manager.request(
|
169
|
-
method,
|
193
|
+
method,
|
194
|
+
url,
|
170
195
|
fields=post_params,
|
171
196
|
encode_multipart=False,
|
172
|
-
preload_content=_preload_content,
|
173
197
|
timeout=timeout,
|
174
|
-
headers=headers
|
175
|
-
|
198
|
+
headers=headers,
|
199
|
+
preload_content=False
|
200
|
+
)
|
201
|
+
elif content_type == 'multipart/form-data':
|
176
202
|
# must del headers['Content-Type'], or the correct
|
177
203
|
# Content-Type which generated by urllib3 will be
|
178
204
|
# overwritten.
|
179
205
|
del headers['Content-Type']
|
180
206
|
r = self.pool_manager.request(
|
181
|
-
method,
|
207
|
+
method,
|
208
|
+
url,
|
182
209
|
fields=post_params,
|
183
210
|
encode_multipart=True,
|
184
|
-
preload_content=_preload_content,
|
185
211
|
timeout=timeout,
|
186
|
-
headers=headers
|
212
|
+
headers=headers,
|
213
|
+
preload_content=False
|
214
|
+
)
|
187
215
|
# Pass a `string` parameter directly in the body to support
|
188
|
-
# other content types than
|
189
|
-
# provided in serialized form
|
216
|
+
# other content types than JSON when `body` argument is
|
217
|
+
# provided in serialized form.
|
190
218
|
elif isinstance(body, str) or isinstance(body, bytes):
|
191
|
-
request_body = body
|
192
219
|
r = self.pool_manager.request(
|
193
|
-
method,
|
220
|
+
method,
|
221
|
+
url,
|
222
|
+
body=body,
|
223
|
+
timeout=timeout,
|
224
|
+
headers=headers,
|
225
|
+
preload_content=False
|
226
|
+
)
|
227
|
+
elif headers['Content-Type'] == 'text/plain' and isinstance(body, bool):
|
228
|
+
request_body = "true" if body else "false"
|
229
|
+
r = self.pool_manager.request(
|
230
|
+
method,
|
231
|
+
url,
|
194
232
|
body=request_body,
|
195
|
-
preload_content=
|
233
|
+
preload_content=False,
|
196
234
|
timeout=timeout,
|
197
235
|
headers=headers)
|
198
236
|
else:
|
@@ -203,99 +241,16 @@ class RESTClientObject(object):
|
|
203
241
|
raise ApiException(status=0, reason=msg)
|
204
242
|
# For `GET`, `HEAD`
|
205
243
|
else:
|
206
|
-
r = self.pool_manager.request(
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
244
|
+
r = self.pool_manager.request(
|
245
|
+
method,
|
246
|
+
url,
|
247
|
+
fields={},
|
248
|
+
timeout=timeout,
|
249
|
+
headers=headers,
|
250
|
+
preload_content=False
|
251
|
+
)
|
211
252
|
except urllib3.exceptions.SSLError as e:
|
212
|
-
msg = "
|
253
|
+
msg = "\n".join([type(e).__name__, str(e)])
|
213
254
|
raise ApiException(status=0, reason=msg)
|
214
255
|
|
215
|
-
|
216
|
-
r = RESTResponse(r)
|
217
|
-
|
218
|
-
# log response body
|
219
|
-
logger.debug("response body: %s", r.data)
|
220
|
-
|
221
|
-
if not 200 <= r.status <= 299:
|
222
|
-
if r.status == 401:
|
223
|
-
raise UnauthorizedException(http_resp=r)
|
224
|
-
|
225
|
-
if r.status == 403:
|
226
|
-
raise ForbiddenException(http_resp=r)
|
227
|
-
|
228
|
-
if r.status == 404:
|
229
|
-
raise NotFoundException(http_resp=r)
|
230
|
-
|
231
|
-
if 500 <= r.status <= 599:
|
232
|
-
raise ServiceException(http_resp=r)
|
233
|
-
|
234
|
-
raise ApiException(http_resp=r)
|
235
|
-
|
236
|
-
return r
|
237
|
-
|
238
|
-
def get_request(self, url, headers=None, query_params=None, _preload_content=True,
|
239
|
-
_request_timeout=None):
|
240
|
-
return self.request("GET", url,
|
241
|
-
headers=headers,
|
242
|
-
_preload_content=_preload_content,
|
243
|
-
_request_timeout=_request_timeout,
|
244
|
-
query_params=query_params)
|
245
|
-
|
246
|
-
def head_request(self, url, headers=None, query_params=None, _preload_content=True,
|
247
|
-
_request_timeout=None):
|
248
|
-
return self.request("HEAD", url,
|
249
|
-
headers=headers,
|
250
|
-
_preload_content=_preload_content,
|
251
|
-
_request_timeout=_request_timeout,
|
252
|
-
query_params=query_params)
|
253
|
-
|
254
|
-
def options_request(self, url, headers=None, query_params=None, post_params=None,
|
255
|
-
body=None, _preload_content=True, _request_timeout=None):
|
256
|
-
return self.request("OPTIONS", url,
|
257
|
-
headers=headers,
|
258
|
-
query_params=query_params,
|
259
|
-
post_params=post_params,
|
260
|
-
_preload_content=_preload_content,
|
261
|
-
_request_timeout=_request_timeout,
|
262
|
-
body=body)
|
263
|
-
|
264
|
-
def delete_request(self, url, headers=None, query_params=None, body=None,
|
265
|
-
_preload_content=True, _request_timeout=None):
|
266
|
-
return self.request("DELETE", url,
|
267
|
-
headers=headers,
|
268
|
-
query_params=query_params,
|
269
|
-
_preload_content=_preload_content,
|
270
|
-
_request_timeout=_request_timeout,
|
271
|
-
body=body)
|
272
|
-
|
273
|
-
def post_request(self, url, headers=None, query_params=None, post_params=None,
|
274
|
-
body=None, _preload_content=True, _request_timeout=None):
|
275
|
-
return self.request("POST", url,
|
276
|
-
headers=headers,
|
277
|
-
query_params=query_params,
|
278
|
-
post_params=post_params,
|
279
|
-
_preload_content=_preload_content,
|
280
|
-
_request_timeout=_request_timeout,
|
281
|
-
body=body)
|
282
|
-
|
283
|
-
def put_request(self, url, headers=None, query_params=None, post_params=None,
|
284
|
-
body=None, _preload_content=True, _request_timeout=None):
|
285
|
-
return self.request("PUT", url,
|
286
|
-
headers=headers,
|
287
|
-
query_params=query_params,
|
288
|
-
post_params=post_params,
|
289
|
-
_preload_content=_preload_content,
|
290
|
-
_request_timeout=_request_timeout,
|
291
|
-
body=body)
|
292
|
-
|
293
|
-
def patch_request(self, url, headers=None, query_params=None, post_params=None,
|
294
|
-
body=None, _preload_content=True, _request_timeout=None):
|
295
|
-
return self.request("PATCH", url,
|
296
|
-
headers=headers,
|
297
|
-
query_params=query_params,
|
298
|
-
post_params=post_params,
|
299
|
-
_preload_content=_preload_content,
|
300
|
-
_request_timeout=_request_timeout,
|
301
|
-
body=body)
|
256
|
+
return RESTResponse(r)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: stadiamaps
|
3
|
-
Version: 1.0
|
3
|
+
Version: 2.1.0
|
4
4
|
Summary: Stadia Maps Geospatial APIs
|
5
5
|
Home-page: https://github.com/stadiamaps/stadiamaps-api-py
|
6
6
|
Author: Stadia Maps Support
|
@@ -8,10 +8,10 @@ Author-email: support@stadiamaps.com
|
|
8
8
|
Keywords: OpenAPI,OpenAPI-Generator,Stadia Maps Geospatial APIs
|
9
9
|
Description-Content-Type: text/markdown
|
10
10
|
License-File: LICENSE.txt
|
11
|
-
Requires-Dist: urllib3
|
11
|
+
Requires-Dist: urllib3 <2.1.0,>=1.25.3
|
12
12
|
Requires-Dist: python-dateutil
|
13
|
-
Requires-Dist: pydantic
|
14
|
-
Requires-Dist:
|
13
|
+
Requires-Dist: pydantic >=2
|
14
|
+
Requires-Dist: typing-extensions >=4.7.1
|
15
15
|
|
16
16
|
|
17
17
|
# Stadia Maps Python API Client
|
@@ -0,0 +1,128 @@
|
|
1
|
+
stadiamaps/__init__.py,sha256=-VFAw8fUecLVopfp91nrx9V5J8k9nldiMKV3ivZEL9k,6996
|
2
|
+
stadiamaps/api_client.py,sha256=VmyjVgbWofIlSuqE8vAMei4v8dZ5AhXZfsA1XsgM2_k,25814
|
3
|
+
stadiamaps/api_response.py,sha256=eMxw1mpmJcoGZ3gs9z6jM4oYoZ10Gjk333s9sKxGv7s,652
|
4
|
+
stadiamaps/configuration.py,sha256=obV6nAd-5vdwzro0ErUMLxpdtEZSq6RlmVt-MAVxxJA,15562
|
5
|
+
stadiamaps/exceptions.py,sha256=2CqC_epuXSVqL6yAy06RbwoQm-mxk1AbT8eBeldDdvY,6019
|
6
|
+
stadiamaps/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
+
stadiamaps/rest.py,sha256=PltCVcvY9XFtu_8x1lqMzZE_aKULGw7CufXhDoZwNA0,9275
|
8
|
+
stadiamaps/api/__init__.py,sha256=NRdfWLDRL2TYgITiS6K4OX8lmmVVmf9-_yyMe2_6hTs,208
|
9
|
+
stadiamaps/api/geocoding_api.py,sha256=zToQI5Fgmi7_QxX8HhIwYXwnPj-g47PCP68yn_zBNjw,147742
|
10
|
+
stadiamaps/api/geospatial_api.py,sha256=cFvm8eYKa8msZ-a8Kv01UZxfKTHf7pYPsWX7zKpTUiw,29289
|
11
|
+
stadiamaps/api/routing_api.py,sha256=xetos4WL1oo-Tg9l7zpNbgt-g9mAk_AJqloA2YMq89Y,80984
|
12
|
+
stadiamaps/models/__init__.py,sha256=m3buQkq15YF7mXlJO2GEUK5XGLszrA0Q09P2a64R3Tk,6328
|
13
|
+
stadiamaps/models/access.py,sha256=_n9bdEipIwldfMeUt8q8a3CL-s97hIa-GdQIvykBQLk,4179
|
14
|
+
stadiamaps/models/admin_region.py,sha256=fPJbvA-HorkesF6NSy13-Gdqyv6VRaKEEq9lXu9JaD0,3793
|
15
|
+
stadiamaps/models/administrative.py,sha256=48neu4JY_E9902h-ufKy7sclefBC-GnqQ56Zzjo6TjU,3842
|
16
|
+
stadiamaps/models/auto_costing_options.py,sha256=XTbTGUlFvc32iwCcLCIVvi323U8pBwDVpea78NayBUs,12767
|
17
|
+
stadiamaps/models/auto_costing_options_all_of.py,sha256=JSiFHNEljR4if13lP3jeJc8ny_gSfVzyQZErdt6LaBM,7083
|
18
|
+
stadiamaps/models/base_costing_options.py,sha256=r2UdXNA0vVzlOPrzPiinlPCdDPoTpBxVXqhYTiSb9eg,7721
|
19
|
+
stadiamaps/models/base_trace_request.py,sha256=43I7u80GaqVumR7GCt1bdHc_XL5CY6A0scTZMY9d7fk,7086
|
20
|
+
stadiamaps/models/bicycle_costing_options.py,sha256=fx71vJLe-dLFdD6HLJoZV15lR4-2tHdTk5fLZgGnblU,11693
|
21
|
+
stadiamaps/models/bicycle_costing_options_all_of.py,sha256=AhDT4CYE3wRA0j1EXvBiK_Bevw2mN-WQA4AnAb7uM5A,5904
|
22
|
+
stadiamaps/models/bike_network.py,sha256=LoxqA9ZdQthGTGDQMClKZ-C5C4t4OI1Et8TK5Fqs4tg,3432
|
23
|
+
stadiamaps/models/contour.py,sha256=Lbk9XuyqfZLN4AuC_pxmHHyi-rkc_eomYxgY3boNSwo,3744
|
24
|
+
stadiamaps/models/coordinate.py,sha256=heKoE1ZKzaXSxs8YHVBDHQkKyOC5iwbTUN4IeqZo1WA,3525
|
25
|
+
stadiamaps/models/costing_model.py,sha256=8NqiI6TKF0pIzqHba5_SOVvjDWoGB72xLWaI7SE640s,1369
|
26
|
+
stadiamaps/models/costing_options.py,sha256=3OnbC-IZVjPv4fFGCiEQr6_yOrGXBaPD6PfVBFRSJNo,6269
|
27
|
+
stadiamaps/models/directions_options.py,sha256=okHiuewfnvlRWumnmdKi7BcQj0hqmYtv-dcFybP3Cn0,4171
|
28
|
+
stadiamaps/models/distance_unit.py,sha256=IwKHxqcPQ_ouLXaM_uDt5AL7xMgDsa8FEM4CDqc5eyo,780
|
29
|
+
stadiamaps/models/edge_sign.py,sha256=aRtsVkS-zMWnXws6byydnK8IJAdPhQkJv_9Q93LcW3Y,3491
|
30
|
+
stadiamaps/models/edge_use.py,sha256=flEgcrJi-M1rZPNaZrNJeGx57s895GoX_mTOwr7GT3s,1663
|
31
|
+
stadiamaps/models/end_node.py,sha256=2aTaghdoLKA2FG-HfacdImuEuYjhCJUKRk0poMdPIPk,4718
|
32
|
+
stadiamaps/models/geo_attributes.py,sha256=WBC5zqZmg2WBoXP-V4agxCY5oyVPgmF5HWxKkgjH7eM,4213
|
33
|
+
stadiamaps/models/geo_json_geometry.py,sha256=ALrUVa9L7bVjsuiFgJPI9VeG2ssTfvHoalcFzzupL7Y,6217
|
34
|
+
stadiamaps/models/geo_json_geometry_base.py,sha256=Diox7mIfX_MtMc7Zte0H_OI5FaCFlw1WFW6gCeuGhg4,3532
|
35
|
+
stadiamaps/models/geo_json_line_string.py,sha256=kAwngCbhxCVEf9TrWKPpQnPOPRYtdRXcYHXAZImHm4s,3773
|
36
|
+
stadiamaps/models/geo_json_line_string_all_of.py,sha256=_vHsj7n-c1QEAoL9M8MAWj7Q1wv4AtqpG0lXHluRYzA,2663
|
37
|
+
stadiamaps/models/geo_json_point.py,sha256=eYCBFkq9c6Cqz4Y8Q1yfLxdlPKJ6WyjLwgylwi0bvCA,3747
|
38
|
+
stadiamaps/models/geo_json_point_all_of.py,sha256=Md1qYy2GAtnsy_8IwXrYXlNc5e_RBAfjTSBKzrrDUn8,2614
|
39
|
+
stadiamaps/models/geo_json_polygon.py,sha256=shOhM2z471QFvTp6k5wCnFRdmJMGywyBl73FguXd200,3767
|
40
|
+
stadiamaps/models/geo_json_polygon_all_of.py,sha256=lOsNbT0B-2d_wJTwOIQt7gny_aldHzT9cMC5XoIETtE,2648
|
41
|
+
stadiamaps/models/geocoding_object.py,sha256=1Lss45UrLiapaWXly1lQ9uPVCUJUmrTc5zyQiD5JH0w,4217
|
42
|
+
stadiamaps/models/height_request.py,sha256=bpxvplMwxYKVfljbEYo2_KJWDpvjCtswb3taL51Kjh8,5950
|
43
|
+
stadiamaps/models/height_response.py,sha256=QdxJGNdTVdYP0zqFm1NV2THTaCJ3WguMMXK5fXybbys,5092
|
44
|
+
stadiamaps/models/highway_classification.py,sha256=PEhUxKBSxOuqdRb2DZAYjuO-Ekaj-DBtj5omsnCmbn8,6219
|
45
|
+
stadiamaps/models/intersecting_edge.py,sha256=3UMuwJOcOuz3OhuznWUQ4POlX1FjBI0alQn36x3DXW8,4608
|
46
|
+
stadiamaps/models/isochrone_costing_model.py,sha256=rJvILKpdkB1iWllxQ0VZjlE6d0cFXH6FxUU8b-HG3V8,851
|
47
|
+
stadiamaps/models/isochrone_feature.py,sha256=1KABxxqp32px57kuePihDFkBLC1RrtUnuuCkUlQQt-s,3996
|
48
|
+
stadiamaps/models/isochrone_properties.py,sha256=JkiYO7B6KNgGLnVuOFxAIEeJeKXIv5Mm4fBly7ep5O0,4235
|
49
|
+
stadiamaps/models/isochrone_request.py,sha256=M3LwEzvsy7Q_sk4A1fu5Bl9kcxinC0vtYuIElKJK3JM,6701
|
50
|
+
stadiamaps/models/isochrone_response.py,sha256=0aivu9sMDAByO8V0x4B_VFxKGqDRiOQfqvYJRRKBhmw,4042
|
51
|
+
stadiamaps/models/locate_detailed_edge.py,sha256=OV4-NzP8ZanhSlMHAaCwfwjo6Dnz_UdknVr2G21ya9k,10839
|
52
|
+
stadiamaps/models/locate_edge.py,sha256=kbz_ZruIqP4dQWhnOwA038glEXkHMiesulE45ZyIE9g,6553
|
53
|
+
stadiamaps/models/locate_edge_info.py,sha256=gGqaUZirBe6dOZsv16yGJv4LzCBa5uuifSFSmsayvIA,4350
|
54
|
+
stadiamaps/models/locate_node.py,sha256=noqqNwwbgRQtj0QLh6X_NuOlHEWecY2WXoS1T2c87N8,5948
|
55
|
+
stadiamaps/models/locate_node_all_of.py,sha256=CIpyV5ssH034gmC-fHlshAOZkolUy7LYejgHLqHeMyI,4800
|
56
|
+
stadiamaps/models/locate_object.py,sha256=ks-6DFWoN51qPD2RSUQJu5z_QJUoymYm_DF9rhTjh-w,4671
|
57
|
+
stadiamaps/models/maneuver_sign.py,sha256=LoXIBMnrUqnQ51ths1nxHk1j04R7FXo9nOSoRxgLmCw,6142
|
58
|
+
stadiamaps/models/maneuver_sign_element.py,sha256=u9VDRpaKuIOXLvYHT_bxHGv_1gAF9-QPYKtsOT88EpE,3711
|
59
|
+
stadiamaps/models/map_match_costing_model.py,sha256=96Ib07RPWgHrdog4mpmD2Oq9dQZsaa3uFUN8K1y7acA,864
|
60
|
+
stadiamaps/models/map_match_request.py,sha256=ODYakXFrMO2WnIg1VKFP4S6FtTYm75JNW1jJMA-jU5A,8962
|
61
|
+
stadiamaps/models/map_match_request_all_of.py,sha256=4I-A8Lvt59Gu-xMvfsHIe-GcCfO_qLab6uCKAXqTasM,4291
|
62
|
+
stadiamaps/models/map_match_route_response.py,sha256=itsD_QJ8KQ0CV5D_rOEIFSvn0XyKjLfRnP-LrNfb0d8,4371
|
63
|
+
stadiamaps/models/map_match_route_response_all_of.py,sha256=WOWvtLLp801qQM4aJoKR-MTuL6e1nJ3C7FrTRPJ4gxI,2649
|
64
|
+
stadiamaps/models/map_match_trace_options.py,sha256=0nGHvftZsKwnf0cHD4dYsBX5akJZ1f6qyeEMzo2vc40,4609
|
65
|
+
stadiamaps/models/map_match_waypoint.py,sha256=UzD7TA_LjrijjjmVSknaaVqIqlBP_nQS3Fc3rWSeyD4,4836
|
66
|
+
stadiamaps/models/map_match_waypoint_all_of.py,sha256=wLt5dB0JfKtZOqRcNoFZod2k-EJ3OcBGh_nhTjFA2gk,2793
|
67
|
+
stadiamaps/models/matched_point.py,sha256=woi9rxiogKse_NNtInfUqCRDpK44p5RYfst5Mh1DzW0,5417
|
68
|
+
stadiamaps/models/matrix_costing_model.py,sha256=Dkt8N7UIDFZQ3VQ_Zm5t23R8L0uW1G6NQcCi1WS6Qv8,1034
|
69
|
+
stadiamaps/models/matrix_distance.py,sha256=IG9muZnVfveJxwC3l5GtmtIlKCxieHqdXsNQsD9VajI,3859
|
70
|
+
stadiamaps/models/matrix_request.py,sha256=-QUAdyH3rWagfNWtzZIqQHYB32YnxbMgGBJ8w1wxDnY,6631
|
71
|
+
stadiamaps/models/matrix_response.py,sha256=0alXVwnSAarw6_bBpRvvq98MFp6nWgZD2Vd6BZCpm8E,6356
|
72
|
+
stadiamaps/models/motor_scooter_costing_options.py,sha256=CUZKVv8NGmOIWzveCQpVQdRQR3PagcjYwOE7d7eomoc,13848
|
73
|
+
stadiamaps/models/motor_scooter_costing_options_all_of.py,sha256=3XuHRpUB_VvAro0XZwCbq1ExJbEMnB5cm6iagIruuP4,3525
|
74
|
+
stadiamaps/models/motorcycle_costing_options.py,sha256=6PViLPDFirRErNFvgesBxCiwjHpEiZef69Eg9IAEleo,13304
|
75
|
+
stadiamaps/models/motorcycle_costing_options_all_of.py,sha256=NJQD3ez643xF0r9Dmix88gGrPLzrbgJNBPz9il6G9HM,3479
|
76
|
+
stadiamaps/models/nearest_roads_request.py,sha256=6j9RbVzk5IgDJjIyDF83inL7VdtBQ4FGiKFiZkaqenM,5563
|
77
|
+
stadiamaps/models/node_id.py,sha256=BVkrdI9SkTbC29icM8N6NqyKSvtCiip8Odf-RpHyzRM,3367
|
78
|
+
stadiamaps/models/node_type.py,sha256=25heHpzn6IxCZxmVq5oZCmOX6-UwEAciCNbQfmmzZz0,1052
|
79
|
+
stadiamaps/models/optimized_route_request.py,sha256=OaM4CvxXDE14EFCGUti4ewS_Y4F8njowtCGpIwQhV_g,5776
|
80
|
+
stadiamaps/models/pedestrian_costing_options.py,sha256=6tNj2lVtv5VBgLfESEjrM-k2N85otEuRIHfjkCD-60k,9210
|
81
|
+
stadiamaps/models/pelias_geo_json_feature.py,sha256=HusesVF7Z05c92Iv4PIL6bCy3H5OhZLU4f7mg9bXBto,4669
|
82
|
+
stadiamaps/models/pelias_geo_json_properties.py,sha256=1t65sCH99PZe24Q-hX1GqCd8RaFv9q7Aown-4Cjd6EU,8513
|
83
|
+
stadiamaps/models/pelias_geo_json_properties_addendum.py,sha256=2T2OcxhJsjegruWx3VC_WBvT1RIp31-xjjaNXRMVEYY,3714
|
84
|
+
stadiamaps/models/pelias_geo_json_properties_addendum_osm.py,sha256=DtybbTd-KYoqo6RZV3IMekagk9oa5JhEZ-hOrMRfbLY,3519
|
85
|
+
stadiamaps/models/pelias_layer.py,sha256=PplNgnnZMkEjo0Q6WJLJ7P9igd3FhhBEA297EwZhnMk,2522
|
86
|
+
stadiamaps/models/pelias_response.py,sha256=p4DYHIwTvYTykfpLIkwewEIwej7bQ1zUQXt6iGgGW4A,4381
|
87
|
+
stadiamaps/models/pelias_response_geocoding.py,sha256=KPrpxVWAvd6U0lZCcsHA2WI29Ij4jyVl3YOuxvhvxmo,3621
|
88
|
+
stadiamaps/models/pelias_source.py,sha256=9Ah1tfNKwMcRG1MkES4sxzpqP7tsdA2yKTDSN8USy9w,1023
|
89
|
+
stadiamaps/models/restrictions.py,sha256=EraOgoF3VUeS_e_3FlVTZLVJA6mKa_cumF2GpBvSWE0,4203
|
90
|
+
stadiamaps/models/road_class.py,sha256=e3OhyGJiyoFzt1Dy8kXE7AloM2jZs2GL5a0bmom2xhY,1002
|
91
|
+
stadiamaps/models/route_leg.py,sha256=4xqYjmtFC7aGebPSVMYYKYQRSOn3w72y9cXrj-e1RgM,4252
|
92
|
+
stadiamaps/models/route_maneuver.py,sha256=N-jV-PrUMerX3CIUKZaTEhXA07D6-oFkqr31T5pDUfE,12445
|
93
|
+
stadiamaps/models/route_request.py,sha256=86s_aLpKV_VQNo7xESj0_EZ2-AZ0MMvzGNjDaq6uteM,7169
|
94
|
+
stadiamaps/models/route_response.py,sha256=XEaL1muTPxfFAx2_X7H9gLfOINBegdxWObT5hRk8GW4,4199
|
95
|
+
stadiamaps/models/route_response_alternates_inner.py,sha256=P8ttLCTeyWHgbw2KTqrzpiLPvfUuaoITpe3uMA9N880,3448
|
96
|
+
stadiamaps/models/route_response_trip.py,sha256=dArv_kidtG7keQJCrRXRP5GqTaSXJMBMd_MgGbR125I,4565
|
97
|
+
stadiamaps/models/route_summary.py,sha256=dNrySwnrw5viec6F6CpIsYxM7mvybAIyjuCsXFvFdxo,4117
|
98
|
+
stadiamaps/models/route_trip.py,sha256=PkfgeLO_ITPkh7nyRfbfnhVMvqIFKJquvm26nD8TOjU,5077
|
99
|
+
stadiamaps/models/routing_response_waypoint.py,sha256=Ef-4YjE9fS0aNcVo_9NsRQaHzK5KmlNZPJiI75DkiLc,4778
|
100
|
+
stadiamaps/models/routing_response_waypoint_all_of.py,sha256=2u_wmV3NfKkz1rl_DDAbc_6rqMdamOXCFA3XSmh22sA,2756
|
101
|
+
stadiamaps/models/routing_waypoint.py,sha256=QZEX4UKRLXHDu0zMscl2k-aUit3cDcAr6PP3GUYgIUE,9513
|
102
|
+
stadiamaps/models/routing_waypoint_all_of.py,sha256=v7BryWQd_LrFAaEXhHKQBU1OBiF4WmCRN8FJstZUFzU,7320
|
103
|
+
stadiamaps/models/routing_waypoint_all_of_search_filter.py,sha256=GETfo0qyn-Y4y7hr5U-cU_RN3JD6VyaxXV8HRFk9ry4,4506
|
104
|
+
stadiamaps/models/simple_routing_waypoint.py,sha256=0CI91RwWuJabAFJLZ1ir-cczXYbtij3X0wBEtSRRFbE,4502
|
105
|
+
stadiamaps/models/simple_routing_waypoint_all_of.py,sha256=mFHVKuKWz3AuOxfqyGA5D_pai-RCu4Msdmmgf7fwm7A,3385
|
106
|
+
stadiamaps/models/speeds.py,sha256=AQcWArM6suDbrXRVLK_tnaEDTnBAnyB6orglFtJ9Gps,4550
|
107
|
+
stadiamaps/models/trace_attribute_filter_options.py,sha256=PW3aWE3qex8He3Ymh3Vj8GUsjIUPj-xr4NpLoqsUzH4,3813
|
108
|
+
stadiamaps/models/trace_attribute_key.py,sha256=i0WDVoErzlXTJTkhww4fu3R-ef20PyPA5eKOK5KGqJM,4323
|
109
|
+
stadiamaps/models/trace_attributes_base_response.py,sha256=Zd9526cvuRQeta35Y5_ELOxK-t-dwoyZRKSzI3f2ezs,5915
|
110
|
+
stadiamaps/models/trace_attributes_request.py,sha256=bZAXoJg7GavdE90mRGNW5ikUhP0uzB2hb22XKPvEKVA,7776
|
111
|
+
stadiamaps/models/trace_attributes_request_all_of.py,sha256=ClTna0geZtUYYJHbVf96BwchKQ8sbf9PwWqKtSNXkyM,2967
|
112
|
+
stadiamaps/models/trace_attributes_request_all_of_filters.py,sha256=GM0OdKUGHcmDECtjbmifzLwS-SnbZWSWzn1qGWgia0o,3374
|
113
|
+
stadiamaps/models/trace_attributes_response.py,sha256=O2KlzSUs0o9urliow3y5WlNBq6BHnJ0vAcY2DYzAdHI,7011
|
114
|
+
stadiamaps/models/trace_attributes_response_all_of.py,sha256=3RKI65ZLB1oH9l_S2yiNWewc-G43E7KrYwr8OK-iRlQ,3632
|
115
|
+
stadiamaps/models/trace_edge.py,sha256=0XW1ai5-5Vn3zLGnYb9QfU13Nqz5HiycBcd7cUG2ny8,14710
|
116
|
+
stadiamaps/models/travel_mode.py,sha256=cwABh_iyGXAmhmN1ldyqJ5wMHKmx-E-KPwxEpSvnhYc,844
|
117
|
+
stadiamaps/models/traversability.py,sha256=Qj5XTpvwzNlgWQ0YN1PZDDOctJQuRjuHCnOTF0T7KB0,860
|
118
|
+
stadiamaps/models/truck_costing_options.py,sha256=fTitVa7WDBDqeDQkG9rM5KBes5rHQbuzDAtOhSFHAzs,13669
|
119
|
+
stadiamaps/models/truck_costing_options_all_of.py,sha256=WJDDKZ8rNATbzi8EUoceT7qDzK_kTyu_MQuh45M7Uy0,3804
|
120
|
+
stadiamaps/models/tz_response.py,sha256=e3dEKl-xH3LU-Lp5p31g1P9PGVjh2ORGHj1_zuITmzE,3969
|
121
|
+
stadiamaps/models/valhalla_languages.py,sha256=7BIRhOm23q423Pn_LiCzvT70oIi6XrcEvCoseOuK988,1551
|
122
|
+
stadiamaps/models/valhalla_long_units.py,sha256=XMguGKM-mmWXyCJ5s1SNxiIrAfQJP6V70eo-bkTD3d8,817
|
123
|
+
stadiamaps/models/warning.py,sha256=Ov7Zz1IweANsae5MCNhM9wNRbXvjn9r3jWgXJ6Qvn4U,3206
|
124
|
+
stadiamaps-2.1.0.dist-info/LICENSE.txt,sha256=vs0H95Mi3Rf1pSskD7rv4KbXLYCSYZ6cqZcFmek0hOg,1518
|
125
|
+
stadiamaps-2.1.0.dist-info/METADATA,sha256=bPxictxuw4IymgAFJZ8Q-9mmSPOEhVpuhBxWxVpm5ds,2455
|
126
|
+
stadiamaps-2.1.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
127
|
+
stadiamaps-2.1.0.dist-info/top_level.txt,sha256=dFHpcPo1v2Ajmc74F29BleqU5u8MLB0fgTnNYJIatx0,11
|
128
|
+
stadiamaps-2.1.0.dist-info/RECORD,,
|