diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9e404e11..2bc116cb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: python-version: - - 3.8 + - 3.11 steps: - name: Set up repo diff --git a/Pipfile b/Pipfile index e4ab5c17..73bc2b7a 100644 --- a/Pipfile +++ b/Pipfile @@ -9,9 +9,9 @@ channels = "~=4.1" daphne = "~=4.1" gunicorn = "~=22.0" social-auth-app-django = "~=5.4" -requests = "~=2.31" +requests = "~=2.32" psutil = "~=5.9" -celery = "~=5.3.5" # Celery v5.4 may stop supporting Python 3.8 +celery = "~=5.4.0" # warning: doesn't use semantic versioning (lock minor version) django-celery-results = "~=2.5" django-markdownify = "~=0.9" # includes the markdown package psycopg = "~=3.1" @@ -19,9 +19,9 @@ virtualenv = "~=20.26" redis = "~=5.0" channels-redis = "~=4.2" django-extensions = "~=3.2" -ipython = "~=8.12.3" # IPython follows NEP 29, so v8.13 does not support Python 3.8 +ipython = "~=8.24.0" # warning: doesn't use semantic versioning (lock minor version) mosspy = "~=1.0" -django-debug-toolbar = "~=4.3" +django-debug-toolbar = "~=4.4" pytest-django = "~=4.8" [dev-packages] @@ -30,4 +30,4 @@ pre-commit = "*" typing-extensions = "*" [requires] -python_version = "3.8" +python_version = "3.11" diff --git a/Pipfile.lock b/Pipfile.lock index 3bfa750e..3724e471 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "963af3b07a845c1ce7512bf1cecbe37485b635279009fdf1a3f473ac87df94c7" + "sha256": "38807f719ae4bb4650c13a9f7a22a0029c35311bdc1d1d848ac7baef5448c57a" }, "pipfile-spec": 6, "requires": { - "python_version": "3.8" + "python_version": "3.11" }, "sources": [ { @@ -39,14 +39,6 @@ ], "version": "==2.4.1" }, - "async-timeout": { - "hashes": [ - "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f", - "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028" - ], - "markers": "python_full_version < '3.11.3'", - "version": "==4.0.3" - }, "attrs": { "hashes": [ "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30", @@ -57,10 +49,10 @@ }, "autobahn": { "hashes": [ - "sha256:c5ef8ca7422015a1af774a883b8aef73d4954c9fcd182c9b5244e08e973f7c3a" + "sha256:ec9421c52a2103364d1ef0468036e6019ee84f71721e86b36fe19ad6966c1181" ], - "markers": "python_version >= '3.7'", - "version": "==23.1.2" + "markers": "python_version >= '3.9'", + "version": "==23.6.2" }, "automat": { "hashes": [ @@ -69,38 +61,6 @@ ], "version": "==22.10.0" }, - "backcall": { - "hashes": [ - "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e", - "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255" - ], - "version": "==0.2.0" - }, - "backports.zoneinfo": { - "extras": [ - "tzdata" - ], - "hashes": [ - "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf", - "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328", - "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546", - "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6", - "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570", - "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9", - "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7", - "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987", - "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722", - "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582", - "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc", - "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b", - "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1", - "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08", - "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac", - "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2" - ], - "markers": "python_version < '3.9'", - "version": "==0.2.1" - }, "beautifulsoup4": { "hashes": [ "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051", @@ -130,12 +90,12 @@ }, "celery": { "hashes": [ - "sha256:870cc71d737c0200c397290d730344cc991d13a057534353d124c9380267aab9", - "sha256:9da4ea0118d232ce97dff5ed4974587fb1c0ff5c10042eb15278487cdd27d1af" + "sha256:369631eb580cf8c51a82721ec538684994f8277637edde2dfc0dacd73ed97f64", + "sha256:504a19140e8d3029d5acad88330c541d4c3f64c789d85f94756762d8bca7e706" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==5.3.6" + "version": "==5.4.0" }, "certifi": { "hashes": [ @@ -445,12 +405,12 @@ }, "django-debug-toolbar": { "hashes": [ - "sha256:0b0dddee5ea29b9cb678593bc0d7a6d76b21d7799cb68e091a2148341a80f3c4", - "sha256:e09b7dcb8417b743234dfc57c95a7c1d1d87a88844abd13b4c5387f807b31bf6" + "sha256:5d7afb2ea5f8730241e5b0735396e16cd1fd8c6b53a2f3e1e30bbab9abb23728", + "sha256:9204050fcb1e4f74216c5b024bc76081451926a6303993d6c513f5e142675927" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==4.3.0" + "version": "==4.4.2" }, "django-extensions": { "hashes": [ @@ -469,14 +429,6 @@ "index": "pypi", "version": "==0.9.5" }, - "exceptiongroup": { - "hashes": [ - "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad", - "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16" - ], - "markers": "python_version < '3.11'", - "version": "==1.2.1" - }, "executing": { "hashes": [ "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147", @@ -517,14 +469,6 @@ "markers": "python_version >= '3.5'", "version": "==3.7" }, - "importlib-metadata": { - "hashes": [ - "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570", - "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2" - ], - "markers": "python_version < '3.10'", - "version": "==7.1.0" - }, "incremental": { "hashes": [ "sha256:912feeb5e0f7e0188e6f42241d2f450002e11bbc0937c65865045854c24c0bd0", @@ -542,12 +486,12 @@ }, "ipython": { "hashes": [ - "sha256:3910c4b54543c2ad73d06579aa771041b7d5707b033bd488669b4cf544e3b363", - "sha256:b0340d46a933d27c657b211a329d0be23793c36595acf9e6ef4164bc01a1804c" + "sha256:010db3f8a728a578bb641fdd06c063b9fb8e96a9464c63aec6310fbcb5e80501", + "sha256:d7bf2f6c4314984e3e02393213bab8703cf163ede39672ce5918c51fe253a2a3" ], "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==8.12.3" + "markers": "python_version >= '3.10'", + "version": "==8.24.0" }, "jedi": { "hashes": [ @@ -827,16 +771,9 @@ "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f" ], - "markers": "sys_platform != 'win32'", + "markers": "sys_platform != 'win32' and sys_platform != 'emscripten'", "version": "==4.9.0" }, - "pickleshare": { - "hashes": [ - "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", - "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" - ], - "version": "==0.7.5" - }, "platformdirs": { "hashes": [ "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee", @@ -855,11 +792,11 @@ }, "prompt-toolkit": { "hashes": [ - "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d", - "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6" + "sha256:07c60ee4ab7b7e90824b61afa840c8f5aad2d46b3e2e10acc33d8ecc94a49089", + "sha256:a29b89160e494e3ea8622b09fa5897610b437884dcdcd054fdc1308883326c2a" ], "markers": "python_full_version >= '3.7.0'", - "version": "==3.0.43" + "version": "==3.0.45" }, "psutil": { "hashes": [ @@ -997,12 +934,12 @@ }, "requests": { "hashes": [ - "sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289", - "sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c" + "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", + "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==2.32.2" + "version": "==2.32.3" }, "requests-oauthlib": { "hashes": [ @@ -1082,14 +1019,6 @@ ], "version": "==1.2.1" }, - "tomli": { - "hashes": [ - "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", - "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" - ], - "markers": "python_version < '3.11'", - "version": "==2.0.1" - }, "traitlets": { "hashes": [ "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", @@ -1122,7 +1051,7 @@ "sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8", "sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594" ], - "markers": "python_version >= '3.8'", + "markers": "python_version < '3.12'", "version": "==4.12.0" }, "tzdata": { @@ -1172,14 +1101,6 @@ ], "version": "==0.5.1" }, - "zipp": { - "hashes": [ - "sha256:6278d9ddbcfb1f1089a88fde84481528b07b0e10474e09dcfe53dad4069fa059", - "sha256:dce197b859eb796242b0622af1b8beb0a722d52aa2f57133ead08edd5bf5374e" - ], - "markers": "python_version >= '3.8'", - "version": "==3.18.2" - }, "zope-interface": { "hashes": [ "sha256:00b5c3e9744dcdc9e84c24ed6646d5cf0cf66551347b310b3ffd70f056535854", @@ -1232,31 +1153,6 @@ "markers": "python_version >= '3.8'", "version": "==3.8.1" }, - "backports.zoneinfo": { - "extras": [ - "tzdata" - ], - "hashes": [ - "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf", - "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328", - "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546", - "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6", - "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570", - "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9", - "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7", - "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987", - "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722", - "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582", - "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc", - "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b", - "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1", - "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08", - "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac", - "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2" - ], - "markers": "python_version < '3.9'", - "version": "==0.2.1" - }, "cfgv": { "hashes": [ "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", @@ -1283,20 +1179,20 @@ }, "django-stubs": { "hashes": [ - "sha256:084484cbe16a6d388e80ec687e46f529d67a232f3befaf55c936b3b476be289d", - "sha256:b8a792bee526d6cab31e197cb414ee7fa218abd931a50948c66a80b3a2548621" + "sha256:236bc5606e5607cb968f92b648471f9edaa461a774bc013bf9e6bff8730f6bdf", + "sha256:cb0c506cb5c54c64612e4a2ee8d6b913c6178560ec168009fe847c09747c304b" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==5.0.0" + "version": "==5.0.2" }, "django-stubs-ext": { "hashes": [ - "sha256:5bacfbb498a206d5938454222b843d81da79ea8b6fcd1a59003f529e775bc115", - "sha256:8e1334fdf0c8bff87e25d593b33d4247487338aaed943037826244ff788b56a8" + "sha256:409c62585d7f996cef5c760e6e27ea3ff29f961c943747e67519c837422cad32", + "sha256:8d8efec5a86241266bec94a528fe21258ad90d78c67307f3ae5f36e81de97f12" ], "markers": "python_version >= '3.8'", - "version": "==5.0.0" + "version": "==5.0.2" }, "filelock": { "hashes": [ @@ -1316,11 +1212,11 @@ }, "nodeenv": { "hashes": [ - "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2", - "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec" + "sha256:07f144e90dae547bf0d4ee8da0ee42664a42a04e02ed68e06324348dafe4bdb1", + "sha256:508ecec98f9f3330b636d4448c0f1a56fc68017c68f1e7857ebc52acf0eb879a" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", - "version": "==1.8.0" + "version": "==1.9.0" }, "platformdirs": { "hashes": [ @@ -1332,12 +1228,12 @@ }, "pre-commit": { "hashes": [ - "sha256:5804465c675b659b0862f07907f96295d490822a450c4c40e747d0b1c6ebcb32", - "sha256:841dc9aef25daba9a0238cd27984041fa0467b4199fc4852e27950664919f660" + "sha256:8ca3ad567bc78a4972a3f1a477e94a79d4597e8140a6e0b651c5e33899c3654a", + "sha256:fae36fd1d7ad7d6a5a1c0b0d5adb2ed1a3bda5a21bf6c3e5372073d7a11cd4c5" ], "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==3.5.0" + "markers": "python_version >= '3.9'", + "version": "==3.7.1" }, "pyyaml": { "hashes": [ @@ -1396,14 +1292,6 @@ "markers": "python_version >= '3.6'", "version": "==6.0.1" }, - "setuptools": { - "hashes": [ - "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4", - "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0" - ], - "markers": "python_version >= '3.8'", - "version": "==70.0.0" - }, "sqlparse": { "hashes": [ "sha256:714d0a4932c059d16189f58ef5411ec2287a4360f17cdd0edd2d09d4c5087c93", @@ -1412,14 +1300,6 @@ "markers": "python_version >= '3.8'", "version": "==0.5.0" }, - "tomli": { - "hashes": [ - "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", - "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" - ], - "markers": "python_version < '3.11'", - "version": "==2.0.1" - }, "types-pyyaml": { "hashes": [ "sha256:a9e0f0f88dc835739b0c1ca51ee90d04ca2a897a71af79de9aec5f38cb0a5342", @@ -1433,7 +1313,7 @@ "sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8", "sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594" ], - "markers": "python_version >= '3.8'", + "markers": "python_version < '3.12'", "version": "==4.12.0" }, "virtualenv": { diff --git a/tin/settings/__init__.py b/tin/settings/__init__.py index b7c2287a..60315764 100644 --- a/tin/settings/__init__.py +++ b/tin/settings/__init__.py @@ -21,7 +21,7 @@ # Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/ +# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = "naxigo(w3=$1&!-t4vbb9)g^8#lnt6ygr)(2qfi1z(h(r_cjhy"