aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2025-11-01 15:44:34 +0100
committerDaniel Schadt <kingdread@gmx.de>2025-11-01 15:57:24 +0100
commitd8ef163bc48d654dc83a56cc6a6538ea442eee4f (patch)
tree5a87861ed518979bf3fd5c104a731c09642639f2
parent2dcc034c0123c45725204554e75ea151174142f7 (diff)
downloadfietsboek-d8ef163bc48d654dc83a56cc6a6538ea442eee4f.tar.gz
fietsboek-d8ef163bc48d654dc83a56cc6a6538ea442eee4f.tar.bz2
fietsboek-d8ef163bc48d654dc83a56cc6a6538ea442eee4f.zip
fix lint
-rw-r--r--fietsboek/alembic/versions/20251019_90b39fdf6e4b.py3
-rw-r--r--fietsboek/convert.py16
-rw-r--r--fietsboek/geo.py27
-rw-r--r--fietsboek/models/track.py28
-rw-r--r--fietsboek/trackmap.py3
-rw-r--r--fietsboek/transformers/__init__.py1
-rw-r--r--fietsboek/transformers/breaks.py2
-rw-r--r--fietsboek/transformers/elevation.py2
-rw-r--r--fietsboek/views/admin.py2
-rw-r--r--fietsboek/views/browse.py1
-rw-r--r--fietsboek/views/profile.py9
11 files changed, 43 insertions, 51 deletions
diff --git a/fietsboek/alembic/versions/20251019_90b39fdf6e4b.py b/fietsboek/alembic/versions/20251019_90b39fdf6e4b.py
index 1213ebf..0192920 100644
--- a/fietsboek/alembic/versions/20251019_90b39fdf6e4b.py
+++ b/fietsboek/alembic/versions/20251019_90b39fdf6e4b.py
@@ -5,9 +5,8 @@ Revises: 2ebe1bf66430
Create Date: 2025-10-19 20:17:12.562653
"""
-from alembic import op
import sqlalchemy as sa
-
+from alembic import op
# revision identifiers, used by Alembic.
revision = '90b39fdf6e4b'
diff --git a/fietsboek/convert.py b/fietsboek/convert.py
index d0d1a19..9cd3297 100644
--- a/fietsboek/convert.py
+++ b/fietsboek/convert.py
@@ -1,4 +1,5 @@
"""Conversion functions to convert between various recording formats."""
+
import datetime
from typing import Optional
@@ -68,6 +69,7 @@ def from_gpx(data: bytes) -> Track:
:param data: The input bytes.
:return: The converted structure.
"""
+ # pylint: disable=too-many-locals
gpx = gpxpy.parse(data)
points = []
start_time = None
@@ -82,12 +84,14 @@ def from_gpx(data: bytes) -> Track:
time_offset = (point.time - start_time).total_seconds()
else:
time_offset = 0
- points.append(geo.Point(
- longitude=point.longitude,
- latitude=point.latitude,
- elevation=point.elevation or 0.0,
- time_offset=time_offset,
- ))
+ points.append(
+ geo.Point(
+ longitude=point.longitude,
+ latitude=point.latitude,
+ elevation=point.elevation or 0.0,
+ time_offset=time_offset,
+ )
+ )
timezone = util.guess_gpx_timezone(gpx)
date = gpx.time or gpx.get_time_bounds().start_time or datetime.datetime.now()
diff --git a/fietsboek/geo.py b/fietsboek/geo.py
index 51bfff0..c0a10e7 100644
--- a/fietsboek/geo.py
+++ b/fietsboek/geo.py
@@ -1,8 +1,8 @@
"""This module implements GPS related functionality."""
+
from dataclasses import dataclass
from itertools import islice
-from math import sqrt, sin, cos, radians
-
+from math import cos, radians, sin, sqrt
# WGS-84 equatorial radius, also called the semi-major axis.
# https://en.wikipedia.org/wiki/Earth_radius
@@ -17,6 +17,7 @@ MOVING_THRESHOLD = 1.1
@dataclass
class MovementData:
"""Movement statistics for a path."""
+
# pylint: disable=too-many-instance-attributes
duration: float = 0.0
@@ -47,6 +48,7 @@ class MovementData:
@dataclass(slots=True)
class Point:
"""A GPS point, represented as longitude/latitude/elevation."""
+
longitude: float
latitude: float
elevation: float
@@ -71,12 +73,9 @@ class Point:
# and for most GPS point differences that we encounter it should be
# enough.
radicand = (
- r_1**2 +
- r_2**2 -
- 2 * r_1 * r_2 * (
- sin(t_1) * sin(t_2) * cos(p_1 - p_2) +
- cos(t_1) * cos(t_2)
- )
+ r_1**2
+ + r_2**2
+ - 2 * r_1 * r_2 * (sin(t_1) * sin(t_2) * cos(p_1 - p_2) + cos(t_1) * cos(t_2))
)
if radicand < 0.0:
return 0.0
@@ -101,23 +100,15 @@ class Point:
# circle curvature, it allows us to take the elevation into account,
# and for most GPS point differences that we encounter it should be
# enough.
- radicand = (
- 2 * r**2 * (
- 1 -
- (
- sin(t_1) * sin(t_2) * cos(p_1 - p_2) +
- cos(t_1) * cos(t_2)
- )
- )
- )
+ radicand = 2 * r**2 * (1 - (sin(t_1) * sin(t_2) * cos(p_1 - p_2) + cos(t_1) * cos(t_2)))
if radicand < 0.0:
return 0.0
return sqrt(radicand)
-
class Path:
"""A GPS path, that is a series of GPS points."""
+
# pylint: disable=too-few-public-methods
def __init__(self, points: list[Point]):
diff --git a/fietsboek/models/track.py b/fietsboek/models/track.py
index ed20a07..0b75ce6 100644
--- a/fietsboek/models/track.py
+++ b/fietsboek/models/track.py
@@ -12,6 +12,8 @@ example all cached data to be re-computed without interfering with the other
meta information.
"""
+# pylint: disable=too-many-lines
+
import datetime
import enum
import gzip
@@ -158,6 +160,7 @@ class Waypoint(Base):
Waypoints can have a name and description set. They exist outside of the
actual route.
"""
+
# pylint: disable=too-few-public-methods
__tablename__ = "waypoints"
id = Column(Integer, primary_key=True)
@@ -173,6 +176,7 @@ class Waypoint(Base):
class TrackPoint(Base):
"""A track point represents a single GPS point along a path."""
+
# pylint: disable=too-few-public-methods
__tablename__ = "track_points"
track_id = Column(Integer, ForeignKey("tracks.id"), primary_key=True)
@@ -282,10 +286,10 @@ class Track(Base):
owner: Mapped["models.User"] = relationship("User", back_populates="tracks")
points: Mapped[list["TrackPoint"]] = relationship(
- "TrackPoint", back_populates="track", cascade="all, delete-orphan",
+ "TrackPoint", back_populates="track", cascade="all, delete-orphan"
)
waypoints: Mapped[list["Waypoint"]] = relationship(
- "Waypoint", back_populates="track", cascade="all, delete-orphan",
+ "Waypoint", back_populates="track", cascade="all, delete-orphan"
)
cache: Mapped[Optional["TrackCache"]] = relationship(
"TrackCache", back_populates="track", uselist=False, cascade="all, delete-orphan"
@@ -390,9 +394,9 @@ class Track(Base):
:return: The GPS path of this track.
"""
- return geo.Path([
- point.to_geo_point() for point in sorted(self.points, key=lambda p: p.index)
- ])
+ return geo.Path(
+ [point.to_geo_point() for point in sorted(self.points, key=lambda p: p.index)]
+ )
def gpx_xml(self) -> bytes:
"""Returns an XML representation of this track.
@@ -404,12 +408,14 @@ class Track(Base):
gpx.name = self.title
segment = gpxpy.gpx.GPXTrackSegment()
for point in self.path().points:
- segment.points.append(gpxpy.gpx.GPXTrackPoint(
- latitude=point.latitude,
- longitude=point.longitude,
- elevation=point.elevation,
- time=self.date + datetime.timedelta(seconds=point.time_offset),
- ))
+ segment.points.append(
+ gpxpy.gpx.GPXTrackPoint(
+ latitude=point.latitude,
+ longitude=point.longitude,
+ elevation=point.elevation,
+ time=self.date + datetime.timedelta(seconds=point.time_offset),
+ )
+ )
track = gpxpy.gpx.GPXTrack()
track.segments.append(segment)
gpx.tracks.append(track)
diff --git a/fietsboek/trackmap.py b/fietsboek/trackmap.py
index a850051..9854211 100644
--- a/fietsboek/trackmap.py
+++ b/fietsboek/trackmap.py
@@ -111,8 +111,7 @@ class TrackMapRenderer:
def _draw_lines(self, image, zoom, start_x, start_y):
coords = (
- to_web_mercator(point.latitude, point.longitude, zoom)
- for point in self.track.points
+ to_web_mercator(point.latitude, point.longitude, zoom) for point in self.track.points
)
coords = [(x - start_x, y - start_y) for x, y in coords]
diff --git a/fietsboek/transformers/__init__.py b/fietsboek/transformers/__init__.py
index d9c533b..097fbaf 100644
--- a/fietsboek/transformers/__init__.py
+++ b/fietsboek/transformers/__init__.py
@@ -13,7 +13,6 @@ from abc import ABC, abstractmethod
from collections.abc import Mapping
from typing import Literal, NamedTuple, TypeVar
-from gpxpy.gpx import GPX
from pydantic import BaseModel
from pyramid.i18n import TranslationString
from pyramid.request import Request
diff --git a/fietsboek/transformers/breaks.py b/fietsboek/transformers/breaks.py
index f1279a0..1072eef 100644
--- a/fietsboek/transformers/breaks.py
+++ b/fietsboek/transformers/breaks.py
@@ -4,8 +4,8 @@ import datetime
from pyramid.i18n import TranslationString
-from . import Parameters, Transformer
from .. import geo
+from . import Parameters, Transformer
_ = TranslationString
diff --git a/fietsboek/transformers/elevation.py b/fietsboek/transformers/elevation.py
index 25b4a50..27683bb 100644
--- a/fietsboek/transformers/elevation.py
+++ b/fietsboek/transformers/elevation.py
@@ -5,8 +5,8 @@ from itertools import islice, zip_longest
from pyramid.i18n import TranslationString
-from . import Parameters, Transformer
from .. import geo
+from . import Parameters, Transformer
_ = TranslationString
diff --git a/fietsboek/views/admin.py b/fietsboek/views/admin.py
index 14e4306..0442a32 100644
--- a/fietsboek/views/admin.py
+++ b/fietsboek/views/admin.py
@@ -49,7 +49,7 @@ def _get_size_breakdown(dbsession, data_manager):
result = dbsession.execute(query).scalar_one()
breakdown.track_data += result
elif dialect == "postgresql":
- query = text(f"""SELECT pg_relation_size('track_points');""")
+ query = text("""SELECT pg_relation_size('track_points');""")
result = dbsession.execute(query).scalar_one()
breakdown.track_data += result
diff --git a/fietsboek/views/browse.py b/fietsboek/views/browse.py
index c024828..68d1416 100644
--- a/fietsboek/views/browse.py
+++ b/fietsboek/views/browse.py
@@ -17,7 +17,6 @@ from sqlalchemy.orm import Session, aliased
from sqlalchemy.sql import Select
from .. import models, util
-from ..data import DataManager
from ..models.track import TrackType, TrackWithMetadata
TRACKS_PER_PAGE = 20
diff --git a/fietsboek/views/profile.py b/fietsboek/views/profile.py
index 544373b..d8ca386 100644
--- a/fietsboek/views/profile.py
+++ b/fietsboek/views/profile.py
@@ -14,7 +14,7 @@ from sqlalchemy import select
from sqlalchemy.orm import aliased
from .. import models, util
-from ..data import DataManager, UserDataDir
+from ..data import UserDataDir
from ..models.track import TrackType, TrackWithMetadata
from ..summaries import CumulativeStats, Summary
@@ -132,7 +132,6 @@ def profile_calendar(request: Request) -> dict:
data["user"] = request.context
data["calendar_rows"] = calendar_rows(
request.dbsession,
- request.data_manager,
request.context,
date.year,
date.month,
@@ -161,7 +160,6 @@ def profile_calendar_ym(request: Request) -> dict:
data["user"] = request.context
data["calendar_rows"] = calendar_rows(
request.dbsession,
- request.data_manager,
request.context,
date.year,
date.month,
@@ -200,7 +198,6 @@ def cell_style(tracks: list[TrackWithMetadata]) -> str:
def calendar_rows(
dbsession: "sqlalchemy.orm.session.Session",
- data_manager: DataManager,
user: models.User,
year: int,
month: int,
@@ -222,9 +219,7 @@ def calendar_rows(
# Step 1: Retrieve all tracks
query = user.all_tracks_query()
query = select(aliased(models.Track, query)).where(query.c.type == TrackType.ORGANIC)
- tracks = [
- TrackWithMetadata(track) for track in dbsession.execute(query).scalars()
- ]
+ tracks = [TrackWithMetadata(track) for track in dbsession.execute(query).scalars()]
# Step 2: Build the calendar
days = []