[fix] !weather crashes - cls.TURN 'member_descriptor' isn't a float (#5309)

The class method ``Compass.point`` is converted into an instance method to
circumvent the problem described in [1] (without understanding the cause).

[1] https://github.com/searxng/searxng/issues/5304#issuecomment-3394140820

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
Markus Heiser 2025-10-13 07:37:42 +02:00 committed by GitHub
parent 5492de15bb
commit fc7d8b8be2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -506,15 +506,14 @@ class Compass(msgspec.Struct):
return self.val
raise ValueError(f"unknown unit: {unit}")
@classmethod
def point(cls, azimuth: float | int) -> CompassPoint:
def point(self, azimuth: float | int) -> CompassPoint:
"""Returns the compass point to an azimuth value."""
azimuth = azimuth % cls.TURN
azimuth = azimuth % self.TURN
# The angle sector of a compass point starts 1/2 sector range before
# and after compass point (example: "N" goes from -11.25° to +11.25°)
azimuth = azimuth - cls.RANGE / 2
idx = int(azimuth // cls.RANGE)
return cls.POINTS[idx]
azimuth = azimuth - self.RANGE / 2
idx = int(azimuth // self.RANGE)
return self.POINTS[idx]
def l10n(
self,