Add support and testing for Python 3.12

This commit is contained in:
Christopher C. Wells 2023-10-20 20:50:30 -07:00 committed by Christopher Charbonneau Wells
parent 31f8f951ad
commit 9fc666dd2e
13 changed files with 114 additions and 90 deletions

View File

@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
python-version: [ '3.8', '3.9', '3.10', '3.11' ] python-version: [ '3.8', '3.9', '3.10', '3.11', '3.12' ]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- uses: ./.github/actions/setup - uses: ./.github/actions/setup

View File

@ -602,7 +602,7 @@ class TagsAPITestCase(TestBase.BabyBuddyAPITestCaseBase):
results_by_name = {r["name"]: r for r in results} results_by_name = {r["name"]: r for r in results}
tag_data = results_by_name["new tag"] tag_data = results_by_name["new tag"]
self.assertDictContainsSubset(data, tag_data) self.assertEqual(tag_data, tag_data | data)
self.assertEqual(tag_data["slug"], "new-tag") self.assertEqual(tag_data["slug"], "new-tag")
self.assertTrue(tag_data["last_used"]) self.assertTrue(tag_data["last_used"])
@ -618,7 +618,7 @@ class TagsAPITestCase(TestBase.BabyBuddyAPITestCaseBase):
modified_data, modified_data,
) )
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertDictContainsSubset(modified_data, response.data) self.assertEqual(response.data, response.data | modified_data)
def test_delete(self): def test_delete(self):
endpoint = f"{self.endpoint}a-name/" endpoint = f"{self.endpoint}a-name/"
@ -861,15 +861,19 @@ class TestProfileAPITestCase(APITestCase):
def test_get(self): def test_get(self):
response = self.client.get(self.endpoint) response = self.client.get(self.endpoint)
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertDictContainsSubset(
{ self.assertEqual(
response.data,
response.data
| {
"language": "en-US", "language": "en-US",
"timezone": "UTC", "timezone": "UTC",
}, },
response.data,
) )
self.assertDictContainsSubset( self.assertEqual(
{ response.data["user"],
response.data["user"]
| {
"id": 1, "id": 1,
"username": "admin", "username": "admin",
"first_name": "", "first_name": "",
@ -877,9 +881,7 @@ class TestProfileAPITestCase(APITestCase):
"email": "", "email": "",
"is_staff": True, "is_staff": True,
}, },
response.data["user"],
) )
# Test that api_key is in the mix and "some long string" # Test that api_key is in the mix and "some long string"
self.assertIn("api_key", response.data) self.assertIn("api_key", response.data)
self.assertTrue(isinstance(response.data["api_key"], str)) self.assertTrue(isinstance(response.data["api_key"], str))

View File

@ -1,4 +1,4 @@
""" r"""
.----------------. .----------------.
| .--------------. | | .--------------. |
| | ______ | | | | ______ | |

88
package-lock.json generated
View File

@ -26,11 +26,11 @@
"jquery": "^3.7.1", "jquery": "^3.7.1",
"masonry-layout": "^4.2.2", "masonry-layout": "^4.2.2",
"npm-force-resolutions": "^0.0.10", "npm-force-resolutions": "^0.0.10",
"plotly.js": "^2.26.1", "plotly.js": "^2.27.0",
"pulltorefreshjs": "^0.1.22", "pulltorefreshjs": "^0.1.22",
"pump": "^3.0.0", "pump": "^3.0.0",
"sass": "^1.68.0", "sass": "^1.69.4",
"stylelint": "^15.10.3", "stylelint": "^15.11.0",
"stylelint-config-recommended-scss": "^13.0.0", "stylelint-config-recommended-scss": "^13.0.0",
"stylelint-order": "^6.0.3", "stylelint-order": "^6.0.3",
"stylelint-scss": "^5.2.1" "stylelint-scss": "^5.2.1"
@ -1839,12 +1839,12 @@
"dev": true "dev": true
}, },
"node_modules/css-functions-list": { "node_modules/css-functions-list": {
"version": "3.2.0", "version": "3.2.1",
"resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.0.tgz", "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.1.tgz",
"integrity": "sha512-d/jBMPyYybkkLVypgtGv12R+pIFw4/f/IHtCTxWpZc8ofTYOPigIgmA6vu5rMHartZC+WuXhBUHfnyNUIQSYrg==", "integrity": "sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": ">=12.22" "node": ">=12 || >=16"
} }
}, },
"node_modules/css-global-keywords": { "node_modules/css-global-keywords": {
@ -2724,15 +2724,15 @@
} }
}, },
"node_modules/file-entry-cache": { "node_modules/file-entry-cache": {
"version": "6.0.1", "version": "7.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.1.tgz",
"integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "integrity": "sha512-uLfFktPmRetVCbHe5UPuekWrQ6hENufnA46qEGbfACkK5drjTTdQYUragRgMjHldcbYG+nslUerqMPjbBSHXjQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"flat-cache": "^3.0.4" "flat-cache": "^3.1.1"
}, },
"engines": { "engines": {
"node": "^10.12.0 || >=12.0.0" "node": ">=12.0.0"
} }
}, },
"node_modules/fill-range": { "node_modules/fill-range": {
@ -2946,22 +2946,23 @@
} }
}, },
"node_modules/flat-cache": { "node_modules/flat-cache": {
"version": "3.0.4", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz",
"integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"flatted": "^3.1.0", "flatted": "^3.2.9",
"keyv": "^4.5.3",
"rimraf": "^3.0.2" "rimraf": "^3.0.2"
}, },
"engines": { "engines": {
"node": "^10.12.0 || >=12.0.0" "node": ">=12.0.0"
} }
}, },
"node_modules/flatted": { "node_modules/flatted": {
"version": "3.2.7", "version": "3.2.9",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
"integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
"dev": true "dev": true
}, },
"node_modules/flatten-vertex-data": { "node_modules/flatten-vertex-data": {
@ -5156,6 +5157,12 @@
"js-yaml": "bin/js-yaml.js" "js-yaml": "bin/js-yaml.js"
} }
}, },
"node_modules/json-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
"dev": true
},
"node_modules/json-format": { "node_modules/json-format": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-format/-/json-format-1.0.1.tgz", "resolved": "https://registry.npmjs.org/json-format/-/json-format-1.0.1.tgz",
@ -5192,6 +5199,15 @@
"integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==", "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==",
"dev": true "dev": true
}, },
"node_modules/keyv": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
"integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
"dev": true,
"dependencies": {
"json-buffer": "3.0.1"
}
},
"node_modules/kind-of": { "node_modules/kind-of": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
@ -6835,9 +6851,9 @@
} }
}, },
"node_modules/plotly.js": { "node_modules/plotly.js": {
"version": "2.26.1", "version": "2.27.0",
"resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.26.1.tgz", "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.27.0.tgz",
"integrity": "sha512-aZgY5NEbuwgsnbTNmMy3BXPkx/QK+wuSnnEWvEeeUnhEZK+fTKazx6zCsbImLPinOvQtTdOXH4LhqrTYcYd69g==", "integrity": "sha512-48LjCf+A7MmgNTPBBomYdIcFaY/oWjIdRT7k+qmXz9opcMCAJiBrpbslWyfmR8HwmTxJRGdeyoWWlO8AHkvq5A==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@plotly/d3": "3.8.1", "@plotly/d3": "3.8.1",
@ -7956,9 +7972,9 @@
"dev": true "dev": true
}, },
"node_modules/sass": { "node_modules/sass": {
"version": "1.68.0", "version": "1.69.4",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.68.0.tgz", "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.4.tgz",
"integrity": "sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA==", "integrity": "sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"chokidar": ">=3.0.0 <4.0.0", "chokidar": ">=3.0.0 <4.0.0",
@ -8684,9 +8700,9 @@
"dev": true "dev": true
}, },
"node_modules/stylelint": { "node_modules/stylelint": {
"version": "15.10.3", "version": "15.11.0",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.3.tgz", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz",
"integrity": "sha512-aBQMMxYvFzJJwkmg+BUUg3YfPyeuCuKo2f+LOw7yYbU8AZMblibwzp9OV4srHVeQldxvSFdz0/Xu8blq2AesiA==", "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@csstools/css-parser-algorithms": "^2.3.1", "@csstools/css-parser-algorithms": "^2.3.1",
@ -8696,12 +8712,12 @@
"balanced-match": "^2.0.0", "balanced-match": "^2.0.0",
"colord": "^2.9.3", "colord": "^2.9.3",
"cosmiconfig": "^8.2.0", "cosmiconfig": "^8.2.0",
"css-functions-list": "^3.2.0", "css-functions-list": "^3.2.1",
"css-tree": "^2.3.1", "css-tree": "^2.3.1",
"debug": "^4.3.4", "debug": "^4.3.4",
"fast-glob": "^3.3.1", "fast-glob": "^3.3.1",
"fastest-levenshtein": "^1.0.16", "fastest-levenshtein": "^1.0.16",
"file-entry-cache": "^6.0.1", "file-entry-cache": "^7.0.0",
"global-modules": "^2.0.0", "global-modules": "^2.0.0",
"globby": "^11.1.0", "globby": "^11.1.0",
"globjoin": "^0.1.4", "globjoin": "^0.1.4",
@ -8710,13 +8726,13 @@
"import-lazy": "^4.0.0", "import-lazy": "^4.0.0",
"imurmurhash": "^0.1.4", "imurmurhash": "^0.1.4",
"is-plain-object": "^5.0.0", "is-plain-object": "^5.0.0",
"known-css-properties": "^0.28.0", "known-css-properties": "^0.29.0",
"mathml-tag-names": "^2.1.3", "mathml-tag-names": "^2.1.3",
"meow": "^10.1.5", "meow": "^10.1.5",
"micromatch": "^4.0.5", "micromatch": "^4.0.5",
"normalize-path": "^3.0.0", "normalize-path": "^3.0.0",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
"postcss": "^8.4.27", "postcss": "^8.4.28",
"postcss-resolve-nested-selector": "^0.1.1", "postcss-resolve-nested-selector": "^0.1.1",
"postcss-safe-parser": "^6.0.0", "postcss-safe-parser": "^6.0.0",
"postcss-selector-parser": "^6.0.13", "postcss-selector-parser": "^6.0.13",
@ -8873,6 +8889,12 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/stylelint/node_modules/known-css-properties": {
"version": "0.29.0",
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz",
"integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==",
"dev": true
},
"node_modules/stylelint/node_modules/mdn-data": { "node_modules/stylelint/node_modules/mdn-data": {
"version": "2.0.30", "version": "2.0.30",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",

View File

@ -26,11 +26,11 @@
"jquery": "^3.7.1", "jquery": "^3.7.1",
"masonry-layout": "^4.2.2", "masonry-layout": "^4.2.2",
"npm-force-resolutions": "^0.0.10", "npm-force-resolutions": "^0.0.10",
"plotly.js": "^2.26.1", "plotly.js": "^2.27.0",
"pulltorefreshjs": "^0.1.22", "pulltorefreshjs": "^0.1.22",
"pump": "^3.0.0", "pump": "^3.0.0",
"sass": "^1.68.0", "sass": "^1.69.4",
"stylelint": "^15.10.3", "stylelint": "^15.11.0",
"stylelint-config-recommended-scss": "^13.0.0", "stylelint-config-recommended-scss": "^13.0.0",
"stylelint-order": "^6.0.3", "stylelint-order": "^6.0.3",
"stylelint-scss": "^5.2.1" "stylelint-scss": "^5.2.1"

View File

@ -1,51 +1,51 @@
-i https://pypi.python.org/simple -i https://pypi.python.org/simple
annotated-types==0.6.0; python_version >= '3.8' annotated-types==0.6.0; python_version >= '3.8'
asgiref==3.7.2; python_version >= '3.7' asgiref==3.7.2; python_version >= '3.7'
boto3==1.28.62 boto3==1.28.68; python_version >= '3.7'
botocore==1.31.62 ; python_version >= '3.7' botocore==1.31.68; python_version >= '3.7'
defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
diff-match-patch==20230430; python_version >= '3.7' diff-match-patch==20230430; python_version >= '3.7'
dj-database-url==2.1.0 dj-database-url==2.1.0
django==4.2.6 django==4.2.6; python_version >= '3.8'
django-appconf==1.0.5; python_version >= '3.6' django-appconf==1.0.5; python_version >= '3.6'
django-axes==6.1.1 django-axes==6.1.1; python_version >= '3.7'
django-dbsettings==1.3.0 django-dbsettings==1.3.0
django-filter==23.3 django-filter==23.3; python_version >= '3.7'
django-imagekit==5.0.0 django-imagekit==5.0.0
django-import-export==3.3.1 django-import-export==3.3.1; python_version >= '3.8'
django-qr-code==3.1.1 django-qr-code==3.1.1; python_version >= '3.7'
django-storages==1.14.1 django-storages==1.14.2; python_version >= '3.7'
django-taggit==4.0.0 django-taggit==4.0.0; python_version >= '3.6'
django-widget-tweaks==1.5.0 django-widget-tweaks==1.5.0; python_version >= '3.8'
djangorestframework==3.14.0 djangorestframework==3.14.0; python_version >= '3.6'
et-xmlfile==1.1.0; python_version >= '3.6' et-xmlfile==1.1.0; python_version >= '3.6'
faker==19.6.2 faker==19.11.0; python_version >= '3.8'
gunicorn==21.2.0 gunicorn==21.2.0; python_version >= '3.5'
jmespath==1.0.1; python_version >= '3.7' jmespath==1.0.1; python_version >= '3.7'
markuppy==1.14 markuppy==1.14
odfpy==1.4.1 odfpy==1.4.1
openpyxl==3.1.2 openpyxl==3.1.2
packaging==23.2; python_version >= '3.7' packaging==23.2; python_version >= '3.7'
pilkit==3.0 pilkit==3.0
pillow==10.0.1 pillow==10.1.0; python_version >= '3.8'
plotly==5.17.0 plotly==5.17.0; python_version >= '3.6'
psycopg2-binary==2.9.9 psycopg2-binary==2.9.9; python_version >= '3.7'
pydantic==2.4.2; python_version >= '3.7' pydantic==2.4.2; python_version >= '3.7'
pydantic-core==2.10.1; python_version >= '3.7' pydantic-core==2.10.1; python_version >= '3.7'
python-dateutil==2.8.2 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' python-dateutil==2.8.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'
python-dotenv==1.0.0 python-dotenv==1.0.0; python_version >= '3.8'
pytz==2023.3.post1 pytz==2023.3.post1
pyyaml==6.0.1 pyyaml==6.0.1; python_version >= '3.6'
s3transfer==0.7.0; python_version >= '3.7' s3transfer==0.7.0; python_version >= '3.7'
segno==1.5.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' segno==1.5.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
setuptools==68.2.2; python_version >= '3.8' setuptools==68.2.2; python_version >= '3.8'
six==1.16.0 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'
sqlparse==0.4.4; python_version >= '3.5' sqlparse==0.4.4; python_version >= '3.5'
tablib[html,ods,xls,xlsx,yaml]==3.5.0; python_version >= '3.8' tablib[html,ods,xls,xlsx,yaml]==3.5.0; python_version >= '3.8'
tenacity==8.2.3; python_version >= '3.7' tenacity==8.2.3; python_version >= '3.7'
typing-extensions==4.8.0; python_version >= '3.8' typing-extensions==4.8.0; python_version >= '3.8'
uritemplate==4.1.1 uritemplate==4.1.1; python_version >= '3.6'
urllib3==2.0.6 ; python_version >= '3.10' urllib3==2.0.7; python_version >= '3.10'
whitenoise==6.5.0 whitenoise==6.6.0; python_version >= '3.8'
xlrd==2.0.1 xlrd==2.0.1
xlwt==1.3.0 xlwt==1.3.0

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long