diff options
| -rw-r--r-- | fietsboek/__init__.py | 2 | ||||
| -rw-r--r-- | fietsboek/actions.py | 10 | ||||
| -rw-r--r-- | fietsboek/osm.py | 25 | ||||
| -rw-r--r-- | fietsboek/scripts/fietscron.py | 2 | ||||
| -rw-r--r-- | fietsboek/trackmap.py | 3 | ||||
| -rw-r--r-- | fietsboek/updater/scripts/upd_20260930_7fa8kflikvnlvuqe.py | 2 |
6 files changed, 28 insertions, 16 deletions
diff --git a/fietsboek/__init__.py b/fietsboek/__init__.py index 3edb243..b2af484 100644 --- a/fietsboek/__init__.py +++ b/fietsboek/__init__.py @@ -158,6 +158,7 @@ def create_data_folders(data_dir: Path): def main(global_config, **settings): """This function returns a Pyramid WSGI application.""" + # pylint: disable=too-many-locals # Avoid a circular import by not importing at the top level # pylint: disable=import-outside-toplevel,cyclic-import from .osm import OverpassApi @@ -182,6 +183,7 @@ def main(global_config, **settings): return redis.from_url(request.config.redis_url) overpass_api = OverpassApi.from_config(parsed_config) + def overpass_api_(_request): return overpass_api diff --git a/fietsboek/actions.py b/fietsboek/actions.py index 0c00fa9..3be9342 100644 --- a/fietsboek/actions.py +++ b/fietsboek/actions.py @@ -306,7 +306,7 @@ def extract_climbs( layer: TileLayerConfig, overpass_api: OverpassApi, *, - find_names: bool=True, + find_names: bool = True, ): """(Re-)extracts the climbs from the given track. @@ -314,14 +314,18 @@ def extract_climbs( :param dbsession: The database session. :param track: The track for which to extract climbs. + :param tile_requester: The tile requester to use to render preview images. + :param layer: The layer to use for preview images. + :param overpass_api: The overpass API to use for naming the climbs. + :param find_names: Whether names should be searched or not. """ - # pylint: disable=too-many-locals + # pylint: disable=too-many-locals,too-many-arguments track.climbs = [] dbsession.add(track) path = track.path() climbs = path.climbs() for climb_start, climb_end in climbs: - subpath = Path(path.points[climb_start:climb_end + 1]) + subpath = Path(path.points[climb_start : climb_end + 1]) movement_data = subpath.movement_data() preview = trackmap.render(subpath, layer, tile_requester) diff --git a/fietsboek/osm.py b/fietsboek/osm.py index de3c827..44e8b48 100644 --- a/fietsboek/osm.py +++ b/fietsboek/osm.py @@ -24,15 +24,15 @@ MAX_DISTANCE_WATER = 750 class ApiError(Exception): - pass + """Base error class for errors occuring in OSM/Overpass accesses.""" class ApiTimeout(ApiError): - pass + """API/Tile access timeout.""" class ApiNotOk(ApiError): - pass + """Server error response (non-200 status code).""" class OverpassApi: @@ -45,7 +45,6 @@ class OverpassApi: def __init__(self, interpreter_url: str): self.session = requests.Session() self.session.headers.update(HEADERS) - self.session.timeout = API_TIMEOUT self.url = interpreter_url def basic_auth(self, username: str, password: str): @@ -58,9 +57,14 @@ class OverpassApi: @classmethod def from_config(cls, config: Config) -> "OverpassApi": + """Construct an OverpassApi from the given fietsboek config. + + :param config: The config object. + :return: The API with correct URL/auth. + """ api = cls(config.overpass_url) if config.overpass_basic_username and config.overpass_basic_password: - api.basic_auth(config.overpass_basic_username, config.overpass_basic_password) + api.basic_auth(config.overpass_basic_username, str(config.overpass_basic_password)) return api def run_script(self, script: str) -> requests.Response: @@ -74,14 +78,18 @@ class OverpassApi: :return: The response. """ try: - with self.session.post(self.url, data={"data": script}) as response: + with self.session.post( + self.url, + data={"data": script}, + timeout=API_TIMEOUT, + ) as response: if response.status_code != 200: raise ApiNotOk( f"Overpass error response: {response.status_code} {response.reason}" ) return response except (requests.ReadTimeout, requests.ConnectTimeout) as exc: - raise ApiTimeout(f"Timeout when trying to access overpass at {self.url}") + raise ApiTimeout(f"Timeout when trying to access overpass at {self.url}") from exc def find_name(api: OverpassApi, path: Path) -> str | None: @@ -114,8 +122,7 @@ def find_name(api: OverpassApi, path: Path) -> str | None: except ApiError as exc: LOGGER.info("%s", exc) return None - else: - data = response.content + data = response.content LOGGER.debug("Got %s bytes of OSM-XML data, parsing...", len(data)) tree = ElementTree.fromstring(data) diff --git a/fietsboek/scripts/fietscron.py b/fietsboek/scripts/fietscron.py index e10efca..c9bb9dd 100644 --- a/fietsboek/scripts/fietscron.py +++ b/fietsboek/scripts/fietscron.py @@ -8,7 +8,7 @@ import click import pyramid.paster import redis as mod_redis from redis import Redis -from sqlalchemy import create_engine, delete, exists, not_, select +from sqlalchemy import delete, exists, not_, select from sqlalchemy.engine import Engine from sqlalchemy.orm import Session diff --git a/fietsboek/trackmap.py b/fietsboek/trackmap.py index c2400bb..df21af1 100644 --- a/fietsboek/trackmap.py +++ b/fietsboek/trackmap.py @@ -3,8 +3,8 @@ import io import logging import math -import requests +import requests from PIL import Image, ImageDraw from . import geo @@ -101,6 +101,7 @@ class TrackMapRenderer: return DEFAULT_ZOOM, DEFAULT_BBOX def _draw_base(self, image, zoom, bbox): + # pylint: disable=too-many-locals min_x, max_x, min_y, max_y = bbox # We center the track by centering its bounding box start_x = min_x - (self.size[0] - (max_x - min_x)) // 2 diff --git a/fietsboek/updater/scripts/upd_20260930_7fa8kflikvnlvuqe.py b/fietsboek/updater/scripts/upd_20260930_7fa8kflikvnlvuqe.py index e851d26..5ed4ae1 100644 --- a/fietsboek/updater/scripts/upd_20260930_7fa8kflikvnlvuqe.py +++ b/fietsboek/updater/scripts/upd_20260930_7fa8kflikvnlvuqe.py @@ -4,8 +4,6 @@ Add climbs table Date created: 2026-09-30 19:54:52.669074 """ -import time - import redis from sqlalchemy import select from sqlalchemy.orm import sessionmaker |
