99import geojson
1010import logging
1111from io import StringIO
12- from .errors import (OverpassSyntaxError , TimeoutError , MultipleRequestsError ,
13- ServerLoadError , UnknownOverpassError , ServerRuntimeError )
12+ from .errors import (
13+ OverpassSyntaxError ,
14+ TimeoutError ,
15+ MultipleRequestsError ,
16+ ServerLoadError ,
17+ UnknownOverpassError ,
18+ ServerRuntimeError ,
19+ )
1420
1521
1622class API (object ):
@@ -51,18 +57,13 @@ def __init__(self, *args, **kwargs):
5157 requests_log .setLevel (logging .DEBUG )
5258 requests_log .propagate = True
5359
54- def get (self ,
55- query ,
56- responseformat = "geojson" ,
57- verbosity = "body" ,
58- build = True ):
60+ def get (self , query , responseformat = "geojson" , verbosity = "body" , build = True ):
5961 """Pass in an Overpass query in Overpass QL."""
6062 # Construct full Overpass query
6163 if build :
6264 full_query = self ._construct_ql_query (
63- query ,
64- responseformat = responseformat ,
65- verbosity = verbosity )
65+ query , responseformat = responseformat , verbosity = verbosity
66+ )
6667 else :
6768 full_query = query
6869
@@ -71,13 +72,13 @@ def get(self,
7172
7273 # Get the response from Overpass
7374 r = self ._get_from_overpass (full_query )
74- content_type = r .headers .get (' content-type' )
75+ content_type = r .headers .get (" content-type" )
7576
7677 if self .debug :
7778 print (content_type )
7879 if content_type == "text/csv" :
7980 result = []
80- reader = csv .reader (StringIO (r .text ), delimiter = ' \t ' )
81+ reader = csv .reader (StringIO (r .text ), delimiter = " \t " )
8182 for row in reader :
8283 result .append (row )
8384 return result
@@ -92,12 +93,11 @@ def get(self,
9293 # Check for valid answer from Overpass.
9394 # A valid answer contains an 'elements' key at the root level.
9495 if "elements" not in response :
95- raise UnknownOverpassError (
96- "Received an invalid answer from Overpass." )
96+ raise UnknownOverpassError ("Received an invalid answer from Overpass." )
9797
9898 # If there is a 'remark' key, it spells trouble.
99- overpass_remark = response .get (' remark' , None )
100- if overpass_remark and overpass_remark .startswith (' runtime error' ):
99+ overpass_remark = response .get (" remark" , None )
100+ if overpass_remark and overpass_remark .startswith (" runtime error" ):
101101 raise ServerRuntimeError (overpass_remark )
102102
103103 if responseformat is not "geojson" :
@@ -121,15 +121,12 @@ def _construct_ql_query(self, userquery, responseformat, verbosity):
121121
122122 if responseformat == "geojson" :
123123 template = self ._GEOJSON_QUERY_TEMPLATE
124- complete_query = template .format (
125- query = raw_query ,
126- verbosity = verbosity )
124+ complete_query = template .format (query = raw_query , verbosity = verbosity )
127125 else :
128126 template = self ._QUERY_TEMPLATE
129127 complete_query = template .format (
130- query = raw_query ,
131- out = responseformat ,
132- verbosity = verbosity )
128+ query = raw_query , out = responseformat , verbosity = verbosity
129+ )
133130
134131 if self .debug :
135132 print (complete_query )
@@ -144,7 +141,7 @@ def _get_from_overpass(self, query):
144141 data = payload ,
145142 timeout = self .timeout ,
146143 proxies = self .proxies ,
147- headers = {' Accept-Charset' : ' utf-8;q=0.7,*;q=0.7' }
144+ headers = {" Accept-Charset" : " utf-8;q=0.7,*;q=0.7" },
148145 )
149146
150147 except requests .exceptions .Timeout :
@@ -160,10 +157,10 @@ def _get_from_overpass(self, query):
160157 elif self ._status == 504 :
161158 raise ServerLoadError (self ._timeout )
162159 raise UnknownOverpassError (
163- "The request returned status code {code}" .format (
164- code = self . _status ) )
160+ "The request returned status code {code}" .format (code = self . _status )
161+ )
165162 else :
166- r .encoding = ' utf-8'
163+ r .encoding = " utf-8"
167164 return r
168165
169166 def _as_geojson (self , elements ):
@@ -185,9 +182,8 @@ def _as_geojson(self, elements):
185182 continue
186183
187184 feature = geojson .Feature (
188- id = elem ["id" ],
189- geometry = geometry ,
190- properties = elem .get ("tags" ))
185+ id = elem ["id" ], geometry = geometry , properties = elem .get ("tags" )
186+ )
191187 features .append (feature )
192188
193189 return geojson .FeatureCollection (features )
0 commit comments