Coverage report: 97%

Files Functions Classes

coverage.py v7.11.0, created at 2025-10-22 21:34 +0000

File statements missing excluded coverage
postrfp/__init__.py 0 0 0 100%
postrfp/auth/__init__.py 0 0 0 100%
postrfp/auth/endpoints.py 152 0 2 100%
postrfp/auth/policy.py 94 2 26 98%
postrfp/authorisation/__init__.py 0 0 0 100%
postrfp/authorisation/actions.py 7 0 0 100%
postrfp/authorisation/errors.py 32 0 6 100%
postrfp/authorisation/perms.py 65 0 0 100%
postrfp/authorisation/roles.py 10 0 0 100%
postrfp/authorisation/vendor_actions.py 8 0 2 100%
postrfp/buyer/__init__.py 0 0 0 100%
postrfp/buyer/api/__init__.py 0 0 0 100%
postrfp/buyer/api/authorise.py 118 0 0 100%
postrfp/buyer/api/buyer_authoriser.py 19 0 3 100%
postrfp/buyer/api/domain_permissions.py 40 0 0 100%
postrfp/buyer/api/endpoints/__init__.py 2 0 0 100%
postrfp/buyer/api/endpoints/answers.py 60 0 0 100%
postrfp/buyer/api/endpoints/attachments.py 74 1 0 99%
postrfp/buyer/api/endpoints/audit.py 60 1 0 98%
postrfp/buyer/api/endpoints/auth.py 148 7 0 95%
postrfp/buyer/api/endpoints/categories.py 38 0 0 100%
postrfp/buyer/api/endpoints/issues.py 97 0 0 100%
postrfp/buyer/api/endpoints/network.py 101 0 0 100%
postrfp/buyer/api/endpoints/notes.py 61 0 0 100%
postrfp/buyer/api/endpoints/projects.py 277 0 0 100%
postrfp/buyer/api/endpoints/questions.py 130 0 0 100%
postrfp/buyer/api/endpoints/reports/__init__.py 3 0 0 100%
postrfp/buyer/api/endpoints/reports/msword.py 97 0 2 100%
postrfp/buyer/api/endpoints/reports/qtextxlsx.py 37 0 0 100%
postrfp/buyer/api/endpoints/reports/responses.py 6 0 0 100%
postrfp/buyer/api/endpoints/reports/yesnoqual.py 99 1 2 99%
postrfp/buyer/api/endpoints/scoring.py 220 5 0 98%
postrfp/buyer/api/endpoints/search.py 42 0 0 100%
postrfp/buyer/api/endpoints/sections.py 171 5 0 97%
postrfp/buyer/api/endpoints/tags.py 83 0 0 100%
postrfp/buyer/api/endpoints/webhooks.py 56 2 0 96%
postrfp/buyer/api/endpoints/weighting.py 79 2 0 97%
postrfp/buyer/api/fix/__init__.py 0 0 0 100%
postrfp/buyer/api/fix/orphan_questions.py 10 0 0 100%
postrfp/buyer/api/fix/qtables.py 42 0 0 100%
postrfp/buyer/api/io/__init__.py 0 0 0 100%
postrfp/buyer/api/io/excel_import.py 85 2 0 98%
postrfp/buyer/api/io/qbuilder.py 159 0 3 100%
postrfp/buyer/api/io/streaming.py 97 1 8 99%
postrfp/buyer/api/io/xml/importer.py 75 0 0 100%
postrfp/buyer/fsm_endpoints.py 178 0 2 100%
postrfp/conf/__init__.py 2 0 0 100%
postrfp/conf/logHandlers.py 22 0 0 100%
postrfp/conf/logconf.py 5 0 0 100%
postrfp/conf/settings.py 100 0 0 100%
postrfp/fsm/__init__.py 3 0 0 100%
postrfp/fsm/schemas.py 97 1 0 99%
postrfp/fsm/service.py 108 6 0 94%
postrfp/jobs/__init__.py 0 0 0 100%
postrfp/jobs/cli.py 10 10 9 0%
postrfp/jobs/events/__init__.py 2 0 0 100%
postrfp/jobs/events/action.py 251 8 14 97%
postrfp/jobs/events/webhooks.py 44 1 0 98%
postrfp/jobs/executor.py 62 3 9 95%
postrfp/jobs/offload.py 34 4 0 88%
postrfp/mail/__init__.py 0 0 0 100%
postrfp/mail/factory.py 14 5 0 64%
postrfp/mail/postmark.py 32 6 8 81%
postrfp/mail/protocol.py 4 0 4 100%
postrfp/mail/schemas.py 73 0 2 100%
postrfp/mail/stub.py 34 1 0 97%
postrfp/model/__init__.py 18 0 0 100%
postrfp/model/acl.py 49 4 15 92%
postrfp/model/audit/__init__.py 2 0 0 100%
postrfp/model/audit/event.py 132 1 12 99%
postrfp/model/audit/evt_types.py 92 0 0 100%
postrfp/model/audit/visible.py 11 0 0 100%
postrfp/model/composite.py 45 0 2 100%
postrfp/model/exc.py 26 0 15 100%
postrfp/model/fsm.py 95 5 8 95%
postrfp/model/fsm_context/__init__.py 0 0 0 100%
postrfp/model/fsm_context/project_context.py 30 0 2 100%
postrfp/model/graph.py 26 1 4 96%
postrfp/model/helpers.py 24 0 3 100%
postrfp/model/humans.py 218 0 26 100%
postrfp/model/issue.py 167 1 11 99%
postrfp/model/meta.py 43 0 38 100%
postrfp/model/misc.py 30 0 5 100%
postrfp/model/notes.py 49 0 6 100%
postrfp/model/notify.py 118 22 16 81%
postrfp/model/project.py 258 8 62 97%
postrfp/model/questionnaire/__init__.py 0 0 0 100%
postrfp/model/questionnaire/answering.py 61 1 10 98%
postrfp/model/questionnaire/b36.py 78 1 2 99%
postrfp/model/questionnaire/cte_weights.py 67 0 2 100%
postrfp/model/questionnaire/nodes.py 265 12 16 95%
postrfp/model/questionnaire/qelements.py 141 4 6 97%
postrfp/model/questionnaire/renumber.py 34 2 0 94%
postrfp/model/questionnaire/score_views.py 67 11 0 84%
postrfp/model/questionnaire/weightings.py 36 0 9 100%
postrfp/model/ref.py 149 3 12 98%
postrfp/model/tags.py 17 0 0 100%
postrfp/ref/__init__.py 0 0 0 100%
postrfp/ref/exceptions.py 36 36 0 0%
postrfp/ref/handlers/__init__.py 2 0 0 100%
postrfp/ref/handlers/administrators.py 46 35 0 24%
postrfp/ref/handlers/designers.py 43 0 0 100%
postrfp/ref/handlers/editors.py 142 4 0 97%
postrfp/ref/handlers/readers.py 18 2 0 89%
postrfp/ref/handlers/subjects.py 73 0 0 100%
postrfp/ref/permissions.py 59 12 0 80%
postrfp/ref/service/__init__.py 0 0 0 100%
postrfp/ref/service/auth_service.py 28 5 0 82%
postrfp/ref/service/content_service.py 64 5 1 92%
postrfp/ref/service/helpers.py 16 0 0 100%
postrfp/ref/service/reference_validator.py 85 9 0 89%
postrfp/ref/service/search_service.py 19 2 0 89%
postrfp/shared/__init__.py 0 0 0 100%
postrfp/shared/attachments.py 106 0 3 100%
postrfp/shared/constants.py 13 0 2 100%
postrfp/shared/decorators.py 37 0 0 100%
postrfp/shared/exceptions.py 25 0 14 100%
postrfp/shared/expression.py 14 2 0 86%
postrfp/shared/fetch/__init__.py 11 0 0 100%
postrfp/shared/fetch/answq.py 42 0 0 100%
postrfp/shared/fetch/audq.py 23 0 0 100%
postrfp/shared/fetch/autoscoreq.py 103 25 0 76%
postrfp/shared/fetch/flattening.py 169 8 0 95%
postrfp/shared/fetch/nodesq.py 36 5 0 86%
postrfp/shared/fetch/projq.py 41 0 0 100%
postrfp/shared/fetch/quesq.py 121 1 0 99%
postrfp/shared/fetch/scoreq.py 123 6 3 95%
postrfp/shared/fetch/searchq.py 22 0 1 100%
postrfp/shared/fetch/secq.py 50 0 0 100%
postrfp/shared/fetch/userq.py 40 1 0 98%
postrfp/shared/fetch/view_scoring.py 20 0 0 100%
postrfp/shared/fetch/weightq.py 51 0 0 100%
postrfp/shared/fsm_entity.py 87 4 2 95%
postrfp/shared/init/__init__.py 0 0 0 100%
postrfp/shared/init/dbconfig.py 49 1 0 98%
postrfp/shared/init/sysconfig.py 31 2 24 94%
postrfp/shared/issue_transition.py 116 13 0 89%
postrfp/shared/movenodes.py 103 1 33 99%
postrfp/shared/pager.py 24 1 2 96%
postrfp/shared/password.py 27 0 0 100%
postrfp/shared/response.py 34 0 0 100%
postrfp/shared/serial/__init__.py 5 0 0 100%
postrfp/shared/serial/authmodels.py 16 0 0 100%
postrfp/shared/serial/common.py 26 0 0 100%
postrfp/shared/serial/models.py 629 3 0 99%
postrfp/shared/serial/qmodels.py 104 0 0 100%
postrfp/shared/serial/refmodels.py 102 0 0 100%
postrfp/shared/serial/scoremodels.py 29 0 3 100%
postrfp/shared/tools.py 55 0 18 100%
postrfp/shared/types.py 19 0 31 100%
postrfp/shared/update.py 310 11 35 96%
postrfp/shared/utils.py 23 0 59 100%
postrfp/templates/__init__.py 20 0 0 100%
postrfp/vendor/__init__.py 0 0 0 100%
postrfp/vendor/api/__init__.py 1 0 0 100%
postrfp/vendor/api/attachments.py 75 1 0 99%
postrfp/vendor/api/audit.py 13 0 2 100%
postrfp/vendor/api/issue.py 58 1 0 98%
postrfp/vendor/api/questionnaire.py 132 0 0 100%
postrfp/vendor/api/reports.py 17 0 0 100%
postrfp/vendor/api/users.py 116 2 0 98%
postrfp/vendor/api/workflow.py 34 0 0 100%
postrfp/vendor/validation.py 79 0 0 100%
postrfp/web/__init__.py 0 0 0 100%
postrfp/web/adaptors/__init__.py 0 0 0 100%
postrfp/web/adaptors/auth.py 10 2 0 80%
postrfp/web/adaptors/core.py 164 2 0 99%
postrfp/web/adaptors/ref.py 22 0 0 100%
postrfp/web/apps/__init__.py 6 0 0 100%
postrfp/web/apps/authentication.py 19 0 2 100%
postrfp/web/apps/buyer.py 20 0 0 100%
postrfp/web/apps/fsm.py 19 0 2 100%
postrfp/web/apps/ref.py 19 1 2 95%
postrfp/web/apps/vendor.py 10 0 2 100%
postrfp/web/base.py 123 0 11 100%
postrfp/web/exception.py 96 2 0 98%
postrfp/web/ext/__init__.py 0 0 0 100%
postrfp/web/ext/apilinks.py 32 0 0 100%
postrfp/web/ext/apispec.py 51 4 2 92%
postrfp/web/ext/openapi_types.py 8 0 0 100%
postrfp/web/ext/specs/__init__.py 0 0 0 100%
postrfp/web/hooks/__init__.py 4 0 0 100%
postrfp/web/hooks/mail_delivered.py 28 0 0 100%
postrfp/web/hooks/webapp.py 53 1 5 98%
postrfp/web/middleware.py 31 0 137 100%
postrfp/web/mounts.py 14 0 0 100%
postrfp/web/request.py 10 0 0 100%
postrfp/web/suxint/__init__.py 7 0 0 100%
postrfp/web/suxint/extractors.py 207 0 3 100%
postrfp/web/suxint/handler.py 105 0 4 100%
postrfp/web/suxint/openapi.py 55 0 2 100%
postrfp/web/suxint/sux.py 148 0 0 100%
postrfp/web/suxint/validate.py 49 0 0 100%
Total 11699 360 789 97%

No items found using the specified filter.