Skip to content

Commit 126208a

Browse files
Merge branch 'release/0.3.13'
2 parents 7c62f12 + d2b3035 commit 126208a

File tree

7 files changed

+110
-101
lines changed

7 files changed

+110
-101
lines changed

.github/workflows/build.yml

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,17 @@ on: [push, pull_request]
55

66
jobs:
77
build:
8-
name: build (Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }})
8+
name: |
9+
build (Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }}, ${{ matrix.database-engine }})
910
runs-on: ubuntu-latest
1011

1112
strategy:
1213
fail-fast: false
1314
matrix:
14-
python-version: ['3.11', '3.12']
15-
django-version: ['4.2', '5.0', 'dev']
15+
python-version: ['3.12']
16+
django-version: ['4.2', '5.1', 'dev']
17+
database-engine: ["mysql", "postgres"]
1618

17-
exclude:
18-
- python-version: '3.12'
19-
django-version: '4.2'
20-
- python-version: '3.11'
21-
django-version: 'dev'
2219
services:
2320
mysql:
2421
image: mysql:latest
@@ -28,6 +25,17 @@ jobs:
2825
ports:
2926
- 3306:3306
3027
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
28+
postgres:
29+
image: postgres:latest
30+
env:
31+
POSTGRES_PASSWORD: postgres
32+
options: >-
33+
--health-cmd pg_isready
34+
--health-interval 10s
35+
--health-timeout 5s
36+
--health-retries 5
37+
ports:
38+
- 5432:5432
3139

3240
steps:
3341
- name: Install pycups and words dependency
@@ -61,7 +69,6 @@ jobs:
6169
python -m pip install --upgrade pip
6270
python -m pip install -r https://raw.githubusercontent.com/clinicedc/edc/develop/requirements.tests/tox.txt
6371
64-
6572
- name: Tox tests
6673
run: |
6774
tox -v

.pre-commit-config.yaml

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,20 @@ exclude: tests/etc/user-*
33

44
repos:
55
- repo: https://github.com/PyCQA/bandit
6-
rev: 1.7.7
6+
rev: 1.7.9
77
hooks:
88
- id: bandit
99
args:
1010
- "-x *test*.py"
1111

1212
- repo: https://github.com/psf/black
13-
rev: 24.2.0
13+
rev: 24.8.0
1414
hooks:
1515
- id: black
16-
language_version: python3.11
16+
language_version: python3.12
1717

1818
- repo: https://github.com/pycqa/flake8
19-
rev: 7.0.0
19+
rev: 7.1.1
2020
hooks:
2121
- id: flake8
2222
args:
@@ -28,21 +28,22 @@ repos:
2828
- id: isort
2929

3030
- repo: https://github.com/pre-commit/pre-commit-hooks
31-
rev: v4.5.0
31+
rev: v4.6.0
3232
hooks:
33-
- id: requirements-txt-fixer
34-
files: requirements/.*\.txt$
35-
- id: trailing-whitespace
3633
- id: check-added-large-files
37-
- id: fix-byte-order-marker
3834
- id: check-docstring-first
3935
- id: check-executables-have-shebangs
4036
- id: check-merge-conflict
37+
- id: check-toml
4138
- id: debug-statements
4239
- id: detect-private-key
40+
- id: fix-byte-order-marker
41+
- id: requirements-txt-fixer
42+
files: requirements/.*\.txt$
43+
- id: trailing-whitespace
4344

4445
- repo: https://github.com/adrienverge/yamllint
45-
rev: v1.34.0
46+
rev: v1.35.1
4647
hooks:
4748
- id: yamllint
4849
args:

edc_lab_results/tests/test_case_mixin.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
from dateutil.relativedelta import relativedelta
21
from django.test import TestCase
32
from edc_action_item import site_action_items
43
from edc_consent.site_consents import site_consents
54
from edc_consent.tests.consent_test_utils import consent_definition_factory
65
from edc_facility.import_holidays import import_holidays
76
from edc_lab import site_labs
87
from edc_metadata.tests.models import SubjectConsentV1
8+
from edc_protocol.research_protocol_config import ResearchProtocolConfig
99
from edc_registration.models import RegisteredSubject
1010
from edc_reportable import site_reportables
1111
from edc_reportable.grading_data.daids_july_2017 import grading_data
@@ -34,8 +34,8 @@ def setUpTestData(cls):
3434
site_visit_schedules.register(visit_schedule)
3535
consent_v1 = consent_definition_factory(
3636
SubjectConsentV1._meta.label_lower,
37-
start=get_utcnow() - relativedelta(years=1),
38-
end=get_utcnow() + relativedelta(years=1),
37+
start=ResearchProtocolConfig().study_open_datetime,
38+
end=ResearchProtocolConfig().study_close_datetime,
3939
)
4040
site_consents.register(consent_v1)
4141
import_holidays()
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/usr/bin/env python
2+
import sys
3+
from pathlib import Path
4+
5+
from edc_test_settings.default_test_settings import DefaultTestSettings
6+
7+
app_name = "edc_lab_results"
8+
base_dir = Path(__file__).absolute().parent.parent.parent
9+
10+
project_settings = DefaultTestSettings(
11+
calling_file=__file__,
12+
BASE_DIR=base_dir,
13+
APP_NAME=app_name,
14+
SILENCED_SYSTEM_CHECKS=["sites.E101", "edc_navbar.E002", "edc_navbar.E003"],
15+
SUBJECT_SCREENING_MODEL="edc_metadata.subjectscreening",
16+
SUBJECT_CONSENT_MODEL="edc_metadata.subjectconsent",
17+
SUBJECT_VISIT_MODEL="edc_visit_tracking.subjectvisit",
18+
SUBJECT_VISIT_MISSED_MODEL="edc_metadata.subjectvisitmissed",
19+
SUBJECT_REQUISITION_MODEL="edc_metadata.subjectrequisition",
20+
EDC_BLOOD_RESULTS_MODEL_APP_LABEL="edc_lab_results",
21+
LIST_MODEL_APP_LABEL="edc_metadata",
22+
EDC_SITES_REGISTER_DEFAULT=True,
23+
INSTALLED_APPS=[
24+
"django.contrib.admin",
25+
"django.contrib.auth",
26+
"django.contrib.contenttypes",
27+
"django.contrib.sessions",
28+
"django.contrib.messages",
29+
"django.contrib.staticfiles",
30+
"django.contrib.sites",
31+
"django_crypto_fields.apps.AppConfig",
32+
"django_revision.apps.AppConfig",
33+
"multisite",
34+
"adverse_event_app.apps.AppConfig",
35+
"edc_action_item.apps.AppConfig",
36+
"edc_adverse_event.apps.AppConfig",
37+
"edc_appointment.apps.AppConfig",
38+
"edc_auth.apps.AppConfig",
39+
"edc_consent.apps.AppConfig",
40+
"edc_crf.apps.AppConfig",
41+
"edc_dashboard.apps.AppConfig",
42+
"edc_data_manager.apps.AppConfig",
43+
"edc_device.apps.AppConfig",
44+
"edc_facility.apps.AppConfig",
45+
"edc_form_runners.apps.AppConfig",
46+
"edc_identifier.apps.AppConfig",
47+
"edc_lab.apps.AppConfig",
48+
"edc_lab_panel.apps.AppConfig",
49+
"edc_lab_results.apps.AppConfig",
50+
"edc_metadata.apps.AppConfig",
51+
"edc_notification.apps.AppConfig",
52+
"edc_offstudy.apps.AppConfig",
53+
"edc_registration.apps.AppConfig",
54+
"edc_review_dashboard.apps.AppConfig",
55+
"edc_sites.apps.AppConfig",
56+
"edc_subject_dashboard.apps.AppConfig",
57+
"edc_timepoint.apps.AppConfig",
58+
"edc_visit_schedule.apps.AppConfig",
59+
"edc_visit_tracking.apps.AppConfig",
60+
"edc_appconfig.apps.AppConfig",
61+
],
62+
RANDOMIZATION_LIST_PATH=str(base_dir / app_name / "tests" / "test_randomization_list.csv"),
63+
add_dashboard_middleware=True,
64+
use_test_urls=True,
65+
).settings
66+
67+
68+
for k, v in project_settings.items():
69+
setattr(sys.modules[__name__], k, v)

pyproject.toml

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ version_file="_version.py"
66

77
[tool.black]
88
line-length = 95
9-
target-version = ["py311"]
9+
target-version = ["py312"]
1010
extend-exclude = '''^(.*\/)*\b(migrations)\b($|\/.*$)'''
1111

1212
[tool.isort]
1313
profile = "black"
14-
py_version = "311"
14+
py_version = "312"
1515
skip = [".tox", ".eggs", "migrations"]
1616

1717
[tool.coverage.run]
@@ -35,21 +35,19 @@ exclude_lines = [
3535
legacy_tox_ini = """
3636
[tox]
3737
envlist =
38-
py{311}-dj{42,50},
39-
py{312}-dj{50,dev},
38+
py{312}-dj{42,51,dev},
4039
lint
4140
4241
isolated_build = true
4342
4443
[gh-actions]
4544
python =
46-
3.11: py311
4745
3.12: py312, lint
4846
4947
[gh-actions:env]
5048
DJANGO =
5149
4.2: dj42
52-
5.0: dj50
50+
5.1: dj51
5351
dev: djdev, lint
5452
5553
[testenv]
@@ -59,11 +57,11 @@ deps =
5957
-r https://raw.githubusercontent.com/clinicedc/edc/develop/requirements.tests/edc.txt
6058
-r https://raw.githubusercontent.com/clinicedc/edc/develop/requirements.tests/third_party_dev.txt
6159
dj42: Django>=4.2,<5.0
62-
dj50: Django>=5.0
60+
dj51: Django>=5.1,<5.2
6361
djdev: https://github.com/django/django/tarball/main
6462
6563
commands =
66-
pip install -U pip coverage[toml]
64+
pip install -U pip
6765
pip --version
6866
pip freeze
6967
coverage run -a runtests.py

runtests.py

Lines changed: 2 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,5 @@
11
#!/usr/bin/env python
2-
import logging
3-
from pathlib import Path
4-
5-
from edc_test_utils import DefaultTestSettings, func_main
6-
7-
app_name = "edc_lab_results"
8-
base_dir = Path(__file__).absolute().parent
9-
10-
project_settings = DefaultTestSettings(
11-
calling_file=__file__,
12-
BASE_DIR=base_dir,
13-
APP_NAME=app_name,
14-
ETC_DIR=str(base_dir / app_name / "tests" / "etc"),
15-
SILENCED_SYSTEM_CHECKS=["sites.E101", "edc_navbar.E002", "edc_navbar.E003"],
16-
SUBJECT_SCREENING_MODEL="edc_metadata.subjectscreening",
17-
SUBJECT_CONSENT_MODEL="edc_metadata.subjectconsent",
18-
SUBJECT_VISIT_MODEL="edc_visit_tracking.subjectvisit",
19-
SUBJECT_VISIT_MISSED_MODEL="edc_metadata.subjectvisitmissed",
20-
SUBJECT_REQUISITION_MODEL="edc_metadata.subjectrequisition",
21-
EDC_BLOOD_RESULTS_MODEL_APP_LABEL="edc_lab_results",
22-
LIST_MODEL_APP_LABEL="edc_metadata",
23-
EDC_SITES_REGISTER_DEFAULT=True,
24-
INSTALLED_APPS=[
25-
"django.contrib.admin",
26-
"django.contrib.auth",
27-
"django.contrib.contenttypes",
28-
"django.contrib.sessions",
29-
"django.contrib.messages",
30-
"django.contrib.staticfiles",
31-
"django.contrib.sites",
32-
"django_crypto_fields.apps.AppConfig",
33-
"django_revision.apps.AppConfig",
34-
"multisite",
35-
"edc_action_item.apps.AppConfig",
36-
"edc_appointment.apps.AppConfig",
37-
"edc_auth.apps.AppConfig",
38-
"edc_consent.apps.AppConfig",
39-
"edc_crf.apps.AppConfig",
40-
"edc_data_manager.apps.AppConfig",
41-
"edc_device.apps.AppConfig",
42-
"edc_facility.apps.AppConfig",
43-
"edc_form_runners.apps.AppConfig",
44-
"edc_identifier.apps.AppConfig",
45-
"edc_lab.apps.AppConfig",
46-
"edc_lab_panel.apps.AppConfig",
47-
"edc_lab_results.apps.AppConfig",
48-
"edc_list_data.apps.AppConfig",
49-
"edc_metadata.apps.AppConfig",
50-
"edc_notification.apps.AppConfig",
51-
"edc_offstudy.apps.AppConfig",
52-
"edc_registration.apps.AppConfig",
53-
"edc_sites.apps.AppConfig",
54-
"edc_timepoint.apps.AppConfig",
55-
"edc_visit_schedule.apps.AppConfig",
56-
"edc_visit_tracking.apps.AppConfig",
57-
"edc_appconfig.apps.AppConfig",
58-
],
59-
RANDOMIZATION_LIST_PATH=str(base_dir / app_name / "tests" / "test_randomization_list.csv"),
60-
add_dashboard_middleware=True,
61-
use_test_urls=True,
62-
).settings
63-
64-
65-
def main():
66-
func_main(project_settings, f"{app_name}.tests")
67-
2+
from edc_test_settings.func_main import func_main2
683

694
if __name__ == "__main__":
70-
logging.basicConfig()
71-
main()
5+
func_main2("edc_lab_results.tests.test_settings", "edc_lab_results.tests")

setup.cfg

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@ classifiers=
1313
Environment :: Web Environment
1414
Framework :: Django
1515
Framework :: Django :: 4.2
16+
Framework :: Django :: 5.1
1617
Intended Audience :: Developers
1718
Intended Audience :: Science/Research
1819
Operating System :: OS Independent
19-
Programming Language :: Python :: 3.11
20+
Programming Language :: Python :: 3.12
2021
License :: OSI Approved :: GNU General Public License v3 (GPLv3)
2122

22-
2323
[options]
24-
python_requires = >=3.11
24+
python_requires = >=3.12
2525
zip_safe = False
2626
include_package_data = True
2727
packages = find:

0 commit comments

Comments
 (0)