From 07ca6302d1a6087915e87ecdc1610829a58183ad Mon Sep 17 00:00:00 2001 From: Benjamin Moody Date: Tue, 7 Nov 2023 17:17:41 -0500 Subject: [PATCH 1/2] Add dev dependency on django-coverage-plugin. This is a little package that extends coverage.py, to allow measuring and reporting test coverage for Django template files. https://github.com/nedbat/django_coverage_plugin --- poetry.lock | 121 +++++++---------------------------------------- pyproject.toml | 1 + requirements.txt | 35 +++----------- 3 files changed, 26 insertions(+), 131 deletions(-) diff --git a/poetry.lock b/poetry.lock index 75a1b97bc8..43aeedf2ab 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.0 and should not be changed by hand. [[package]] name = "asgiref" version = "3.5.2" description = "ASGI specs, helper code, and adapters" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -19,7 +18,6 @@ tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] name = "bleach" version = "3.3.0" description = "An easy safelist-based HTML-sanitizing tool." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -36,7 +34,6 @@ webencodings = "*" name = "boto3" version = "1.28.53" description = "The AWS SDK for Python" -category = "main" optional = false python-versions = ">= 3.7" files = [ @@ -56,7 +53,6 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] name = "botocore" version = "1.31.53" description = "Low-level, data-driven core of boto 3." -category = "main" optional = false python-versions = ">= 3.7" files = [ @@ -76,7 +72,6 @@ crt = ["awscrt (==0.16.26)"] name = "cachetools" version = "4.2.2" description = "Extensible memoizing collections and decorators" -category = "main" optional = false python-versions = "~=3.5" files = [ @@ -88,7 +83,6 @@ files = [ name = "certifi" version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -100,7 +94,6 @@ files = [ name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false python-versions = "*" files = [ @@ -177,7 +170,6 @@ pycparser = "*" name = "chardet" version = "3.0.4" description = "Universal encoding detector for Python 2 and 3" -category = "main" optional = false python-versions = "*" files = [ @@ -189,7 +181,6 @@ files = [ name = "charset-normalizer" version = "2.0.12" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.5.0" files = [ @@ -204,7 +195,6 @@ unicode-backport = ["unicodedata2"] name = "coverage" version = "7.2.3" description = "Code coverage measurement for Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -268,7 +258,6 @@ toml = ["tomli"] name = "cryptography" version = "41.0.4" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -314,7 +303,6 @@ test-randomorder = ["pytest-randomly"] name = "deprecated" version = "1.2.13" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -332,7 +320,6 @@ dev = ["PyTest", "PyTest (<5)", "PyTest-Cov", "PyTest-Cov (<2.6)", "bump2version name = "django" version = "4.1.13" description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -353,7 +340,6 @@ bcrypt = ["bcrypt"] name = "django-autocomplete-light" version = "3.9.4" description = "Fresh autocompletes for Django" -category = "main" optional = false python-versions = "*" files = [ @@ -373,7 +359,6 @@ tags = ["django-taggit"] name = "django-background-tasks-updated" version = "1.2.7" description = "Database backed asynchronous task queue" -category = "main" optional = false python-versions = "*" files = [ @@ -389,7 +374,6 @@ six = "*" name = "django-ckeditor" version = "6.5.1" description = "Django admin CKEditor integration." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -405,7 +389,6 @@ django-js-asset = ">=2.0" name = "django-cors-headers" version = "3.14.0" description = "django-cors-headers is a Django application for handling the server headers required for Cross-Origin Resource Sharing (CORS)." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -416,11 +399,24 @@ files = [ [package.dependencies] Django = ">=3.2" +[[package]] +name = "django-coverage-plugin" +version = "3.1.0" +description = "Django template coverage.py plugin" +optional = false +python-versions = "*" +files = [ + {file = "django_coverage_plugin-3.1.0-py3-none-any.whl", hash = "sha256:eb0ea8ffdb0db11a02994fc99be6500550efb496c350d709f418ff3d8e553a67"}, + {file = "django_coverage_plugin-3.1.0.tar.gz", hash = "sha256:223d34bf92bebadcb8b7b89932480e41c7bd98b44a8156934488fbe7f4a71f99"}, +] + +[package.dependencies] +coverage = "*" + [[package]] name = "django-debug-toolbar" version = "3.2.4" description = "A configurable set of panels that display various debug information about the current request/response." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -436,7 +432,6 @@ sqlparse = ">=0.2.0" name = "django-js-asset" version = "2.0.0" description = "script tag with additional attributes for django.forms.Media" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -454,7 +449,6 @@ tests = ["coverage"] name = "django-oauth-toolkit" version = "2.2.0" description = "OAuth2 Provider for Django" -category = "main" optional = false python-versions = "*" files = [ @@ -472,7 +466,6 @@ requests = ">=2.13.0" name = "django-sass" version = "1.1.0" description = "The absolute simplest way to use Sass with Django. Pure Python, minimal dependencies, and no special configuration required!" -category = "main" optional = false python-versions = "*" files = [ @@ -488,7 +481,6 @@ libsass = "*" name = "django-storages" version = "1.12.3" description = "Support for many storage backends in Django" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -512,7 +504,6 @@ sftp = ["paramiko"] name = "djangorestframework" version = "3.14.0" description = "Web APIs for Django, made easy." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -528,7 +519,6 @@ pytz = "*" name = "google-api-core" version = "1.34.0" description = "Google API client core library" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -553,7 +543,6 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] name = "google-api-python-client" version = "1.12.8" description = "Google API Client Library for Python" -category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" files = [ @@ -573,7 +562,6 @@ uritemplate = ">=3.0.0,<4dev" name = "google-auth" version = "1.32.0" description = "Google Authentication Library" -category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" files = [ @@ -597,7 +585,6 @@ reauth = ["pyu2f (>=0.1.5)"] name = "google-auth-httplib2" version = "0.1.0" description = "Google Authentication Library: httplib2 transport" -category = "main" optional = false python-versions = "*" files = [ @@ -614,7 +601,6 @@ six = "*" name = "google-cloud-core" version = "1.7.0" description = "Google Cloud API client core library" -category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" files = [ @@ -634,7 +620,6 @@ grpc = ["grpcio (>=1.8.2,<2.0dev)"] name = "google-cloud-storage" version = "1.42.3" description = "Google Cloud Storage API client library" -category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" files = [ @@ -655,7 +640,6 @@ six = "*" name = "google-cloud-workflows" version = "1.9.1" description = "Google Cloud Workflows API client library" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -664,10 +648,10 @@ files = [ ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.0 || >=2.11.0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} proto-plus = [ - {version = ">=1.22.0,<2.0.0dev", markers = "python_version < \"3.11\""}, {version = ">=1.22.2,<2.0.0dev", markers = "python_version >= \"3.11\""}, + {version = ">=1.22.0,<2.0.0dev", markers = "python_version < \"3.11\""}, ] protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" @@ -675,7 +659,6 @@ protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4 name = "google-crc32c" version = "1.1.2" description = "A python wrapper of the C library 'Google CRC32C'" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -720,7 +703,6 @@ testing = ["pytest"] name = "google-resumable-media" version = "1.3.1" description = "Utilities for Google Media Downloads and Resumable Uploads" -category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" files = [ @@ -740,7 +722,6 @@ requests = ["requests (>=2.18.0,<3.0.0dev)"] name = "googleapis-common-protos" version = "1.58.0" description = "Common protobufs used in Google APIs" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -758,7 +739,6 @@ grpc = ["grpcio (>=1.44.0,<2.0.0dev)"] name = "grpcio" version = "1.53.0" description = "HTTP/2-based RPC framework" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -816,7 +796,6 @@ protobuf = ["grpcio-tools (>=1.53.0)"] name = "grpcio-status" version = "1.48.2" description = "Status proto mapping for gRPC" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -833,7 +812,6 @@ protobuf = ">=3.12.0" name = "hdn-research-environment" version = "2.3.8" description = "A Django app for supporting cloud-native research environments" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -849,7 +827,6 @@ google-cloud-workflows = ">=1.6.1" name = "html2text" version = "2018.1.9" description = "Turn HTML into equivalent Markdown-structured text." -category = "main" optional = false python-versions = "*" files = [ @@ -861,7 +838,6 @@ files = [ name = "httplib2" version = "0.19.1" description = "A comprehensive HTTP client library." -category = "main" optional = false python-versions = "*" files = [ @@ -876,7 +852,6 @@ pyparsing = ">=2.4.2,<3" name = "idna" version = "2.10" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -888,7 +863,6 @@ files = [ name = "jmespath" version = "1.0.1" description = "JSON Matching Expressions" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -900,7 +874,6 @@ files = [ name = "jwcrypto" version = "1.4.2" description = "Implementation of JOSE Web standards" -category = "main" optional = false python-versions = ">= 3.6" files = [ @@ -915,7 +888,6 @@ deprecated = "*" name = "libsass" version = "0.21.0" description = "Sass for Python: A straightforward binding of libsass for Python." -category = "main" optional = false python-versions = "*" files = [ @@ -938,7 +910,6 @@ six = "*" name = "oauthlib" version = "3.2.2" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -955,7 +926,6 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] name = "packaging" version = "20.9" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -970,7 +940,6 @@ pyparsing = ">=2.0.2" name = "pdfminer.six" version = "20211012" description = "PDF parser and analyzer" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -990,7 +959,6 @@ docs = ["sphinx", "sphinx-argparse"] name = "pillow" version = "10.0.1" description = "Python Imaging Library (Fork)" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1058,7 +1026,6 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa name = "proto-plus" version = "1.22.2" description = "Beautiful, Pythonic protocol buffers." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1076,11 +1043,9 @@ testing = ["google-api-core[grpc] (>=1.31.5)"] name = "protobuf" version = "3.20.3" description = "Protocol Buffers" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "protobuf-3.20.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e67f9af1b607eb3a89aafc9bc68a9d1172aae788b2445cb9fd781bd97531f1f1"}, {file = "protobuf-3.20.3-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:f4bd856d702e5b0d96a00ec6b307b0f51c1982c2bf9c0052cf9019e9a544ba99"}, {file = "protobuf-3.20.3-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9aae4406ea63d825636cc11ffb34ad3379335803216ee3a856787bcf5ccc751e"}, {file = "protobuf-3.20.3-cp310-cp310-win32.whl", hash = "sha256:28545383d61f55b57cf4df63eebd9827754fd2dc25f80c5253f9184235db242c"}, @@ -1109,7 +1074,6 @@ files = [ name = "psycopg2" version = "2.9.5" description = "psycopg2 - Python-PostgreSQL Database Adapter" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1132,22 +1096,10 @@ files = [ name = "pyasn1" version = "0.4.8" description = "ASN.1 types and codecs" -category = "main" optional = false python-versions = "*" files = [ - {file = "pyasn1-0.4.8-py2.4.egg", hash = "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3"}, - {file = "pyasn1-0.4.8-py2.5.egg", hash = "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf"}, - {file = "pyasn1-0.4.8-py2.6.egg", hash = "sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00"}, - {file = "pyasn1-0.4.8-py2.7.egg", hash = "sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8"}, {file = "pyasn1-0.4.8-py2.py3-none-any.whl", hash = "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d"}, - {file = "pyasn1-0.4.8-py3.1.egg", hash = "sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86"}, - {file = "pyasn1-0.4.8-py3.2.egg", hash = "sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7"}, - {file = "pyasn1-0.4.8-py3.3.egg", hash = "sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576"}, - {file = "pyasn1-0.4.8-py3.4.egg", hash = "sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12"}, - {file = "pyasn1-0.4.8-py3.5.egg", hash = "sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2"}, - {file = "pyasn1-0.4.8-py3.6.egg", hash = "sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359"}, - {file = "pyasn1-0.4.8-py3.7.egg", hash = "sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776"}, {file = "pyasn1-0.4.8.tar.gz", hash = "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"}, ] @@ -1155,23 +1107,11 @@ files = [ name = "pyasn1-modules" version = "0.2.8" description = "A collection of ASN.1-based protocols modules." -category = "main" optional = false python-versions = "*" files = [ {file = "pyasn1-modules-0.2.8.tar.gz", hash = "sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e"}, - {file = "pyasn1_modules-0.2.8-py2.4.egg", hash = "sha256:0fe1b68d1e486a1ed5473f1302bd991c1611d319bba158e98b106ff86e1d7199"}, - {file = "pyasn1_modules-0.2.8-py2.5.egg", hash = "sha256:fe0644d9ab041506b62782e92b06b8c68cca799e1a9636ec398675459e031405"}, - {file = "pyasn1_modules-0.2.8-py2.6.egg", hash = "sha256:a99324196732f53093a84c4369c996713eb8c89d360a496b599fb1a9c47fc3eb"}, - {file = "pyasn1_modules-0.2.8-py2.7.egg", hash = "sha256:0845a5582f6a02bb3e1bde9ecfc4bfcae6ec3210dd270522fee602365430c3f8"}, {file = "pyasn1_modules-0.2.8-py2.py3-none-any.whl", hash = "sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74"}, - {file = "pyasn1_modules-0.2.8-py3.1.egg", hash = "sha256:f39edd8c4ecaa4556e989147ebf219227e2cd2e8a43c7e7fcb1f1c18c5fd6a3d"}, - {file = "pyasn1_modules-0.2.8-py3.2.egg", hash = "sha256:b80486a6c77252ea3a3e9b1e360bc9cf28eaac41263d173c032581ad2f20fe45"}, - {file = "pyasn1_modules-0.2.8-py3.3.egg", hash = "sha256:65cebbaffc913f4fe9e4808735c95ea22d7a7775646ab690518c056784bc21b4"}, - {file = "pyasn1_modules-0.2.8-py3.4.egg", hash = "sha256:15b7c67fabc7fc240d87fb9aabf999cf82311a6d6fb2c70d00d3d0604878c811"}, - {file = "pyasn1_modules-0.2.8-py3.5.egg", hash = "sha256:426edb7a5e8879f1ec54a1864f16b882c2837bfd06eee62f2c982315ee2473ed"}, - {file = "pyasn1_modules-0.2.8-py3.6.egg", hash = "sha256:cbac4bc38d117f2a49aeedec4407d23e8866ea4ac27ff2cf7fb3e5b570df19e0"}, - {file = "pyasn1_modules-0.2.8-py3.7.egg", hash = "sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd"}, ] [package.dependencies] @@ -1181,7 +1121,6 @@ pyasn1 = ">=0.4.6,<0.5.0" name = "pycparser" version = "2.20" description = "C parser in Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1193,7 +1132,6 @@ files = [ name = "pyopenssl" version = "23.2.0" description = "Python wrapper module around the OpenSSL library" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1212,7 +1150,6 @@ test = ["flaky", "pretend", "pytest (>=3.0.1)"] name = "pyparsing" version = "2.4.7" description = "Python parsing module" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1224,7 +1161,6 @@ files = [ name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -1239,7 +1175,6 @@ six = ">=1.5" name = "python-decouple" version = "3.4" description = "Strict separation of settings from code." -category = "main" optional = false python-versions = "*" files = [ @@ -1251,7 +1186,6 @@ files = [ name = "python-json-logger" version = "2.0.2" description = "A python library adding a json log formatter" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1263,7 +1197,6 @@ files = [ name = "pytz" version = "2022.1" description = "World timezone definitions, modern and historical" -category = "main" optional = false python-versions = "*" files = [ @@ -1275,7 +1208,6 @@ files = [ name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1297,7 +1229,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-mock" version = "1.9.3" description = "Mock out responses from the requests package" -category = "dev" optional = false python-versions = "*" files = [ @@ -1317,13 +1248,11 @@ test = ["fixtures", "mock", "purl", "pytest", "sphinx", "testrepository (>=0.0.1 name = "requests-oauthlib" version = "1.3.0" description = "OAuthlib authentication support for Requests." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ {file = "requests-oauthlib-1.3.0.tar.gz", hash = "sha256:b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a"}, {file = "requests_oauthlib-1.3.0-py2.py3-none-any.whl", hash = "sha256:7f71572defaecd16372f9006f33c2ec8c077c3cfa6f5911a9a90202beb513f3d"}, - {file = "requests_oauthlib-1.3.0-py3.7.egg", hash = "sha256:fa6c47b933f01060936d87ae9327fead68768b69c6c9ea2109c48be30f2d4dbc"}, ] [package.dependencies] @@ -1337,7 +1266,6 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] name = "rsa" version = "4.7.2" description = "Pure-Python RSA implementation" -category = "main" optional = false python-versions = ">=3.5, <4" files = [ @@ -1352,7 +1280,6 @@ pyasn1 = ">=0.1.3" name = "s3transfer" version = "0.6.2" description = "An Amazon S3 Transfer Manager" -category = "main" optional = false python-versions = ">= 3.7" files = [ @@ -1370,7 +1297,6 @@ crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] name = "selenium" version = "3.141.0" description = "Python bindings for Selenium" -category = "dev" optional = false python-versions = "*" files = [ @@ -1385,7 +1311,6 @@ urllib3 = "*" name = "sentry-sdk" version = "1.14.0" description = "Python client for Sentry (https://sentry.io)" -category = "main" optional = false python-versions = "*" files = [ @@ -1424,7 +1349,6 @@ tornado = ["tornado (>=5)"] name = "setuptools" version = "65.5.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1441,7 +1365,6 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs ( name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1453,7 +1376,6 @@ files = [ name = "sqlparse" version = "0.4.4" description = "A non-validating SQL parser." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1470,7 +1392,6 @@ test = ["pytest", "pytest-cov"] name = "tzdata" version = "2022.7" description = "Provider of IANA time zone data" -category = "main" optional = false python-versions = ">=2" files = [ @@ -1482,7 +1403,6 @@ files = [ name = "uritemplate" version = "3.0.1" description = "URI templates" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1494,7 +1414,6 @@ files = [ name = "urllib3" version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -1511,7 +1430,6 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "uwsgi" version = "2.0.22" description = "The uWSGI server" -category = "main" optional = false python-versions = "*" files = [ @@ -1522,7 +1440,6 @@ files = [ name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" -category = "main" optional = false python-versions = "*" files = [ @@ -1534,7 +1451,6 @@ files = [ name = "wrapt" version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -1619,7 +1535,6 @@ files = [ name = "zxcvbn" version = "4.4.28" description = "" -category = "main" optional = false python-versions = "*" files = [ @@ -1629,4 +1544,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "603006189586cebf1e868ea4dc8d6bb6f337123c76c9cbf296c680e6e0681b60" +content-hash = "d49adf3557d5a759172c7f1c5920edcc0cd0dc2759cedfc5f53d04187cb06f21" diff --git a/pyproject.toml b/pyproject.toml index 8ef0467986..d151ff94cf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,6 +46,7 @@ urllib3 = "^1.26.18" [tool.poetry.dev-dependencies] coverage = "^7.2.3" +django-coverage-plugin = "^3.1.0" django-debug-toolbar = "^3.2.4" requests = "^2.21.0" requests-mock = "^1.7.0" diff --git a/requirements.txt b/requirements.txt index f759a9472d..877a3bc803 100644 --- a/requirements.txt +++ b/requirements.txt @@ -177,6 +177,9 @@ django-ckeditor==6.5.1 ; python_version >= "3.9" and python_version < "4.0" \ django-cors-headers==3.14.0 ; python_version >= "3.9" and python_version < "4.0" \ --hash=sha256:5fbd58a6fb4119d975754b2bc090f35ec160a8373f276612c675b00e8a138739 \ --hash=sha256:684180013cc7277bdd8702b80a3c5a4b3fcae4abb2bf134dceb9f5dfe300228e +django-coverage-plugin==3.1.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:223d34bf92bebadcb8b7b89932480e41c7bd98b44a8156934488fbe7f4a71f99 \ + --hash=sha256:eb0ea8ffdb0db11a02994fc99be6500550efb496c350d709f418ff3d8e553a67 django-debug-toolbar==3.2.4 ; python_version >= "3.9" and python_version < "4.0" \ --hash=sha256:644bbd5c428d3283aa9115722471769cac1bec189edf3a0c855fd8ff870375a9 \ --hash=sha256:6b633b6cfee24f232d73569870f19aa86c819d750e7f3e833f2344a9eb4b4409 @@ -401,7 +404,7 @@ pillow==10.0.1 ; python_version >= "3.9" and python_version < "4.0" \ proto-plus==1.22.2 ; python_version >= "3.9" and python_version < "4.0" \ --hash=sha256:0e8cda3d5a634d9895b75c573c9352c16486cb75deb0e078b5fda34db4243165 \ --hash=sha256:de34e52d6c9c6fcd704192f09767cb561bb4ee64e70eede20b0834d841f0be4d -protobuf==3.20.3 ; python_version < "4.0" and python_version >= "3.9" \ +protobuf==3.20.3 ; python_version >= "3.9" and python_version < "4.0" \ --hash=sha256:03038ac1cfbc41aa21f6afcbcd357281d7521b4157926f30ebecc8d4ea59dcb7 \ --hash=sha256:28545383d61f55b57cf4df63eebd9827754fd2dc25f80c5253f9184235db242c \ --hash=sha256:2e3427429c9cffebf259491be0af70189607f365c2f41c7c3764af6f337105f2 \ @@ -422,7 +425,6 @@ protobuf==3.20.3 ; python_version < "4.0" and python_version >= "3.9" \ --hash=sha256:daa564862dd0d39c00f8086f88700fdbe8bc717e993a21e90711acfed02f2402 \ --hash=sha256:de78575669dddf6099a8a0f46a27e82a1783c557ccc38ee620ed8cc96d3be7d7 \ --hash=sha256:e64857f395505ebf3d2569935506ae0dfc4a15cb80dc25261176c784662cdcc4 \ - --hash=sha256:e67f9af1b607eb3a89aafc9bc68a9d1172aae788b2445cb9fd781bd97531f1f1 \ --hash=sha256:f4bd856d702e5b0d96a00ec6b307b0f51c1982c2bf9c0052cf9019e9a544ba99 \ --hash=sha256:f4c42102bc82a51108e449cbb32b19b180022941c727bac0cfd50170341f16ee psycopg2==2.9.5 ; python_version >= "3.9" and python_version < "4.0" \ @@ -440,33 +442,11 @@ psycopg2==2.9.5 ; python_version >= "3.9" and python_version < "4.0" \ --hash=sha256:f5b6320dbc3cf6cfb9f25308286f9f7ab464e65cfb105b64cc9c52831748ced2 \ --hash=sha256:fc04dd5189b90d825509caa510f20d1d504761e78b8dfb95a0ede180f71d50e5 pyasn1-modules==0.2.8 ; python_version >= "3.9" and python_version < "4.0" \ - --hash=sha256:0845a5582f6a02bb3e1bde9ecfc4bfcae6ec3210dd270522fee602365430c3f8 \ - --hash=sha256:0fe1b68d1e486a1ed5473f1302bd991c1611d319bba158e98b106ff86e1d7199 \ - --hash=sha256:15b7c67fabc7fc240d87fb9aabf999cf82311a6d6fb2c70d00d3d0604878c811 \ - --hash=sha256:426edb7a5e8879f1ec54a1864f16b882c2837bfd06eee62f2c982315ee2473ed \ - --hash=sha256:65cebbaffc913f4fe9e4808735c95ea22d7a7775646ab690518c056784bc21b4 \ --hash=sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e \ - --hash=sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74 \ - --hash=sha256:a99324196732f53093a84c4369c996713eb8c89d360a496b599fb1a9c47fc3eb \ - --hash=sha256:b80486a6c77252ea3a3e9b1e360bc9cf28eaac41263d173c032581ad2f20fe45 \ - --hash=sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd \ - --hash=sha256:cbac4bc38d117f2a49aeedec4407d23e8866ea4ac27ff2cf7fb3e5b570df19e0 \ - --hash=sha256:f39edd8c4ecaa4556e989147ebf219227e2cd2e8a43c7e7fcb1f1c18c5fd6a3d \ - --hash=sha256:fe0644d9ab041506b62782e92b06b8c68cca799e1a9636ec398675459e031405 + --hash=sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74 pyasn1==0.4.8 ; python_version >= "3.9" and python_version < "4.0" \ - --hash=sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359 \ - --hash=sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576 \ - --hash=sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf \ - --hash=sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7 \ --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \ - --hash=sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00 \ - --hash=sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8 \ - --hash=sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86 \ - --hash=sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12 \ - --hash=sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776 \ - --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba \ - --hash=sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2 \ - --hash=sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3 + --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba pycparser==2.20 ; python_version >= "3.9" and python_version < "4.0" \ --hash=sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0 \ --hash=sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705 @@ -493,8 +473,7 @@ requests-mock==1.9.3 ; python_version >= "3.9" and python_version < "4.0" \ --hash=sha256:8d72abe54546c1fc9696fa1516672f1031d72a55a1d66c85184f972a24ba0eba requests-oauthlib==1.3.0 ; python_version >= "3.9" and python_version < "4.0" \ --hash=sha256:7f71572defaecd16372f9006f33c2ec8c077c3cfa6f5911a9a90202beb513f3d \ - --hash=sha256:b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a \ - --hash=sha256:fa6c47b933f01060936d87ae9327fead68768b69c6c9ea2109c48be30f2d4dbc + --hash=sha256:b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a requests==2.31.0 ; python_version >= "3.9" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 From b5e970ccd13ca28158bb129c3d34c4a357e42f0f Mon Sep 17 00:00:00 2001 From: Benjamin Moody Date: Tue, 7 Nov 2023 17:24:00 -0500 Subject: [PATCH 2/2] Enable tracking test coverage for Django templates. django_coverage_plugin allows measuring test coverage for Django templates. By enabling this plugin, the coverage reports generated by GitHub workflows should include template files (.html and others) alongside the existing .py files. This appears to require explicitly setting settings.TEMPLATES[]['OPTIONS']['debug']. I'm not sure if that has any effect on Django itself, since according to the Django docs, this should default to the value of settings.DEBUG. --- physionet-django/.coveragerc | 5 +++++ physionet-django/physionet/settings/base.py | 1 + 2 files changed, 6 insertions(+) create mode 100644 physionet-django/.coveragerc diff --git a/physionet-django/.coveragerc b/physionet-django/.coveragerc new file mode 100644 index 0000000000..4f8710d568 --- /dev/null +++ b/physionet-django/.coveragerc @@ -0,0 +1,5 @@ +[run] +plugins = django_coverage_plugin + +[django_coverage_plugin] +template_extensions = html, txt, json, xml diff --git a/physionet-django/physionet/settings/base.py b/physionet-django/physionet/settings/base.py index ca7cb457f7..2134dd24ca 100644 --- a/physionet-django/physionet/settings/base.py +++ b/physionet-django/physionet/settings/base.py @@ -122,6 +122,7 @@ 'sso.context_processors.sso_enabled', 'physionet.context_processors.cloud_research_environments_config', ], + 'debug': DEBUG, }, }, ]