Bump dependencies, upgrade python fix warnings and apply pre-commit
This commit is contained in:
parent
4c32917242
commit
a064a8f695
11 changed files with 47 additions and 104 deletions
7
.flake8
Normal file
7
.flake8
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[flake8]
|
||||||
|
ignore =
|
||||||
|
# ignore long lines
|
||||||
|
E501,
|
||||||
|
# deprecated rule
|
||||||
|
W503,
|
||||||
|
A003,
|
|
@ -1,19 +1,18 @@
|
||||||
|
exclude: \.min\.(js|css)(\.map)?$
|
||||||
repos:
|
repos:
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v3.4.0
|
rev: v4.0.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: check-ast
|
- id: check-ast
|
||||||
types: [python]
|
- id: check-json
|
||||||
# - id: check-json
|
|
||||||
# types: [json]
|
|
||||||
- id: check-toml
|
- id: check-toml
|
||||||
types: [toml]
|
- id: check-xml
|
||||||
- id: check-yaml
|
- id: check-yaml
|
||||||
types: [yaml]
|
|
||||||
args: [--allow-multiple-documents]
|
args: [--allow-multiple-documents]
|
||||||
# - id: check-xml
|
|
||||||
# types: [xml]
|
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
|
- id: check-merge-conflict
|
||||||
|
- id: debug-statements
|
||||||
|
- id: detect-private-key
|
||||||
- id: pretty-format-json
|
- id: pretty-format-json
|
||||||
args:
|
args:
|
||||||
- --autofix
|
- --autofix
|
||||||
|
@ -22,19 +21,26 @@ repos:
|
||||||
args:
|
args:
|
||||||
- --markdown-linebreak-ext=md
|
- --markdown-linebreak-ext=md
|
||||||
- repo: https://github.com/timothycrosley/isort
|
- repo: https://github.com/timothycrosley/isort
|
||||||
rev: 5.7.0
|
rev: 5.10.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: isort
|
- id: isort
|
||||||
types: [python]
|
|
||||||
- repo: https://github.com/psf/black
|
- repo: https://github.com/psf/black
|
||||||
rev: 20.8b1
|
rev: 21.12b0
|
||||||
hooks:
|
hooks:
|
||||||
- id: black
|
- id: black
|
||||||
types: [python]
|
- repo: https://github.com/asottile/pyupgrade
|
||||||
# - repo: https://gitlab.com/devopshq/gitlab-ci-linter
|
rev: v2.29.1
|
||||||
# rev: v1.0.1
|
hooks:
|
||||||
# hooks:
|
- id: pyupgrade
|
||||||
# - id: gitlab-ci-linter
|
args:
|
||||||
# args:
|
- --py310-plus
|
||||||
# - --server
|
- repo: https://github.com/pycqa/flake8
|
||||||
# - https://gitlab.com
|
rev: 4.0.1
|
||||||
|
hooks:
|
||||||
|
- id: flake8
|
||||||
|
additional_dependencies:
|
||||||
|
- flake8-noqa
|
||||||
|
- flake8-bugbear
|
||||||
|
- flake8-builtins
|
||||||
|
- flake8-comprehensions
|
||||||
|
- flake8-eradicate
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
## Build venv
|
## Build venv
|
||||||
FROM python:3.8.8-buster AS venv
|
FROM python:3.10.1-bullseye AS venv
|
||||||
|
|
||||||
# https://python-poetry.org/docs/#installation
|
# https://python-poetry.org/docs/#installation
|
||||||
ENV POETRY_VERSION=1.1.4
|
ENV POETRY_VERSION=1.1.4
|
||||||
|
@ -31,7 +31,7 @@ RUN git rev-parse HEAD | tee /version
|
||||||
|
|
||||||
|
|
||||||
## Beginning of runtime image
|
## Beginning of runtime image
|
||||||
FROM python:3.8.8-slim-buster as prod
|
FROM python:3.10.1-slim-bullseye as prod
|
||||||
|
|
||||||
RUN echo "Europe/Paris" > /etc/timezone \
|
RUN echo "Europe/Paris" > /etc/timezone \
|
||||||
&& mkdir /db
|
&& mkdir /db
|
||||||
|
|
|
@ -138,7 +138,7 @@ class Article(models.Model):
|
||||||
):
|
):
|
||||||
related_articles.update(tag.published_articles)
|
related_articles.update(tag.published_articles)
|
||||||
sample_size = min([len(related_articles), 3])
|
sample_size = min([len(related_articles), 3])
|
||||||
return random.sample(related_articles, sample_size)
|
return random.sample(list(related_articles), sample_size)
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def keywords(self):
|
def keywords(self):
|
||||||
|
@ -151,6 +151,6 @@ class Article(models.Model):
|
||||||
def get_admin_url(self):
|
def get_admin_url(self):
|
||||||
content_type = ContentType.objects.get_for_model(self.__class__)
|
content_type = ContentType.objects.get_for_model(self.__class__)
|
||||||
return reverse(
|
return reverse(
|
||||||
"admin:%s_%s_change" % (content_type.app_label, content_type.model),
|
f"admin:{content_type.app_label}_{content_type.model}_change",
|
||||||
args=(self.id,),
|
args=(self.id,),
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import os
|
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import pytest
|
import pytest
|
||||||
from django.template import Context, Template
|
|
||||||
from django.test import Client
|
from django.test import Client
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from model_bakery import baker
|
from model_bakery import baker
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import operator
|
import operator
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
from typing import Dict
|
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||||
|
@ -33,10 +32,10 @@ class BaseArticleListView(generic.ListView):
|
||||||
context["previous_page_querystring"] = querystring
|
context["previous_page_querystring"] = querystring
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def get_additional_querystring_params(self) -> Dict[str, str]:
|
def get_additional_querystring_params(self) -> dict[str, str]:
|
||||||
return dict()
|
return {}
|
||||||
|
|
||||||
def build_querystring(self, initial_queryparams: Dict[str, str]) -> str:
|
def build_querystring(self, initial_queryparams: dict[str, str]) -> str:
|
||||||
querystring = {
|
querystring = {
|
||||||
**initial_queryparams,
|
**initial_queryparams,
|
||||||
**self.get_additional_querystring_params(),
|
**self.get_additional_querystring_params(),
|
||||||
|
@ -84,7 +83,7 @@ class SearchArticlesListView(PublicArticleListView):
|
||||||
)
|
)
|
||||||
).distinct()
|
).distinct()
|
||||||
|
|
||||||
def get_additional_querystring_params(self) -> Dict[str, str]:
|
def get_additional_querystring_params(self) -> dict[str, str]:
|
||||||
search_expression = self.request.GET.get("s")
|
search_expression = self.request.GET.get("s")
|
||||||
if search_expression:
|
if search_expression:
|
||||||
return {"s": search_expression}
|
return {"s": search_expression}
|
||||||
|
|
|
@ -52,7 +52,7 @@ class Attachment(models.Model):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
Image.open(self.original_file.path)
|
Image.open(self.original_file.path)
|
||||||
except IOError:
|
except OSError:
|
||||||
return
|
return
|
||||||
|
|
||||||
# Submit job to shortpixel
|
# Submit job to shortpixel
|
||||||
|
|
|
@ -228,3 +228,5 @@ CSP_MANIFEST_SRC = ("'self'",)
|
||||||
CSP_FONT_SRC = ("'self'",)
|
CSP_FONT_SRC = ("'self'",)
|
||||||
CSP_BASE_URI = ("'none'",)
|
CSP_BASE_URI = ("'none'",)
|
||||||
CSP_FORM_ACTION = ("'self'",)
|
CSP_FORM_ACTION = ("'self'",)
|
||||||
|
|
||||||
|
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"
|
||||||
|
|
73
poetry.lock
generated
73
poetry.lock
generated
|
@ -43,17 +43,6 @@ python-versions = ">=2.7"
|
||||||
docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
|
docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
|
||||||
testing = ["pytest", "pytest-flake8", "pytest-cov", "pytest-black (>=0.3.7)", "pytest-mypy", "pytest-checkdocs (>=2.4)", "pytest-enabler (>=1.0.1)"]
|
testing = ["pytest", "pytest-flake8", "pytest-cov", "pytest-black (>=0.3.7)", "pytest-mypy", "pytest-checkdocs (>=2.4)", "pytest-enabler (>=1.0.1)"]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "backports.zoneinfo"
|
|
||||||
version = "0.2.1"
|
|
||||||
description = "Backport of the standard library zoneinfo module"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.6"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
tzdata = ["tzdata"]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "beautifulsoup4"
|
name = "beautifulsoup4"
|
||||||
version = "4.10.0"
|
version = "4.10.0"
|
||||||
|
@ -152,7 +141,6 @@ python-versions = ">=3.8"
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
asgiref = ">=3.4.1,<4"
|
asgiref = ">=3.4.1,<4"
|
||||||
"backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""}
|
|
||||||
sqlparse = ">=0.2.2"
|
sqlparse = ">=0.2.2"
|
||||||
tzdata = {version = "*", markers = "sys_platform == \"win32\""}
|
tzdata = {version = "*", markers = "sys_platform == \"win32\""}
|
||||||
|
|
||||||
|
@ -265,22 +253,6 @@ category = "main"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.5"
|
python-versions = ">=3.5"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "importlib-metadata"
|
|
||||||
version = "4.9.0"
|
|
||||||
description = "Read metadata from Python packages"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7"
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
zipp = ">=0.5"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
|
|
||||||
perf = ["ipython"]
|
|
||||||
testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iniconfig"
|
name = "iniconfig"
|
||||||
version = "1.1.1"
|
version = "1.1.1"
|
||||||
|
@ -311,9 +283,6 @@ category = "main"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""}
|
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
testing = ["coverage", "pyyaml"]
|
testing = ["coverage", "pyyaml"]
|
||||||
|
|
||||||
|
@ -768,22 +737,10 @@ python-versions = ">=3.6"
|
||||||
idna = ">=2.0"
|
idna = ">=2.0"
|
||||||
multidict = ">=4.0"
|
multidict = ">=4.0"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "zipp"
|
|
||||||
version = "3.6.0"
|
|
||||||
description = "Backport of pathlib-compatible object wrapper for zip files"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.6"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
|
|
||||||
testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
|
|
||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "1.1"
|
lock-version = "1.1"
|
||||||
python-versions = "^3.8"
|
python-versions = "^3.10"
|
||||||
content-hash = "895eef530799b2b845bcd76139d841342f18373130a24a2513ceccd94767819e"
|
content-hash = "a32976a9a8d29bebdf5783b5948168194249f40ac76772966d525a4c05e7986d"
|
||||||
|
|
||||||
[metadata.files]
|
[metadata.files]
|
||||||
asgiref = [
|
asgiref = [
|
||||||
|
@ -802,24 +759,6 @@ attrs = [
|
||||||
{file = "backports.entry_points_selectable-1.1.1-py2.py3-none-any.whl", hash = "sha256:7fceed9532a7aa2bd888654a7314f864a3c16a4e710b34a58cfc0f08114c663b"},
|
{file = "backports.entry_points_selectable-1.1.1-py2.py3-none-any.whl", hash = "sha256:7fceed9532a7aa2bd888654a7314f864a3c16a4e710b34a58cfc0f08114c663b"},
|
||||||
{file = "backports.entry_points_selectable-1.1.1.tar.gz", hash = "sha256:914b21a479fde881635f7af5adc7f6e38d6b274be32269070c53b698c60d5386"},
|
{file = "backports.entry_points_selectable-1.1.1.tar.gz", hash = "sha256:914b21a479fde881635f7af5adc7f6e38d6b274be32269070c53b698c60d5386"},
|
||||||
]
|
]
|
||||||
"backports.zoneinfo" = [
|
|
||||||
{file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"},
|
|
||||||
{file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"},
|
|
||||||
{file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"},
|
|
||||||
{file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"},
|
|
||||||
{file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"},
|
|
||||||
{file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"},
|
|
||||||
{file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"},
|
|
||||||
{file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"},
|
|
||||||
{file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"},
|
|
||||||
{file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"},
|
|
||||||
{file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"},
|
|
||||||
{file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"},
|
|
||||||
{file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"},
|
|
||||||
{file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"},
|
|
||||||
{file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"},
|
|
||||||
{file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"},
|
|
||||||
]
|
|
||||||
beautifulsoup4 = [
|
beautifulsoup4 = [
|
||||||
{file = "beautifulsoup4-4.10.0-py3-none-any.whl", hash = "sha256:9a315ce70049920ea4572a4055bc4bd700c940521d36fc858205ad4fcde149bf"},
|
{file = "beautifulsoup4-4.10.0-py3-none-any.whl", hash = "sha256:9a315ce70049920ea4572a4055bc4bd700c940521d36fc858205ad4fcde149bf"},
|
||||||
{file = "beautifulsoup4-4.10.0.tar.gz", hash = "sha256:c23ad23c521d818955a4151a67d81580319d4bf548d3d49f4223ae041ff98891"},
|
{file = "beautifulsoup4-4.10.0.tar.gz", hash = "sha256:c23ad23c521d818955a4151a67d81580319d4bf548d3d49f4223ae041ff98891"},
|
||||||
|
@ -971,10 +910,6 @@ idna = [
|
||||||
{file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"},
|
{file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"},
|
||||||
{file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"},
|
{file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"},
|
||||||
]
|
]
|
||||||
importlib-metadata = [
|
|
||||||
{file = "importlib_metadata-4.9.0-py3-none-any.whl", hash = "sha256:e8b45564028bc25f8c99f546616112a6df5de6655893d7eb74c9a99680dc9751"},
|
|
||||||
{file = "importlib_metadata-4.9.0.tar.gz", hash = "sha256:ee50794eccb0ec340adbc838344ebb9a6ff2bcba78f752d31fc716497e2149d6"},
|
|
||||||
]
|
|
||||||
iniconfig = [
|
iniconfig = [
|
||||||
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
|
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
|
||||||
{file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
|
{file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
|
||||||
|
@ -1483,7 +1418,3 @@ yarl = [
|
||||||
{file = "yarl-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58"},
|
{file = "yarl-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58"},
|
||||||
{file = "yarl-1.7.2.tar.gz", hash = "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd"},
|
{file = "yarl-1.7.2.tar.gz", hash = "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd"},
|
||||||
]
|
]
|
||||||
zipp = [
|
|
||||||
{file = "zipp-3.6.0-py3-none-any.whl", hash = "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc"},
|
|
||||||
{file = "zipp-3.6.0.tar.gz", hash = "sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832"},
|
|
||||||
]
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ authors = ["Gabriel Augendre <gabriel@augendre.info>"]
|
||||||
license = "GPLv3"
|
license = "GPLv3"
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
python = "^3.8"
|
python = "^3.10"
|
||||||
django = "^4.0"
|
django = "^4.0"
|
||||||
markdown = "^3.2"
|
markdown = "^3.2"
|
||||||
gunicorn = "^20.0"
|
gunicorn = "^20.0"
|
||||||
|
|
Reference in a new issue