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

supabase / supabase-py / 41597679610
95%

Build:
DEFAULT BRANCH: main
Ran 03 Nov 2026 07:39AM UTC
Jobs 36
Files 167
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

03 Nov 2026 07:38AM UTC coverage: 95.312% (+0.02%) from 95.294%
41597679610

push

github

web-flow
fix(auth): validate session and mfa enroll response after field validation (#1904)

## What

Turns the two `mode="before"` model validators in
`supabase_auth/types.py` into `mode="after"` validators.

- `Session` fills in `expires_at` from `expires_in` when it is missing.
- `AuthMFAEnrollResponse` requires `phone` when `type` is `"phone"`.

## Why

Before validators receive the raw input, but both were written as if it
was always a dict:

- `Session.model_validate(data)` wrote `expires_at` into the caller's
`data` dict.
- Any input that is not a dict, such as `None` or an object validated
with `from_attributes=True`, raised a raw `AttributeError` from `.get`
instead of a pydantic `ValidationError`. For `AuthMFAEnrollResponse`
that also meant the phone rule was never applied to such inputs.

As after validators, both run on the typed, already validated model.
They work for every input pydantic accepts, keep the field types instead
of widening them to `Any`, and never touch the input.

The rules themselves are unchanged: `expires_at` is still only set when
`expires_in` is non-zero and `expires_at` is missing or `0`, and the
phone rule still rejects a missing or empty `phone`.

## Testing

- New `tests/test_types.py`: covers that the input dict is not mutated,
that a given `expires_at` is kept, that non-dict input raises
`ValidationError`, and that the phone rule applies to both dict and
`from_attributes` input. 8 of its 10 tests fail against `main`.
- `make auth.tests`: mypy passes and 257 tests pass.
- `make ruff` passes.

12179 of 12778 relevant lines covered (95.31%)

5.91 hits per line

Jobs
ID Job ID Ran Files Coverage
1 run-ubuntu-latest-3.11-auth - 41597679610.1 03 Nov 2026 07:39AM UTC 57
93.71
GitHub Action Run
2 run-ubuntu-latest-3.11-functions - 41597679610.2 03 Nov 2026 07:39AM UTC 18
97.31
GitHub Action Run
3 run-ubuntu-latest-3.12-realtime - 41597679610.3 03 Nov 2026 07:40AM UTC 17
88.7
GitHub Action Run
4 run-ubuntu-latest-3.14-storage - 41597679610.4 03 Nov 2026 07:40AM UTC 40
94.73
GitHub Action Run
5 run-ubuntu-latest-3.14-realtime - 41597679610.5 03 Nov 2026 07:40AM UTC 17
87.88
GitHub Action Run
6 run-ubuntu-latest-3.13-functions - 41597679610.6 03 Nov 2026 07:39AM UTC 18
97.31
GitHub Action Run
7 run-ubuntu-latest-3.13-supabase - 41597679610.7 03 Nov 2026 07:39AM UTC 20
96.86
GitHub Action Run
8 run-ubuntu-latest-3.12-storage - 41597679610.8 03 Nov 2026 07:40AM UTC 40
94.75
GitHub Action Run
9 run-ubuntu-latest-3.13-auth - 41597679610.9 03 Nov 2026 07:39AM UTC 57
93.75
GitHub Action Run
10 run-ubuntu-latest-3.14-functions - 41597679610.10 03 Nov 2026 07:39AM UTC 18
97.31
GitHub Action Run
11 run-ubuntu-latest-3.12-supabase - 41597679610.11 03 Nov 2026 07:39AM UTC 20
96.86
GitHub Action Run
12 run-ubuntu-latest-3.13-storage - 41597679610.12 03 Nov 2026 07:40AM UTC 40
94.75
GitHub Action Run
13 run-ubuntu-latest-3.9-storage - 41597679610.13 03 Nov 2026 07:40AM UTC 40
94.82
GitHub Action Run
14 run-ubuntu-latest-3.10-realtime - 41597679610.14 03 Nov 2026 07:40AM UTC 17
88.7
GitHub Action Run
15 run-ubuntu-latest-3.13-realtime - 41597679610.15 03 Nov 2026 07:40AM UTC 17
88.7
GitHub Action Run
16 run-ubuntu-latest-3.14-auth - 41597679610.16 03 Nov 2026 07:39AM UTC 57
93.73
GitHub Action Run
17 run-ubuntu-latest-3.9-auth - 41597679610.17 03 Nov 2026 07:39AM UTC 57
93.65
GitHub Action Run
18 run-ubuntu-latest-3.12-auth - 41597679610.18 03 Nov 2026 07:39AM UTC 57
93.75
GitHub Action Run
19 run-ubuntu-latest-3.13-postgrest - 41597679610.19 03 Nov 2026 07:40AM UTC 39
97.53
GitHub Action Run
20 run-ubuntu-latest-3.12-functions - 41597679610.20 03 Nov 2026 07:39AM UTC 18
97.31
GitHub Action Run
21 run-ubuntu-latest-3.10-auth - 41597679610.21 03 Nov 2026 07:39AM UTC 57
93.71
GitHub Action Run
22 run-ubuntu-latest-3.9-postgrest - 41597679610.22 03 Nov 2026 07:40AM UTC 39
97.59
GitHub Action Run
23 run-ubuntu-latest-3.14-postgrest - 41597679610.23 03 Nov 2026 07:39AM UTC 39
97.53
GitHub Action Run
24 run-ubuntu-latest-3.11-supabase - 41597679610.24 03 Nov 2026 07:39AM UTC 20
96.86
GitHub Action Run
25 run-ubuntu-latest-3.9-functions - 41597679610.25 03 Nov 2026 07:39AM UTC 18
97.52
GitHub Action Run
26 run-ubuntu-latest-3.14-supabase - 41597679610.26 03 Nov 2026 07:39AM UTC 20
96.85
GitHub Action Run
27 run-ubuntu-latest-3.12-postgrest - 41597679610.27 03 Nov 2026 07:40AM UTC 39
97.53
GitHub Action Run
28 run-ubuntu-latest-3.10-supabase - 41597679610.28 03 Nov 2026 07:39AM UTC 20
96.86
GitHub Action Run
29 run-ubuntu-latest-3.9-supabase - 41597679610.29 03 Nov 2026 07:39AM UTC 20
96.8
GitHub Action Run
30 run-ubuntu-latest-3.11-realtime - 41597679610.30 03 Nov 2026 07:40AM UTC 17
88.7
GitHub Action Run
31 run-ubuntu-latest-3.11-postgrest - 41597679610.31 03 Nov 2026 07:40AM UTC 39
97.53
GitHub Action Run
32 run-ubuntu-latest-3.10-functions - 41597679610.32 03 Nov 2026 07:39AM UTC 18
97.31
GitHub Action Run
33 run-ubuntu-latest-3.10-storage - 41597679610.33 03 Nov 2026 07:40AM UTC 40
94.75
GitHub Action Run
34 run-ubuntu-latest-3.11-storage - 41597679610.34 03 Nov 2026 07:40AM UTC 40
94.75
GitHub Action Run
35 run-ubuntu-latest-3.10-postgrest - 41597679610.35 03 Nov 2026 07:40AM UTC 39
97.53
GitHub Action Run
36 run-ubuntu-latest-3.9-realtime - 41597679610.36 03 Nov 2026 07:40AM UTC 17
88.81
GitHub Action Run
Source Files on build 41597679610
  • Tree
  • List 167
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #41597679610
  • 03104673 on github
  • Prev Build on main (#41597580877)
  • Next Build on main (#41604789791)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc