Coverage report: 94%

Files Functions Classes

coverage.py v7.14.1, created at 2026-05-29 04:01 +0000

    Statements   Branches   Total
File   coverage statements missing excluded   coverage branches partial   coverage
app/backend/src/app.py   0% 66 66 0   0% 22 0   0%
app/backend/src/couchers/__init__.py   100% 0 0 0   100% 0 0   100%
app/backend/src/couchers/config.py   72% 60 17 0   64% 50 16   68%
app/backend/src/couchers/constants.py   100% 43 0 0   100% 0 0   100%
app/backend/src/couchers/context.py   86% 111 15 2   67% 18 6   84%
app/backend/src/couchers/crypto.py   97% 123 4 0   75% 8 2   95%
app/backend/src/couchers/db.py   79% 119 25 2   50% 8 4   77%
app/backend/src/couchers/descriptor_pool.py   100% 15 0 0   100% 2 0   100%
app/backend/src/couchers/email/__init__.py   100% 0 0 0   100% 0 0   100%
app/backend/src/couchers/email/calendar_events.py   100% 54 0 0   67% 6 2   97%
app/backend/src/couchers/email/dev.py   100% 10 0 0   100% 0 0   100%
app/backend/src/couchers/email/dump_emails.py   0% 48 48 0   0% 6 0   0%
app/backend/src/couchers/email/emails.py   97% 636 17 9   78% 46 10   96%
app/backend/src/couchers/email/queuing.py   100% 36 0 0   100% 0 0   100%
app/backend/src/couchers/email/rendering.py   98% 178 4 0   95% 42 2   97%
app/backend/src/couchers/email/smtp.py   90% 67 7 0   77% 22 5   87%
app/backend/src/couchers/event_log.py   100% 8 0 0   100% 0 0   100%
app/backend/src/couchers/experimentation.py   82% 143 26 0   68% 28 5   80%
app/backend/src/couchers/helpers/__init__.py   100% 0 0 0   100% 0 0   100%
app/backend/src/couchers/helpers/badges.py   100% 27 0 0   100% 4 0   100%
app/backend/src/couchers/helpers/clusters.py   97% 29 1 0   50% 2 1   94%
app/backend/src/couchers/helpers/completed_profile.py   100% 12 0 0   100% 2 0   100%
app/backend/src/couchers/helpers/geoip.py   29% 41 29 0   20% 10 2   27%
app/backend/src/couchers/helpers/postal_verification.py   100% 12 0 0   100% 0 0   100%
app/backend/src/couchers/helpers/strong_verification.py   100% 27 0 0   100% 8 0   100%
app/backend/src/couchers/i18n/__init__.py   100% 2 0 0   100% 0 0   100%
app/backend/src/couchers/i18n/context.py   98% 45 1 0   67% 6 2   94%
app/backend/src/couchers/i18n/i18next.py   91% 130 12 0   83% 54 5   89%
app/backend/src/couchers/i18n/locales.py   96% 27 1 0   92% 12 1   95%
app/backend/src/couchers/i18n/localize.py   91% 67 6 0   81% 16 3   89%
app/backend/src/couchers/interceptors.py   88% 273 34 4   79% 82 13   86%
app/backend/src/couchers/jobs/__init__.py   100% 0 0 0   100% 0 0   100%
app/backend/src/couchers/jobs/definitions.py   100% 24 0 6   100% 0 0   100%
app/backend/src/couchers/jobs/enqueue.py   92% 13 1 0   75% 4 1   88%
app/backend/src/couchers/jobs/handlers.py   90% 490 48 0   75% 140 23   87%
app/backend/src/couchers/jobs/worker.py   80% 101 20 0   92% 12 1   81%
app/backend/src/couchers/materialized_views.py   99% 83 1 0   100% 6 0   99%
app/backend/src/couchers/metrics.py   100% 155 0 0   92% 12 1   99%
app/backend/src/couchers/migrations/env.py   56% 55 24 0   11% 18 2   45%
app/backend/src/couchers/models/__init__.py   100% 22 0 0   100% 0 0   100%
app/backend/src/couchers/models/activeness_probe.py   100% 25 0 2   100% 0 0   100%
app/backend/src/couchers/models/admin.py   100% 39 0 2   100% 0 0   100%
app/backend/src/couchers/models/auth.py   96% 50 2 2   100% 0 0   96%
app/backend/src/couchers/models/background_jobs.py   100% 31 0 0   100% 0 0   100%
app/backend/src/couchers/models/base.py   100% 11 0 0   100% 0 0   100%
app/backend/src/couchers/models/clusters.py   98% 128 2 3   100% 0 0   98%
app/backend/src/couchers/models/conversations.py   96% 90 4 2   100% 4 0   96%
app/backend/src/couchers/models/discussions.py   100% 70 0 2   100% 0 0   100%
app/backend/src/couchers/models/donations.py   100% 32 0 2   100% 0 0   100%
app/backend/src/couchers/models/events.py   100% 128 0 3   100% 0 0   100%
app/backend/src/couchers/models/host_requests.py   97% 76 2 5   100% 0 0   97%
app/backend/src/couchers/models/logging.py   100% 63 0 0   100% 0 0   100%
app/backend/src/couchers/models/mod_note.py   95% 22 1 2   100% 0 0   95%
app/backend/src/couchers/models/moderation.py   96% 84 3 2   100% 4 0   97%
app/backend/src/couchers/models/notifications.py   99% 166 1 2   100% 0 0   99%
app/backend/src/couchers/models/postal_verification.py   98% 43 1 2   100% 0 0   98%
app/backend/src/couchers/models/public_trips.py   100% 25 0 3   100% 0 0   100%
app/backend/src/couchers/models/rest.py   99% 266 1 3   100% 0 0   99%
app/backend/src/couchers/models/static.py   100% 18 0 0   100% 0 0   100%
app/backend/src/couchers/models/uploads.py   100% 60 0 2   100% 0 0   100%
app/backend/src/couchers/models/users.py   99% 238 2 6   100% 0 0   99%
app/backend/src/couchers/models/verification.py   100% 73 0 2   100% 0 0   100%
app/backend/src/couchers/moderation/__init__.py   100% 0 0 0   100% 0 0   100%
app/backend/src/couchers/moderation/utils.py   100% 20 0 0   100% 2 0   100%
app/backend/src/couchers/notifications/__init__.py   100% 0 0 0   100% 0 0   100%
app/backend/src/couchers/notifications/background.py   81% 83 16 0   75% 28 1   79%
app/backend/src/couchers/notifications/expo_api.py   37% 41 26 0   30% 10 1   35%
app/backend/src/couchers/notifications/locales.py   100% 7 0 0   100% 0 0   100%
app/backend/src/couchers/notifications/notify.py   100% 19 0 0   100% 0 0   100%
app/backend/src/couchers/notifications/push.py   97% 36 1 0   50% 2 1   95%
app/backend/src/couchers/notifications/quick_links.py   80% 69 14 0   50% 16 4   74%
app/backend/src/couchers/notifications/render_email.py   94% 285 17 0   91% 194 15   93%
app/backend/src/couchers/notifications/render_push.py   88% 297 37 0   84% 134 15   87%
app/backend/src/couchers/notifications/send_raw_push_notification.py   31% 103 71 0   0% 30 0   24%
app/backend/src/couchers/notifications/settings.py   91% 47 4 0   86% 14 0   90%
app/backend/src/couchers/notifications/utils.py   100% 9 0 0   100% 0 0   100%
app/backend/src/couchers/notifications/web_push_api.py   57% 37 16 0   100% 0 0   57%
app/backend/src/couchers/phone/check.py   88% 8 1 0   50% 2 1   80%
app/backend/src/couchers/phone/sms.py   100% 22 0 0   100% 0 0   100%
app/backend/src/couchers/postal/__init__.py   100% 0 0 0   100% 0 0   100%
app/backend/src/couchers/postal/address_validation.py   100% 7 0 0   100% 0 0   100%
app/backend/src/couchers/postal/my_postcard.py   74% 62 16 0   83% 6 1   75%
app/backend/src/couchers/rate_limits/__init__.py   100% 0 0 0   100% 0 0   100%
app/backend/src/couchers/rate_limits/check.py   100% 30 0 0   100% 8 0   100%
app/backend/src/couchers/rate_limits/definitions.py   100% 18 0 0   100% 0 0   100%
app/backend/src/couchers/reranker.py   90% 20 2 0   83% 12 2   88%
app/backend/src/couchers/resources.py   95% 83 4 0   62% 8 1   92%
app/backend/src/couchers/sentry.py   60% 5 2 0   100% 0 0   60%
app/backend/src/couchers/server.py   100% 74 0 0   100% 0 0   100%
app/backend/src/couchers/servicers/__init__.py   100% 0 0 0   100% 0 0   100%
app/backend/src/couchers/servicers/account.py   94% 328 19 0   83% 92 14   92%
app/backend/src/couchers/servicers/admin.py   84% 522 85 0   65% 202 56   79%
app/backend/src/couchers/servicers/api.py   98% 474 11 0   96% 262 11   97%
app/backend/src/couchers/servicers/auth.py   89% 319 36 0   77% 108 13   86%
app/backend/src/couchers/servicers/blocking.py   96% 47 2 0   86% 14 2   93%
app/backend/src/couchers/servicers/bugs.py   97% 105 3 0   94% 18 1   97%
app/backend/src/couchers/servicers/communities.py   84% 211 33 0   63% 60 18   80%
app/backend/src/couchers/servicers/conversations.py   92% 313 26 0   79% 126 26   88%
app/backend/src/couchers/servicers/discussions.py   94% 80 5 0   75% 24 6   89%
app/backend/src/couchers/servicers/donations.py   93% 91 6 0   83% 18 3   92%
app/backend/src/couchers/servicers/editor.py   86% 173 24 0   76% 68 8   83%
app/backend/src/couchers/servicers/events.py   88% 545 64 0   75% 234 57   84%
app/backend/src/couchers/servicers/galleries.py   96% 112 4 0   89% 46 5   94%
app/backend/src/couchers/servicers/gis.py   81% 37 7 0   100% 0 0   81%
app/backend/src/couchers/servicers/groups.py   81% 119 23 0   50% 24 8   76%
app/backend/src/couchers/servicers/jail.py   97% 69 2 0   90% 20 2   96%
app/backend/src/couchers/servicers/media.py   96% 24 1 0   50% 2 1   92%
app/backend/src/couchers/servicers/moderation.py   89% 236 25 0   85% 96 8   88%
app/backend/src/couchers/servicers/notifications.py   94% 130 8 0   76% 38 9   90%
app/backend/src/couchers/servicers/pages.py   94% 158 9 0   88% 76 9   92%
app/backend/src/couchers/servicers/postal_verification.py   94% 125 7 0   87% 46 6   92%
app/backend/src/couchers/servicers/public.py   95% 76 4 0   71% 14 2   91%
app/backend/src/couchers/servicers/public_trips.py   93% 155 11 0   84% 76 12   90%
app/backend/src/couchers/servicers/references.py   98% 185 4 0   90% 48 5   96%
app/backend/src/couchers/servicers/reporting.py   100% 21 0 0   100% 2 0   100%
app/backend/src/couchers/servicers/requests.py   94% 314 19 0   86% 136 17   92%
app/backend/src/couchers/servicers/resources.py   100% 19 0 0   100% 0 0   100%
app/backend/src/couchers/servicers/search.py   88% 283 34 0   73% 128 28   83%
app/backend/src/couchers/servicers/threads.py   93% 133 9 0   79% 48 10   90%
app/backend/src/couchers/slack.py   92% 13 1 0   75% 4 1   88%
app/backend/src/couchers/sql.py   99% 75 1 6   88% 26 3   96%
app/backend/src/couchers/tasks.py   96% 73 3 0   83% 18 3   93%
app/backend/src/couchers/templating.py   90% 128 13 0   72% 32 7   86%
app/backend/src/couchers/tracing.py   66% 32 11 0   0% 2 0   62%
app/backend/src/couchers/urls.py   92% 74 6 0   50% 2 1   91%
app/backend/src/couchers/utils.py   95% 192 9 8   84% 50 8   93%
app/backend/src/run_locally.py   0% 31 31 0   0% 10 0   0%
app/backend/src/tests/__init__.py   100% 0 0 0   100% 0 0   100%
app/backend/src/tests/conftest.py   99% 170 1 3   80% 10 2   98%
app/backend/src/tests/fixtures/__init__.py   100% 0 0 0   100% 0 0   100%
app/backend/src/tests/fixtures/db.py   100% 127 0 0   100% 20 0   100%
app/backend/src/tests/fixtures/misc.py   99% 87 1 0   90% 10 1   98%
app/backend/src/tests/fixtures/sessions.py   99% 293 1 0   100% 2 0   99%
app/backend/src/tests/test_account.py   100% 726 0 0   100% 2 0   100%
app/backend/src/tests/test_activeness_probes.py   100% 102 0 0   100% 0 0   100%
app/backend/src/tests/test_admin.py   100% 915 0 0   100% 6 0   100%
app/backend/src/tests/test_api.py   100% 1174 0 0   100% 8 0   100%
app/backend/src/tests/test_app.py   100% 12 0 0   100% 0 0   100%
app/backend/src/tests/test_auth.py   100% 701 0 0   100% 0 0   100%
app/backend/src/tests/test_bg_jobs.py   99% 735 5 0   95% 20 1   99%
app/backend/src/tests/test_blocking.py   100% 189 0 0   100% 0 0   100%
app/backend/src/tests/test_bugs.py   99% 221 1 0   30% 10 7   97%
app/backend/src/tests/test_calendar_events.py   99% 100 1 0   50% 4 2   97%
app/backend/src/tests/test_communities.py   100% 715 0 0   100% 24 0   100%
app/backend/src/tests/test_config.py   100% 24 0 0   100% 12 0   100%
app/backend/src/tests/test_conversations.py   100% 1253 0 0   100% 34 0   100%
app/backend/src/tests/test_crypto.py   100% 129 0 0   75% 4 1   99%
app/backend/src/tests/test_db.py   95% 177 8 0   61% 18 7   92%
app/backend/src/tests/test_discussions.py   100% 211 0 0   100% 0 0   100%
app/backend/src/tests/test_donations.py   100% 233 0 0   100% 0 0   100%
app/backend/src/tests/test_dummy_data.py   100% 8 0 0   100% 0 0   100%
app/backend/src/tests/test_editor.py   100% 329 0 0   100% 2 0   100%
app/backend/src/tests/test_email.py   100% 295 0 0   100% 0 0   100%
app/backend/src/tests/test_email_localization.py   100% 29 0 0   100% 4 0   100%
app/backend/src/tests/test_event_log.py   100% 406 0 0   100% 2 0   100%
app/backend/src/tests/test_events.py   99% 1494 6 0   85% 40 6   99%
app/backend/src/tests/test_experimentation.py   100% 135 0 0   100% 2 0   100%
app/backend/src/tests/test_galleries.py   100% 499 0 0   100% 26 0   100%
app/backend/src/tests/test_gis.py   100% 33 0 0   100% 0 0   100%
app/backend/src/tests/test_groups.py   100% 255 0 0   100% 4 0   100%
app/backend/src/tests/test_i18n.py   93% 30 2 0   100% 2 0   94%
app/backend/src/tests/test_i18next.py   100% 137 0 0   100% 0 0   100%
app/backend/src/tests/test_interceptors.py   100% 584 0 0   100% 8 0   100%
app/backend/src/tests/test_jail.py   100% 237 0 0   100% 4 0   100%
app/backend/src/tests/test_localize.py   100% 25 0 0   100% 0 0   100%
app/backend/src/tests/test_media.py   100% 32 0 0   100% 0 0   100%
app/backend/src/tests/test_metrics.py   99% 97 1 0   90% 10 1   98%
app/backend/src/tests/test_model_constraints.py   97% 133 4 0   100% 0 0   97%
app/backend/src/tests/test_models.py   100% 25 0 0   100% 0 0   100%
app/backend/src/tests/test_moderation.py   100% 1315 0 0   100% 16 0   100%
app/backend/src/tests/test_notification_settings.py   100% 36 0 0   100% 20 0   100%
app/backend/src/tests/test_notifications.py   99% 782 3 0   84% 38 6   99%
app/backend/src/tests/test_pages.py   100% 518 0 0   100% 0 0   100%
app/backend/src/tests/test_postal_verification.py   100% 303 0 0   100% 18 0   100%
app/backend/src/tests/test_postcard_service.py   100% 58 0 0   100% 0 0   100%
app/backend/src/tests/test_public.py   100% 255 0 0   100% 4 0   100%
app/backend/src/tests/test_public_trips.py   100% 389 0 0   100% 0 0   100%
app/backend/src/tests/test_references.py   100% 656 0 0   67% 12 4   99%
app/backend/src/tests/test_reporting.py   100% 31 0 0   100% 0 0   100%
app/backend/src/tests/test_requests.py   99% 892 2 0   69% 16 5   99%
app/backend/src/tests/test_resources.py   100% 53 0 0   100% 0 0   100%
app/backend/src/tests/test_sanitized_bytes.py   100% 116 0 0   100% 0 0   100%
app/backend/src/tests/test_search.py   100% 436 0 0   100% 16 0   100%
app/backend/src/tests/test_slack.py   100% 19 0 0   100% 0 0   100%
app/backend/src/tests/test_smtp.py   100% 8 0 0   100% 0 0   100%
app/backend/src/tests/test_strong_verification.py   99% 375 1 0   93% 14 1   99%
app/backend/src/tests/test_templating.py   95% 96 5 0   0% 2 0   93%
app/backend/src/tests/test_threads.py   100% 259 0 0   100% 4 0   100%
app/backend/src/tests/test_utils.py   100% 47 0 0   100% 2 0   100%
app/backend/src/tests/test_verification.py   100% 168 0 0   75% 4 1   99%
app/backend/src/tests/test_visible_users.py   100% 80 0 0   100% 0 0   100%
Total   96% 32463 1251 87   80% 3744 554   94%

No items found using the specified filter.