• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

rero / rero-ils / 24880624909
91%
staging: 91%

Build:
Build:
LAST BUILD BRANCH: ils-dev
DEFAULT BRANCH: staging
Ran 24 Apr 2026 09:53AM UTC
Jobs 1
Files 610
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

24 Apr 2026 07:45AM UTC coverage: 91.123% (+0.003%) from 91.12%
24880624909

push

github

PascalRepond
chore: update Python to 3.14 and invenio deps

Update Python version to >=3.14.0.
Update invenio dependencies to their latest major versions.
Add max_retries and retry_on_timeout to elasticsearch client config for
better resilience in CI tests.

Adapt code for breaking changes with new Python and invenio versions:
- timezone: replace pytz with stdlib datetime.UTC and
  zoneinfo.ZoneInfo; replace deprecated datetime.utcnow() with
  datetime.now(UTC); remove pytz.utc.localize() calls since invenio
  records now return timezone-aware datetimes
- Replace `tz.localize()` calls with `dt.astimezone(tz)` followed by
  replace on time components, ensuring DST offsets are applied correctly.
- Convert datetimes to UTC before subtraction in loan duration
  calculations: unlike pytz (which creates distinct tzinfo objects per
  DST state), `ZoneInfo` reuses a single object, causing Python to
  perform naive subtraction across DST boundaries and yielding incorrect
  durations. Apply the same astimezone-then-replace pattern to overdue
  fee calculation and loan age computation.
- permissions: add RoleNeed(role.name) to identity since
  flask-security-invenio 4.x now uses RoleNeed(role.id)
- webargs: create a local FlaskParser with location="json_or_form" in
  accounts_views.py instead of importing use_args/use_kwargs from
  invenio_accounts (which is locked to location="form"). Cause:
  webargs 5→8 made FlaskParser(location="form") strict; our JSON
  requests were rejected before reaching view logic. Use
  invenio-accounts' FlaskParser so that validation errors return a
  400 status with RESTValidationError instead of webargs' default 422.
- marshmallow: remove context={"request": request} parameter from
  Schema instantiation (no longer supported)
- classmethod+property: replace stacked @classmethod/@property
  decorators (removed in Python 3.13) with descriptors
  (files/services.py) and inline computation (users/api.py)
- typing: replace typing.Optional with PEP 6... (continued)

117 of 120 new or added lines in 39 files covered. (97.5%)

24019 of 26359 relevant lines covered (91.12%)

0.91 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
76.19
0.0% rero_ils/modules/loans/tasks.py
1
83.97
0.0% rero_ils/modules/selfcheck/api.py
1
51.04
0.53% rero_ils/modules/stats/views.py
Jobs
ID Job ID Ran Files Coverage
1 24880624909.1 24 Apr 2026 09:52AM UTC 610
91.12
GitHub Action Run
Source Files on build 24880624909
  • Tree
  • List 610
  • Changed 44
  • Source Changed 44
  • Coverage Changed 17
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #24880624909
  • 43bb7406 on github
  • Prev Build on bib-test (#24841585587)
  • Next Build on ils-dev (#25495464208)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc