Compare commits

...

4 commits

Author SHA1 Message Date
pre-commit-ci[bot]
d7a8d5a65b
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.12.1 → v0.12.3](https://github.com/astral-sh/ruff-pre-commit/compare/v0.12.1...v0.12.3)
2025-07-14 20:34:20 +00:00
jepler (github actions cron)
6ef71b2837 update iersdata 2025-07-02 10:05:59 +00:00
c15b2802ef
Merge pull request #147 from jepler/update-pre-commit 2025-06-28 06:55:23 +02:00
f3b865fafa Update ruff
New ruff is very opinionated about positional arguments that
can take a boolean type. As a result, the signatures of the
following functions have changed:
 * WWVBMinute: ls, ly are keyword-only
 * next_minute, previous_minute: newut1 and newls are keyword-only
 * from_datetime: newut1, newls, and old_time are keyword-only
2025-06-28 06:50:08 +02:00
6 changed files with 15 additions and 14 deletions

View file

@ -21,7 +21,7 @@ repos:
- id: reuse
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.11.7
rev: v0.12.3
hooks:
# Run the linter.
- id: ruff

View file

@ -2,7 +2,7 @@
#
# SPDX-License-Identifier: GPL-3.0-only
# ruff: noqa: C405 PYI024 PLR2004 FBT001 FBT002
# ruff: noqa: C405, PYI024, FBT001, FBT002
"""Implementation of a WWVB state machine & decoder for resource-constrained systems

View file

@ -384,6 +384,7 @@ class WWVBMinute(_WWVBMinute):
minute: int,
dst: DstStatus | int | None = None,
ut1: int | None = None,
*,
ls: bool | None = None,
ly: bool | None = None,
) -> WWVBMinute:
@ -659,15 +660,15 @@ class WWVBMinute(_WWVBMinute):
else:
self._fill_pm_timecode_regular(t)
def next_minute(self, newut1: int | None = None, newls: bool | None = None) -> WWVBMinute:
def next_minute(self, *, newut1: int | None = None, newls: bool | None = None) -> WWVBMinute:
"""Return an object representing the next minute"""
d = self.as_datetime() + datetime.timedelta(minutes=1)
return self.from_datetime(d, newut1, newls, self)
return self.from_datetime(d, newut1=newut1, newls=newls, old_time=self)
def previous_minute(self, newut1: int | None = None, newls: bool | None = None) -> WWVBMinute:
def previous_minute(self, *, newut1: int | None = None, newls: bool | None = None) -> WWVBMinute:
"""Return an object representing the previous minute"""
d = self.as_datetime() - datetime.timedelta(minutes=1)
return self.from_datetime(d, newut1, newls, self)
return self.from_datetime(d, newut1=newut1, newls=newls, old_time=self)
@classmethod
def _get_dut1_info(cls: type, year: int, days: int, old_time: WWVBMinute | None = None) -> tuple[int, bool]: # noqa: ARG003
@ -696,18 +697,19 @@ class WWVBMinute(_WWVBMinute):
days = d.pop("days")
hour = d.pop("hour")
minute = d.pop("minute")
dst: int | None = d.pop("dst", None)
ut1: int | None = d.pop("ut1", None)
dst = d.pop("dst", None)
ut1 = d.pop("ut1", None)
ls = d.pop("ls", None)
d.pop("ly", None)
if d:
raise ValueError(f"Invalid options: {d}")
return cls(year, days, hour, minute, dst, ut1, None if ls is None else bool(ls))
return cls(year, days, hour, minute, dst, ut1=ut1, ls=None if ls is None else bool(ls))
@classmethod
def from_datetime(
cls,
d: datetime.datetime,
*,
newut1: int | None = None,
newls: bool | None = None,
old_time: WWVBMinute | None = None,
@ -760,7 +762,7 @@ class WWVBMinute(_WWVBMinute):
dst = t._get_am_bcd(57, 58)
if dst is None:
return None
return cls(year, days, hour, minute, dst, ut1, ls, ly)
return cls(year, days, hour, minute, dst, ut1, ls=ls, ly=ly)
class WWVBMinuteIERS(WWVBMinute):
@ -858,7 +860,7 @@ class WWVBTimecode:
else:
self.am[p] = AmplitudeModulation.ZERO
def _put_pm_bit(self, i: int, v: PhaseModulation | int | bool) -> None:
def _put_pm_bit(self, i: int, v: PhaseModulation | int) -> None:
"""Update a bit of the Phase Modulation signal"""
self.phase[i] = PhaseModulation(v)

View file

@ -1 +1 @@
{"START": "1972-01-01", "OFFSETS_GZ": "H4sIAJF3PWgC/+2aa3LDMAiEL5uHLDuxnN5/pn/aTmfSSiAWhGR9J8gsywJylqVHPtqxZuH/7leeI0fKsGd5EngQ2WisJWKegrThDa6aJFnL0u4wYZkCE2UmSF0U+13vCveStC6JTfQyW3O86HLJf0SvDgy5u4FCI+WVKRuy0KMjJeXoULIvMDmEWgeRxAJtwXquPCIBqbLh/gbfv0mcxk3mHV9tYiATZP8W/zgw2wd5LpJnY+WErI8abJ3opaIW6592+YMbjSsNWQFlNVVtuhjhtQzSUh4MEpOdDrSW6qsUv+O+Dt+XkIONSrUwvWmTsmq5LO9xsZ+EgcDK+MIESDaYmxSxGlgbGOFjBXMjbV7lc6zlmQ0i48oH5P4+vK7i/AHc7tfTXDtffqFi3m6WhApPSTyDvArU5vUDhm7YaNQYGASVbbwLUBtI2PrhSiZNbvCRrtGUGu0GbjDhJ3aLCx5dQFjt0LFovmWB96e6tktqMenoULXajVS3asBibP3kYXrpmZxnsS2Yf2xRPrHbvQ2D9wjfL4C6b4PWV4otW0vWUYkeWE5M8M594oLbxP77xcl4NuBkG0dfM3xOUf/T0GF+ur+J5pljcODEUZkXg6vIdLYy7g3oZU3bPNDnc8qwGdJZMmAurUsRj6tOo95zP6fb9YPWp5OuZ5X7q2DrmsG/VCyTyaREnDRhnUxOzfzzh3/NRuYTMxwhU6lNAAA="}
{"START": "1972-01-01", "OFFSETS_GZ": "H4sIAIYEZWgC/+2aa3LDMAiEL5uHLTuxnN5/pn/aTmfSSiAWhGy+E2SWZQE58zwiH/1YivB/96vMXiIX2Io8CTyIrDSWGqlMRdrpDa6aJFnr0m4wYZkCE2UmSF0V+13vBveStK6JTfQyW3O86HLJf0RvDgy5u4FCI+WVKTsVoUdHzsrRoWRfYHIItZ5EEgu0Beu58EgEpMpO9zf4/s3iNO4y7/hqEwOZIPu3+PuO2T7Ic5E8GxsnZHvUYOtELxW1WP+0yx/caFxpyAooq6lq06UEr+UkLeXOIDPZ6EBrqb5K8Tvu6/B9CdnZqFQL05s2KauWy/IeF/tJGAisjK9MgGyDuUkRq4G1gRE+VjA30uZNPsdantkgMq58QO4fw+sqzj+A2/16mmvnyy9UzDvMktDgKYlnkFeB2rx+wNANG40aA4OgsY03AWoDCVs/XMmkyQ0+0jWaUqPdwA0m/MRuccGjCwirHToWzbcs8P7U1nZZLSYdHapWu5HqVg1YjK2fPEwvPZPzLPUF848tyid2u7dh8B7h+wVQ923Q+kqxZe3JclSSB+YTM3nnHrjgFth/vzgZzw6cbOMYa4bHFPU/DR3mp/ubKM4cgwMnHZW4GFxFprOVcevAKGva6oExn1MOmyGDJQPm0rpU8bjqdOo993O6Xz9ofToZela5vwrWoTn4l4o5CIIaKejCEgSnJv784V6y0/IJeROtycVNAAA="}

View file

@ -4,7 +4,7 @@
#
# SPDX-License-Identifier: GPL-3.0-only
# ruff: noqa: N802 D102
# ruff: noqa: N802
import datetime
import random
import sys

View file

@ -1,5 +1,4 @@
#!/usr/bin/python3
# ruff: noqa: E501
"""Test most wwvblib functionality"""