From 8ac5bafcce0f453bbfecf807356276e9e066e5fd Mon Sep 17 00:00:00 2001 From: Peter Labovsky Date: Tue, 4 Nov 2025 12:02:15 +0100 Subject: [PATCH 1/2] Redirect logged-in users away from register and login pages --- pytition/petition/urls.py | 5 +++-- pytition/petition/views.py | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/pytition/petition/urls.py b/pytition/petition/urls.py index 2182997a..42480dfc 100644 --- a/pytition/petition/urls.py +++ b/pytition/petition/urls.py @@ -3,7 +3,7 @@ from . import views from .forms import PytitionUserCreationForm -from .views import PetitionCreationWizard, PytitionUserCreateView +from .views import PetitionCreationWizard, PytitionUserCreateView, PytitionLoginView from django.views.generic import RedirectView from django.urls import reverse_lazy from django.conf import settings @@ -61,7 +61,8 @@ path('wizard/org//new_petition/from_template/', PetitionCreationWizard.as_view(views.WizardForms), name='org_petition_wizard_from_template'), path('wizard/user/new_petition', PetitionCreationWizard.as_view(views.WizardForms), name='user_petition_wizard'), path('wizard/user/new_petition/from_template/', PetitionCreationWizard.as_view(views.WizardForms), name='user_petition_wizard_from_template'), - # Authentication + # Authentication - Custom login view that redirects authenticated users + path('login/', PytitionLoginView.as_view(), name='login'), path('', include('django.contrib.auth.urls')), path('account_settings', views.account_settings, name="account_settings"), # Misc diff --git a/pytition/petition/views.py b/pytition/petition/views.py index d5fafefa..6dc17be2 100644 --- a/pytition/petition/views.py +++ b/pytition/petition/views.py @@ -19,6 +19,7 @@ from django.contrib.auth.hashers import make_password from django.contrib.auth.models import User from django.contrib.auth.forms import PasswordChangeForm +from django.contrib.auth.views import LoginView from django.urls import reverse from django.utils.decorators import method_decorator from django.utils.timezone import now @@ -1785,8 +1786,16 @@ def search_users_and_orgs(request): return JsonResponse(result) +# User registration view that redirects authenticated users class PytitionUserCreateView(CreateView): + def dispatch(self, request, *args, **kwargs): + # If user is already authenticated, redirect them to the index page + if request.user.is_authenticated: + messages.info(request, _("You are already logged in.")) + return redirect('index') + return super().dispatch(request, *args, **kwargs) + def save_numbers(self, request): request.session['random_a'] = self.a request.session['random_b'] = self.b @@ -1818,6 +1827,18 @@ def form_valid(self, form): form.send_success_email() return super().form_valid(form) + +# Login view that redirects authenticated users +class PytitionLoginView(LoginView): + redirect_authenticated_user = True + + def get_redirect_url(self): + # If user is already authenticated, redirect to index + if self.request.user.is_authenticated: + return reverse('index') + return super().get_redirect_url() + + # //report/ # Report a petition to moderation def report_petition(request, petition_id, reason_id=None): From 7adc44c44f07745e2d0fcbd6d232b5418d3e6762 Mon Sep 17 00:00:00 2001 From: Peter Labovsky Date: Wed, 17 Dec 2025 11:51:27 +0100 Subject: [PATCH 2/2] final --- .pdm-python | 1 + conftest.py | 27 + pdm.lock | 751 +++++++++++++---- profiling/.gitignore | 6 + profiling/README.md | 109 +++ profiling/benchmark.py | 239 ++++++ profiling/results/.gitkeep | 1 + profiling/run_profiler.py | 328 ++++++++ pyproject.toml | 60 +- pytest.ini | 27 + pytition/maintenance_mode_state.txt | 1 + pytition/mediaroot/julia/logo.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_1C6tbdE.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_5xLJcfM.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_6ZKSqbj.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_9pR014r.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_DpisGTq.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_Efp31Gz.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_GCqm05a.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_IljBoKg.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_MDkoIbr.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_PRgFUU5.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_RMvZBjw.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_SZkJTCs.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_VDH9pji.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_VRz4Lzt.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_WoSPtAP.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_YzXxIxc.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_bqpipBB.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_c3j6N91.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_oESqz2r.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_pohCcpG.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_sNJ8mMG.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_tq9YibH.png | Bin 0 -> 15163 bytes pytition/mediaroot/julia/logo_uVNwfnQ.png | Bin 0 -> 15163 bytes pytition/petition/helpers.py | 59 +- .../tests/tests_CoverageImprovement.py | 764 ++++++++++++++++++ .../petition/tests/tests_MocksStubsFakes.py | 629 ++++++++++++++ pytition/petition/urls.py | 5 +- pytition/petition/views.py | 8 + pytition/pytition/settings/base.py | 1 + pytition/pytition/settings/test.py | 13 + pytition/testdb.sqlite3 | Bin 0 -> 413696 bytes 43 files changed, 2863 insertions(+), 166 deletions(-) create mode 100644 .pdm-python create mode 100644 conftest.py create mode 100644 profiling/.gitignore create mode 100644 profiling/README.md create mode 100644 profiling/benchmark.py create mode 100644 profiling/results/.gitkeep create mode 100644 profiling/run_profiler.py create mode 100644 pytest.ini create mode 100755 pytition/maintenance_mode_state.txt create mode 100644 pytition/mediaroot/julia/logo.png create mode 100644 pytition/mediaroot/julia/logo_1C6tbdE.png create mode 100644 pytition/mediaroot/julia/logo_5xLJcfM.png create mode 100644 pytition/mediaroot/julia/logo_6ZKSqbj.png create mode 100644 pytition/mediaroot/julia/logo_9pR014r.png create mode 100644 pytition/mediaroot/julia/logo_DpisGTq.png create mode 100644 pytition/mediaroot/julia/logo_Efp31Gz.png create mode 100644 pytition/mediaroot/julia/logo_GCqm05a.png create mode 100644 pytition/mediaroot/julia/logo_IljBoKg.png create mode 100644 pytition/mediaroot/julia/logo_MDkoIbr.png create mode 100644 pytition/mediaroot/julia/logo_PRgFUU5.png create mode 100644 pytition/mediaroot/julia/logo_RMvZBjw.png create mode 100644 pytition/mediaroot/julia/logo_SZkJTCs.png create mode 100644 pytition/mediaroot/julia/logo_VDH9pji.png create mode 100644 pytition/mediaroot/julia/logo_VRz4Lzt.png create mode 100644 pytition/mediaroot/julia/logo_WoSPtAP.png create mode 100644 pytition/mediaroot/julia/logo_YzXxIxc.png create mode 100644 pytition/mediaroot/julia/logo_bqpipBB.png create mode 100644 pytition/mediaroot/julia/logo_c3j6N91.png create mode 100644 pytition/mediaroot/julia/logo_oESqz2r.png create mode 100644 pytition/mediaroot/julia/logo_pohCcpG.png create mode 100644 pytition/mediaroot/julia/logo_sNJ8mMG.png create mode 100644 pytition/mediaroot/julia/logo_tq9YibH.png create mode 100644 pytition/mediaroot/julia/logo_uVNwfnQ.png create mode 100644 pytition/petition/tests/tests_CoverageImprovement.py create mode 100644 pytition/petition/tests/tests_MocksStubsFakes.py create mode 100644 pytition/pytition/settings/test.py create mode 100644 pytition/testdb.sqlite3 diff --git a/.pdm-python b/.pdm-python new file mode 100644 index 00000000..cd8fce7b --- /dev/null +++ b/.pdm-python @@ -0,0 +1 @@ +/home/petrik/ess/Pytition/Pytition/.venv/bin/python \ No newline at end of file diff --git a/conftest.py b/conftest.py new file mode 100644 index 00000000..294a469f --- /dev/null +++ b/conftest.py @@ -0,0 +1,27 @@ +""" +Pytest configuration and fixtures for Pytition tests. +""" +import pytest +import django +from django.conf import settings + + +# Pytest hooks pre lepší výpis +def pytest_collection_modifyitems(config, items): + """Automaticky pridaj markers na základe názvov testov.""" + for item in items: + if "mock" in item.name.lower() or "Mock" in item.parent.name: + item.add_marker(pytest.mark.mock) + if "stub" in item.name.lower() or "Stub" in item.parent.name: + item.add_marker(pytest.mark.stub) + if "fake" in item.name.lower() or "Fake" in item.parent.name: + item.add_marker(pytest.mark.fake) + + +def pytest_report_header(config): + """Pridaj custom header do pytest výstupu.""" + return [ + "=" * 50, + "Pytition Test Suite", + "=" * 50, + ] diff --git a/pdm.lock b/pdm.lock index f0ff7289..d214e774 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "test"] strategy = ["inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:9b36a15fdf2d94f40ce5d1cd5d43b98c65d3786f7c7be84fed9227cbe579023e" +content_hash = "sha256:f6104a60abf235978b44c30949ce8d397cdd0e48f615efa48d913247020e2b4d" [[metadata.targets]] requires_python = ">=3.11" @@ -23,7 +23,7 @@ files = [ [[package]] name = "asgiref" -version = "3.10.0" +version = "3.11.0" requires_python = ">=3.9" summary = "ASGI specs, helper code, and adapters" groups = ["default"] @@ -31,8 +31,8 @@ dependencies = [ "typing-extensions>=4; python_version < \"3.11\"", ] files = [ - {file = "asgiref-3.10.0-py3-none-any.whl", hash = "sha256:aef8a81283a34d0ab31630c9b7dfe70c812c95eba78171367ca8745e88124734"}, - {file = "asgiref-3.10.0.tar.gz", hash = "sha256:d89f2d8cd8b56dada7d52fa7dc8075baa08fb836560710d38c292a7a3f78c04e"}, + {file = "asgiref-3.11.0-py3-none-any.whl", hash = "sha256:1db9021efadb0d9512ce8ffaf72fcef601c7b73a8807a1bb2ef143dc6b14846d"}, + {file = "asgiref-3.11.0.tar.gz", hash = "sha256:13acff32519542a1736223fb79a715acdebe24286d98e8b164a73085f40da2c4"}, ] [[package]] @@ -133,68 +133,88 @@ files = [ [[package]] name = "certifi" -version = "2025.10.5" +version = "2025.11.12" requires_python = ">=3.7" summary = "Python package for providing Mozilla's CA Bundle." groups = ["default", "test"] files = [ - {file = "certifi-2025.10.5-py3-none-any.whl", hash = "sha256:0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de"}, - {file = "certifi-2025.10.5.tar.gz", hash = "sha256:47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43"}, + {file = "certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b"}, + {file = "certifi-2025.11.12.tar.gz", hash = "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316"}, ] [[package]] name = "charset-normalizer" -version = "3.4.3" +version = "3.4.4" requires_python = ">=3.7" summary = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." groups = ["default", "test"] files = [ - {file = "charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849"}, - {file = "charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37"}, - {file = "charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce"}, - {file = "charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce"}, - {file = "charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c"}, - {file = "charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a"}, - {file = "charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016"}, + {file = "charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525"}, + {file = "charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14"}, + {file = "charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c"}, + {file = "charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2"}, + {file = "charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f"}, + {file = "charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a"}, ] [[package]] @@ -211,17 +231,190 @@ files = [ [[package]] name = "coverage" -version = "4.5.2" -requires_python = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4" +version = "7.13.0" +requires_python = ">=3.10" summary = "Code coverage measurement for Python" groups = ["test"] files = [ - {file = "coverage-4.5.2.tar.gz", hash = "sha256:ab235d9fe64833f12d1334d29b558aacedfbca2356dfb9691f2d0d38a8a7bfb4"}, + {file = "coverage-7.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0dfa3855031070058add1a59fdfda0192fd3e8f97e7c81de0596c145dea51820"}, + {file = "coverage-7.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fdb6f54f38e334db97f72fa0c701e66d8479af0bc3f9bfb5b90f1c30f54500f"}, + {file = "coverage-7.13.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7e442c013447d1d8d195be62852270b78b6e255b79b8675bad8479641e21fd96"}, + {file = "coverage-7.13.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1ed5630d946859de835a85e9a43b721123a8a44ec26e2830b296d478c7fd4259"}, + {file = "coverage-7.13.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7f15a931a668e58087bc39d05d2b4bf4b14ff2875b49c994bbdb1c2217a8daeb"}, + {file = "coverage-7.13.0-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:30a3a201a127ea57f7e14ba43c93c9c4be8b7d17a26e03bb49e6966d019eede9"}, + {file = "coverage-7.13.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7a485ff48fbd231efa32d58f479befce52dcb6bfb2a88bb7bf9a0b89b1bc8030"}, + {file = "coverage-7.13.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:22486cdafba4f9e471c816a2a5745337742a617fef68e890d8baf9f3036d7833"}, + {file = "coverage-7.13.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:263c3dbccc78e2e331e59e90115941b5f53e85cfcc6b3b2fbff1fd4e3d2c6ea8"}, + {file = "coverage-7.13.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e5330fa0cc1f5c3c4c3bb8e101b742025933e7848989370a1d4c8c5e401ea753"}, + {file = "coverage-7.13.0-cp311-cp311-win32.whl", hash = "sha256:0f4872f5d6c54419c94c25dd6ae1d015deeb337d06e448cd890a1e89a8ee7f3b"}, + {file = "coverage-7.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51a202e0f80f241ccb68e3e26e19ab5b3bf0f813314f2c967642f13ebcf1ddfe"}, + {file = "coverage-7.13.0-cp311-cp311-win_arm64.whl", hash = "sha256:d2a9d7f1c11487b1c69367ab3ac2d81b9b3721f097aa409a3191c3e90f8f3dd7"}, + {file = "coverage-7.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0b3d67d31383c4c68e19a88e28fc4c2e29517580f1b0ebec4a069d502ce1e0bf"}, + {file = "coverage-7.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:581f086833d24a22c89ae0fe2142cfaa1c92c930adf637ddf122d55083fb5a0f"}, + {file = "coverage-7.13.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:0a3a30f0e257df382f5f9534d4ce3d4cf06eafaf5192beb1a7bd066cb10e78fb"}, + {file = "coverage-7.13.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:583221913fbc8f53b88c42e8dbb8fca1d0f2e597cb190ce45916662b8b9d9621"}, + {file = "coverage-7.13.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f5d9bd30756fff3e7216491a0d6d520c448d5124d3d8e8f56446d6412499e74"}, + {file = "coverage-7.13.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a23e5a1f8b982d56fa64f8e442e037f6ce29322f1f9e6c2344cd9e9f4407ee57"}, + {file = "coverage-7.13.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9b01c22bc74a7fb44066aaf765224c0d933ddf1f5047d6cdfe4795504a4493f8"}, + {file = "coverage-7.13.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:898cce66d0836973f48dda4e3514d863d70142bdf6dfab932b9b6a90ea5b222d"}, + {file = "coverage-7.13.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:3ab483ea0e251b5790c2aac03acde31bff0c736bf8a86829b89382b407cd1c3b"}, + {file = "coverage-7.13.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1d84e91521c5e4cb6602fe11ece3e1de03b2760e14ae4fcf1a4b56fa3c801fcd"}, + {file = "coverage-7.13.0-cp312-cp312-win32.whl", hash = "sha256:193c3887285eec1dbdb3f2bd7fbc351d570ca9c02ca756c3afbc71b3c98af6ef"}, + {file = "coverage-7.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:4f3e223b2b2db5e0db0c2b97286aba0036ca000f06aca9b12112eaa9af3d92ae"}, + {file = "coverage-7.13.0-cp312-cp312-win_arm64.whl", hash = "sha256:086cede306d96202e15a4b77ace8472e39d9f4e5f9fd92dd4fecdfb2313b2080"}, + {file = "coverage-7.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:28ee1c96109974af104028a8ef57cec21447d42d0e937c0275329272e370ebcf"}, + {file = "coverage-7.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d1e97353dcc5587b85986cda4ff3ec98081d7e84dd95e8b2a6d59820f0545f8a"}, + {file = "coverage-7.13.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:99acd4dfdfeb58e1937629eb1ab6ab0899b131f183ee5f23e0b5da5cba2fec74"}, + {file = "coverage-7.13.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ff45e0cd8451e293b63ced93161e189780baf444119391b3e7d25315060368a6"}, + {file = "coverage-7.13.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f4f72a85316d8e13234cafe0a9f81b40418ad7a082792fa4165bd7d45d96066b"}, + {file = "coverage-7.13.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:11c21557d0e0a5a38632cbbaca5f008723b26a89d70db6315523df6df77d6232"}, + {file = "coverage-7.13.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76541dc8d53715fb4f7a3a06b34b0dc6846e3c69bc6204c55653a85dd6220971"}, + {file = "coverage-7.13.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6e9e451dee940a86789134b6b0ffbe31c454ade3b849bb8a9d2cca2541a8e91d"}, + {file = "coverage-7.13.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:5c67dace46f361125e6b9cace8fe0b729ed8479f47e70c89b838d319375c8137"}, + {file = "coverage-7.13.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f59883c643cb19630500f57016f76cfdcd6845ca8c5b5ea1f6e17f74c8e5f511"}, + {file = "coverage-7.13.0-cp313-cp313-win32.whl", hash = "sha256:58632b187be6f0be500f553be41e277712baa278147ecb7559983c6d9faf7ae1"}, + {file = "coverage-7.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:73419b89f812f498aca53f757dd834919b48ce4799f9d5cad33ca0ae442bdb1a"}, + {file = "coverage-7.13.0-cp313-cp313-win_arm64.whl", hash = "sha256:eb76670874fdd6091eedcc856128ee48c41a9bbbb9c3f1c7c3cf169290e3ffd6"}, + {file = "coverage-7.13.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:6e63ccc6e0ad8986386461c3c4b737540f20426e7ec932f42e030320896c311a"}, + {file = "coverage-7.13.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:494f5459ffa1bd45e18558cd98710c36c0b8fbfa82a5eabcbe671d80ecffbfe8"}, + {file = "coverage-7.13.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:06cac81bf10f74034e055e903f5f946e3e26fc51c09fc9f584e4a1605d977053"}, + {file = "coverage-7.13.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f2ffc92b46ed6e6760f1d47a71e56b5664781bc68986dbd1836b2b70c0ce2071"}, + {file = "coverage-7.13.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0602f701057c6823e5db1b74530ce85f17c3c5be5c85fc042ac939cbd909426e"}, + {file = "coverage-7.13.0-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:25dc33618d45456ccb1d37bce44bc78cf269909aa14c4db2e03d63146a8a1493"}, + {file = "coverage-7.13.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:71936a8b3b977ddd0b694c28c6a34f4fff2e9dd201969a4ff5d5fc7742d614b0"}, + {file = "coverage-7.13.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:936bc20503ce24770c71938d1369461f0c5320830800933bc3956e2a4ded930e"}, + {file = "coverage-7.13.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:af0a583efaacc52ae2521f8d7910aff65cdb093091d76291ac5820d5e947fc1c"}, + {file = "coverage-7.13.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f1c23e24a7000da892a312fb17e33c5f94f8b001de44b7cf8ba2e36fbd15859e"}, + {file = "coverage-7.13.0-cp313-cp313t-win32.whl", hash = "sha256:5f8a0297355e652001015e93be345ee54393e45dc3050af4a0475c5a2b767d46"}, + {file = "coverage-7.13.0-cp313-cp313t-win_amd64.whl", hash = "sha256:6abb3a4c52f05e08460bd9acf04fec027f8718ecaa0d09c40ffbc3fbd70ecc39"}, + {file = "coverage-7.13.0-cp313-cp313t-win_arm64.whl", hash = "sha256:3ad968d1e3aa6ce5be295ab5fe3ae1bf5bb4769d0f98a80a0252d543a2ef2e9e"}, + {file = "coverage-7.13.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:453b7ec753cf5e4356e14fe858064e5520c460d3bbbcb9c35e55c0d21155c256"}, + {file = "coverage-7.13.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:af827b7cbb303e1befa6c4f94fd2bf72f108089cfa0f8abab8f4ca553cf5ca5a"}, + {file = "coverage-7.13.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:9987a9e4f8197a1000280f7cc089e3ea2c8b3c0a64d750537809879a7b4ceaf9"}, + {file = "coverage-7.13.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3188936845cd0cb114fa6a51842a304cdbac2958145d03be2377ec41eb285d19"}, + {file = "coverage-7.13.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2bdb3babb74079f021696cb46b8bb5f5661165c385d3a238712b031a12355be"}, + {file = "coverage-7.13.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7464663eaca6adba4175f6c19354feea61ebbdd735563a03d1e472c7072d27bb"}, + {file = "coverage-7.13.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8069e831f205d2ff1f3d355e82f511eb7c5522d7d413f5db5756b772ec8697f8"}, + {file = "coverage-7.13.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:6fb2d5d272341565f08e962cce14cdf843a08ac43bd621783527adb06b089c4b"}, + {file = "coverage-7.13.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:5e70f92ef89bac1ac8a99b3324923b4749f008fdbd7aa9cb35e01d7a284a04f9"}, + {file = "coverage-7.13.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4b5de7d4583e60d5fd246dd57fcd3a8aa23c6e118a8c72b38adf666ba8e7e927"}, + {file = "coverage-7.13.0-cp314-cp314-win32.whl", hash = "sha256:a6c6e16b663be828a8f0b6c5027d36471d4a9f90d28444aa4ced4d48d7d6ae8f"}, + {file = "coverage-7.13.0-cp314-cp314-win_amd64.whl", hash = "sha256:0900872f2fdb3ee5646b557918d02279dc3af3dfb39029ac4e945458b13f73bc"}, + {file = "coverage-7.13.0-cp314-cp314-win_arm64.whl", hash = "sha256:3a10260e6a152e5f03f26db4a407c4c62d3830b9af9b7c0450b183615f05d43b"}, + {file = "coverage-7.13.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9097818b6cc1cfb5f174e3263eba4a62a17683bcfe5c4b5d07f4c97fa51fbf28"}, + {file = "coverage-7.13.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0018f73dfb4301a89292c73be6ba5f58722ff79f51593352759c1790ded1cabe"}, + {file = "coverage-7.13.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:166ad2a22ee770f5656e1257703139d3533b4a0b6909af67c6b4a3adc1c98657"}, + {file = "coverage-7.13.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f6aaef16d65d1787280943f1c8718dc32e9cf141014e4634d64446702d26e0ff"}, + {file = "coverage-7.13.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e999e2dcc094002d6e2c7bbc1fb85b58ba4f465a760a8014d97619330cdbbbf3"}, + {file = "coverage-7.13.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:00c3d22cf6fb1cf3bf662aaaa4e563be8243a5ed2630339069799835a9cc7f9b"}, + {file = "coverage-7.13.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:22ccfe8d9bb0d6134892cbe1262493a8c70d736b9df930f3f3afae0fe3ac924d"}, + {file = "coverage-7.13.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:9372dff5ea15930fea0445eaf37bbbafbc771a49e70c0aeed8b4e2c2614cc00e"}, + {file = "coverage-7.13.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:69ac2c492918c2461bc6ace42d0479638e60719f2a4ef3f0815fa2df88e9f940"}, + {file = "coverage-7.13.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:739c6c051a7540608d097b8e13c76cfa85263ced467168dc6b477bae3df7d0e2"}, + {file = "coverage-7.13.0-cp314-cp314t-win32.whl", hash = "sha256:fe81055d8c6c9de76d60c94ddea73c290b416e061d40d542b24a5871bad498b7"}, + {file = "coverage-7.13.0-cp314-cp314t-win_amd64.whl", hash = "sha256:445badb539005283825959ac9fa4a28f712c214b65af3a2c464f1adc90f5fcbc"}, + {file = "coverage-7.13.0-cp314-cp314t-win_arm64.whl", hash = "sha256:de7f6748b890708578fc4b7bb967d810aeb6fcc9bff4bb77dbca77dab2f9df6a"}, + {file = "coverage-7.13.0-py3-none-any.whl", hash = "sha256:850d2998f380b1e266459ca5b47bc9e7daf9af1d070f66317972f382d46f1904"}, + {file = "coverage-7.13.0.tar.gz", hash = "sha256:a394aa27f2d7ff9bc04cf703817773a59ad6dfbd577032e690f961d2460ee936"}, +] + +[[package]] +name = "coverage" +version = "7.13.0" +extras = ["toml"] +requires_python = ">=3.10" +summary = "Code coverage measurement for Python" +groups = ["test"] +dependencies = [ + "coverage==7.13.0", + "tomli; python_full_version <= \"3.11.0a6\"", +] +files = [ + {file = "coverage-7.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0dfa3855031070058add1a59fdfda0192fd3e8f97e7c81de0596c145dea51820"}, + {file = "coverage-7.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fdb6f54f38e334db97f72fa0c701e66d8479af0bc3f9bfb5b90f1c30f54500f"}, + {file = "coverage-7.13.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7e442c013447d1d8d195be62852270b78b6e255b79b8675bad8479641e21fd96"}, + {file = "coverage-7.13.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1ed5630d946859de835a85e9a43b721123a8a44ec26e2830b296d478c7fd4259"}, + {file = "coverage-7.13.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7f15a931a668e58087bc39d05d2b4bf4b14ff2875b49c994bbdb1c2217a8daeb"}, + {file = "coverage-7.13.0-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:30a3a201a127ea57f7e14ba43c93c9c4be8b7d17a26e03bb49e6966d019eede9"}, + {file = "coverage-7.13.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7a485ff48fbd231efa32d58f479befce52dcb6bfb2a88bb7bf9a0b89b1bc8030"}, + {file = "coverage-7.13.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:22486cdafba4f9e471c816a2a5745337742a617fef68e890d8baf9f3036d7833"}, + {file = "coverage-7.13.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:263c3dbccc78e2e331e59e90115941b5f53e85cfcc6b3b2fbff1fd4e3d2c6ea8"}, + {file = "coverage-7.13.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e5330fa0cc1f5c3c4c3bb8e101b742025933e7848989370a1d4c8c5e401ea753"}, + {file = "coverage-7.13.0-cp311-cp311-win32.whl", hash = "sha256:0f4872f5d6c54419c94c25dd6ae1d015deeb337d06e448cd890a1e89a8ee7f3b"}, + {file = "coverage-7.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51a202e0f80f241ccb68e3e26e19ab5b3bf0f813314f2c967642f13ebcf1ddfe"}, + {file = "coverage-7.13.0-cp311-cp311-win_arm64.whl", hash = "sha256:d2a9d7f1c11487b1c69367ab3ac2d81b9b3721f097aa409a3191c3e90f8f3dd7"}, + {file = "coverage-7.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0b3d67d31383c4c68e19a88e28fc4c2e29517580f1b0ebec4a069d502ce1e0bf"}, + {file = "coverage-7.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:581f086833d24a22c89ae0fe2142cfaa1c92c930adf637ddf122d55083fb5a0f"}, + {file = "coverage-7.13.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:0a3a30f0e257df382f5f9534d4ce3d4cf06eafaf5192beb1a7bd066cb10e78fb"}, + {file = "coverage-7.13.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:583221913fbc8f53b88c42e8dbb8fca1d0f2e597cb190ce45916662b8b9d9621"}, + {file = "coverage-7.13.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f5d9bd30756fff3e7216491a0d6d520c448d5124d3d8e8f56446d6412499e74"}, + {file = "coverage-7.13.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a23e5a1f8b982d56fa64f8e442e037f6ce29322f1f9e6c2344cd9e9f4407ee57"}, + {file = "coverage-7.13.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9b01c22bc74a7fb44066aaf765224c0d933ddf1f5047d6cdfe4795504a4493f8"}, + {file = "coverage-7.13.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:898cce66d0836973f48dda4e3514d863d70142bdf6dfab932b9b6a90ea5b222d"}, + {file = "coverage-7.13.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:3ab483ea0e251b5790c2aac03acde31bff0c736bf8a86829b89382b407cd1c3b"}, + {file = "coverage-7.13.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1d84e91521c5e4cb6602fe11ece3e1de03b2760e14ae4fcf1a4b56fa3c801fcd"}, + {file = "coverage-7.13.0-cp312-cp312-win32.whl", hash = "sha256:193c3887285eec1dbdb3f2bd7fbc351d570ca9c02ca756c3afbc71b3c98af6ef"}, + {file = "coverage-7.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:4f3e223b2b2db5e0db0c2b97286aba0036ca000f06aca9b12112eaa9af3d92ae"}, + {file = "coverage-7.13.0-cp312-cp312-win_arm64.whl", hash = "sha256:086cede306d96202e15a4b77ace8472e39d9f4e5f9fd92dd4fecdfb2313b2080"}, + {file = "coverage-7.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:28ee1c96109974af104028a8ef57cec21447d42d0e937c0275329272e370ebcf"}, + {file = "coverage-7.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d1e97353dcc5587b85986cda4ff3ec98081d7e84dd95e8b2a6d59820f0545f8a"}, + {file = "coverage-7.13.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:99acd4dfdfeb58e1937629eb1ab6ab0899b131f183ee5f23e0b5da5cba2fec74"}, + {file = "coverage-7.13.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ff45e0cd8451e293b63ced93161e189780baf444119391b3e7d25315060368a6"}, + {file = "coverage-7.13.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f4f72a85316d8e13234cafe0a9f81b40418ad7a082792fa4165bd7d45d96066b"}, + {file = "coverage-7.13.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:11c21557d0e0a5a38632cbbaca5f008723b26a89d70db6315523df6df77d6232"}, + {file = "coverage-7.13.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76541dc8d53715fb4f7a3a06b34b0dc6846e3c69bc6204c55653a85dd6220971"}, + {file = "coverage-7.13.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6e9e451dee940a86789134b6b0ffbe31c454ade3b849bb8a9d2cca2541a8e91d"}, + {file = "coverage-7.13.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:5c67dace46f361125e6b9cace8fe0b729ed8479f47e70c89b838d319375c8137"}, + {file = "coverage-7.13.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f59883c643cb19630500f57016f76cfdcd6845ca8c5b5ea1f6e17f74c8e5f511"}, + {file = "coverage-7.13.0-cp313-cp313-win32.whl", hash = "sha256:58632b187be6f0be500f553be41e277712baa278147ecb7559983c6d9faf7ae1"}, + {file = "coverage-7.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:73419b89f812f498aca53f757dd834919b48ce4799f9d5cad33ca0ae442bdb1a"}, + {file = "coverage-7.13.0-cp313-cp313-win_arm64.whl", hash = "sha256:eb76670874fdd6091eedcc856128ee48c41a9bbbb9c3f1c7c3cf169290e3ffd6"}, + {file = "coverage-7.13.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:6e63ccc6e0ad8986386461c3c4b737540f20426e7ec932f42e030320896c311a"}, + {file = "coverage-7.13.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:494f5459ffa1bd45e18558cd98710c36c0b8fbfa82a5eabcbe671d80ecffbfe8"}, + {file = "coverage-7.13.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:06cac81bf10f74034e055e903f5f946e3e26fc51c09fc9f584e4a1605d977053"}, + {file = "coverage-7.13.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f2ffc92b46ed6e6760f1d47a71e56b5664781bc68986dbd1836b2b70c0ce2071"}, + {file = "coverage-7.13.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0602f701057c6823e5db1b74530ce85f17c3c5be5c85fc042ac939cbd909426e"}, + {file = "coverage-7.13.0-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:25dc33618d45456ccb1d37bce44bc78cf269909aa14c4db2e03d63146a8a1493"}, + {file = "coverage-7.13.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:71936a8b3b977ddd0b694c28c6a34f4fff2e9dd201969a4ff5d5fc7742d614b0"}, + {file = "coverage-7.13.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:936bc20503ce24770c71938d1369461f0c5320830800933bc3956e2a4ded930e"}, + {file = "coverage-7.13.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:af0a583efaacc52ae2521f8d7910aff65cdb093091d76291ac5820d5e947fc1c"}, + {file = "coverage-7.13.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f1c23e24a7000da892a312fb17e33c5f94f8b001de44b7cf8ba2e36fbd15859e"}, + {file = "coverage-7.13.0-cp313-cp313t-win32.whl", hash = "sha256:5f8a0297355e652001015e93be345ee54393e45dc3050af4a0475c5a2b767d46"}, + {file = "coverage-7.13.0-cp313-cp313t-win_amd64.whl", hash = "sha256:6abb3a4c52f05e08460bd9acf04fec027f8718ecaa0d09c40ffbc3fbd70ecc39"}, + {file = "coverage-7.13.0-cp313-cp313t-win_arm64.whl", hash = "sha256:3ad968d1e3aa6ce5be295ab5fe3ae1bf5bb4769d0f98a80a0252d543a2ef2e9e"}, + {file = "coverage-7.13.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:453b7ec753cf5e4356e14fe858064e5520c460d3bbbcb9c35e55c0d21155c256"}, + {file = "coverage-7.13.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:af827b7cbb303e1befa6c4f94fd2bf72f108089cfa0f8abab8f4ca553cf5ca5a"}, + {file = "coverage-7.13.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:9987a9e4f8197a1000280f7cc089e3ea2c8b3c0a64d750537809879a7b4ceaf9"}, + {file = "coverage-7.13.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3188936845cd0cb114fa6a51842a304cdbac2958145d03be2377ec41eb285d19"}, + {file = "coverage-7.13.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2bdb3babb74079f021696cb46b8bb5f5661165c385d3a238712b031a12355be"}, + {file = "coverage-7.13.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7464663eaca6adba4175f6c19354feea61ebbdd735563a03d1e472c7072d27bb"}, + {file = "coverage-7.13.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8069e831f205d2ff1f3d355e82f511eb7c5522d7d413f5db5756b772ec8697f8"}, + {file = "coverage-7.13.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:6fb2d5d272341565f08e962cce14cdf843a08ac43bd621783527adb06b089c4b"}, + {file = "coverage-7.13.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:5e70f92ef89bac1ac8a99b3324923b4749f008fdbd7aa9cb35e01d7a284a04f9"}, + {file = "coverage-7.13.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4b5de7d4583e60d5fd246dd57fcd3a8aa23c6e118a8c72b38adf666ba8e7e927"}, + {file = "coverage-7.13.0-cp314-cp314-win32.whl", hash = "sha256:a6c6e16b663be828a8f0b6c5027d36471d4a9f90d28444aa4ced4d48d7d6ae8f"}, + {file = "coverage-7.13.0-cp314-cp314-win_amd64.whl", hash = "sha256:0900872f2fdb3ee5646b557918d02279dc3af3dfb39029ac4e945458b13f73bc"}, + {file = "coverage-7.13.0-cp314-cp314-win_arm64.whl", hash = "sha256:3a10260e6a152e5f03f26db4a407c4c62d3830b9af9b7c0450b183615f05d43b"}, + {file = "coverage-7.13.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9097818b6cc1cfb5f174e3263eba4a62a17683bcfe5c4b5d07f4c97fa51fbf28"}, + {file = "coverage-7.13.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0018f73dfb4301a89292c73be6ba5f58722ff79f51593352759c1790ded1cabe"}, + {file = "coverage-7.13.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:166ad2a22ee770f5656e1257703139d3533b4a0b6909af67c6b4a3adc1c98657"}, + {file = "coverage-7.13.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f6aaef16d65d1787280943f1c8718dc32e9cf141014e4634d64446702d26e0ff"}, + {file = "coverage-7.13.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e999e2dcc094002d6e2c7bbc1fb85b58ba4f465a760a8014d97619330cdbbbf3"}, + {file = "coverage-7.13.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:00c3d22cf6fb1cf3bf662aaaa4e563be8243a5ed2630339069799835a9cc7f9b"}, + {file = "coverage-7.13.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:22ccfe8d9bb0d6134892cbe1262493a8c70d736b9df930f3f3afae0fe3ac924d"}, + {file = "coverage-7.13.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:9372dff5ea15930fea0445eaf37bbbafbc771a49e70c0aeed8b4e2c2614cc00e"}, + {file = "coverage-7.13.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:69ac2c492918c2461bc6ace42d0479638e60719f2a4ef3f0815fa2df88e9f940"}, + {file = "coverage-7.13.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:739c6c051a7540608d097b8e13c76cfa85263ced467168dc6b477bae3df7d0e2"}, + {file = "coverage-7.13.0-cp314-cp314t-win32.whl", hash = "sha256:fe81055d8c6c9de76d60c94ddea73c290b416e061d40d542b24a5871bad498b7"}, + {file = "coverage-7.13.0-cp314-cp314t-win_amd64.whl", hash = "sha256:445badb539005283825959ac9fa4a28f712c214b65af3a2c464f1adc90f5fcbc"}, + {file = "coverage-7.13.0-cp314-cp314t-win_arm64.whl", hash = "sha256:de7f6748b890708578fc4b7bb967d810aeb6fcc9bff4bb77dbca77dab2f9df6a"}, + {file = "coverage-7.13.0-py3-none-any.whl", hash = "sha256:850d2998f380b1e266459ca5b47bc9e7daf9af1d070f66317972f382d46f1904"}, + {file = "coverage-7.13.0.tar.gz", hash = "sha256:a394aa27f2d7ff9bc04cf703817773a59ad6dfbd577032e690f961d2460ee936"}, ] [[package]] name = "django" -version = "5.2.7" +version = "5.2.9" requires_python = ">=3.10" summary = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." groups = ["default"] @@ -231,8 +424,8 @@ dependencies = [ "tzdata; sys_platform == \"win32\"", ] files = [ - {file = "django-5.2.7-py3-none-any.whl", hash = "sha256:59a13a6515f787dec9d97a0438cd2efac78c8aca1c80025244b0fe507fe0754b"}, - {file = "django-5.2.7.tar.gz", hash = "sha256:e0f6f12e2551b1716a95a63a1366ca91bbcd7be059862c1b18f989b1da356cdd"}, + {file = "django-5.2.9-py3-none-any.whl", hash = "sha256:3a4ea88a70370557ab1930b332fd2887a9f48654261cdffda663fef5976bb00a"}, + {file = "django-5.2.9.tar.gz", hash = "sha256:16b5ccfc5e8c27e6c0561af551d2ea32852d7352c67d452ae3e76b4f6b2ca495"}, ] [[package]] @@ -372,6 +565,17 @@ files = [ {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, ] +[[package]] +name = "iniconfig" +version = "2.3.0" +requires_python = ">=3.10" +summary = "brain-dead simple config-ini parsing" +groups = ["test"] +files = [ + {file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"}, + {file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"}, +] + [[package]] name = "jinja2" version = "3.1.6" @@ -386,6 +590,42 @@ files = [ {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, ] +[[package]] +name = "line-profiler" +version = "5.0.0" +requires_python = ">=3.8" +summary = "Line-by-line profiler" +groups = ["test"] +dependencies = [ + "tomli; python_version < \"3.11\"", +] +files = [ + {file = "line_profiler-5.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f32d536c056393b7ca703e459632edc327ff9e0fc320c7b0e0ed14b84d342b7f"}, + {file = "line_profiler-5.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a7da04ffc5a0a1f6653f43b13ad2e7ebf66f1d757174b7e660dfa0cbe74c4fc6"}, + {file = "line_profiler-5.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d2746f6b13c19ca4847efd500402d53a5ebb2fe31644ce8af74fbeac5ea4c54c"}, + {file = "line_profiler-5.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b4290319a59730c04cbd03755472d10524130065a20a695dc10dd66ffd92172"}, + {file = "line_profiler-5.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cd168a8af0032e8e3cb2fbb9ffc7694cdcecd47ec356ae863134df07becb3a2"}, + {file = "line_profiler-5.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:cbe7b095865d00dda0f53d7d4556c2b1b5d13f723173a85edb206a78779ee07a"}, + {file = "line_profiler-5.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ff176045ea8a9e33900856db31b0b979357c337862ae4837140c98bd3161c3c7"}, + {file = "line_profiler-5.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:474e0962d02123f1190a804073b308a67ef5f9c3b8379184483d5016844a00df"}, + {file = "line_profiler-5.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:729b18c0ac66b3368ade61203459219c202609f76b34190cbb2508b8e13998c8"}, + {file = "line_profiler-5.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:438ed24278c428119473b61a473c8fe468ace7c97c94b005cb001137bc624547"}, + {file = "line_profiler-5.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:920b0076dca726caadbf29f0bfcce0cbcb4d9ff034cd9445a7308f9d556b4b3a"}, + {file = "line_profiler-5.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53326eaad2d807487dcd45d2e385feaaed81aaf72b9ecd4f53c1a225d658006f"}, + {file = "line_profiler-5.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e3995a989cdea022f0ede5db19a6ab527f818c59ffcebf4e5f7a8be4eb8e880"}, + {file = "line_profiler-5.0.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8bf57892a1d3a42273652506746ba9f620c505773ada804367c42e5b4146d6b6"}, + {file = "line_profiler-5.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:43672085f149f5fbf3f08bba072ad7014dd485282e8665827b26941ea97d2d76"}, + {file = "line_profiler-5.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:446bd4f04e4bd9e979d68fdd916103df89a9d419e25bfb92b31af13c33808ee0"}, + {file = "line_profiler-5.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9873fabbae1587778a551176758a70a5f6c89d8d070a1aca7a689677d41a1348"}, + {file = "line_profiler-5.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2cd6cdb5a4d3b4ced607104dbed73ec820a69018decd1a90904854380536ed32"}, + {file = "line_profiler-5.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:34d6172a3bd14167b3ea2e629d71b08683b17b3bc6eb6a4936d74e3669f875b6"}, + {file = "line_profiler-5.0.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5edd859be322aa8252253e940ac1c60cca4c385760d90a402072f8f35e4b967"}, + {file = "line_profiler-5.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d4f97b223105eed6e525994f5653061bd981e04838ee5d14e01d17c26185094"}, + {file = "line_profiler-5.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4758007e491bee3be40ebcca460596e0e28e7f39b735264694a9cafec729dfa9"}, + {file = "line_profiler-5.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:213b19c4b65942db5d477e603c18c76126e3811a39d8bab251d930d8ce82ffba"}, + {file = "line_profiler-5.0.0.tar.gz", hash = "sha256:a80f0afb05ba0d275d9dddc5ff97eab637471167ff3e66dcc7d135755059398c"}, +] + [[package]] name = "lockfile" version = "0.12.2" @@ -698,6 +938,20 @@ files = [ {file = "markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698"}, ] +[[package]] +name = "memory-profiler" +version = "0.61.0" +requires_python = ">=3.5" +summary = "A module for monitoring memory usage of a python program" +groups = ["test"] +dependencies = [ + "psutil", +] +files = [ + {file = "memory_profiler-0.61.0-py3-none-any.whl", hash = "sha256:400348e61031e3942ad4d4109d18753b2fb08c2f6fb8290671c5513a34182d84"}, + {file = "memory_profiler-0.61.0.tar.gz", hash = "sha256:4e5b73d7864a1d1292fb76a03e82a3e78ef934d06828a698d9dada76da2067b0"}, +] + [[package]] name = "mysqlclient" version = "2.0.1" @@ -721,98 +975,140 @@ files = [ [[package]] name = "phonenumbers" -version = "9.0.16" +version = "9.0.20" summary = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers." groups = ["default"] files = [ - {file = "phonenumbers-9.0.16-py2.py3-none-any.whl", hash = "sha256:3c019f10305c311005672f3a0cea4139fef0b949319a60635ee803cfaef4a2e2"}, - {file = "phonenumbers-9.0.16.tar.gz", hash = "sha256:4002542d987c453b333b54450a9f60a280ed7ec932afd7d5fa8dbe6c2379f10a"}, + {file = "phonenumbers-9.0.20-py2.py3-none-any.whl", hash = "sha256:03bf5dd14891891284ba96f803d0e5e7e11b9306a0ec4fdf25756ada39eacb86"}, + {file = "phonenumbers-9.0.20.tar.gz", hash = "sha256:849788eec8e5a9737a99c8b906d18a62d9fced6497ba7033784b6a7e4c89bb2d"}, ] [[package]] name = "pillow" -version = "11.3.0" -requires_python = ">=3.9" -summary = "Python Imaging Library (Fork)" +version = "12.0.0" +requires_python = ">=3.10" +summary = "Python Imaging Library (fork)" groups = ["default"] files = [ - {file = "pillow-11.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1cd110edf822773368b396281a2293aeb91c90a2db00d78ea43e7e861631b722"}, - {file = "pillow-11.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c412fddd1b77a75aa904615ebaa6001f169b26fd467b4be93aded278266b288"}, - {file = "pillow-11.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1aa4de119a0ecac0a34a9c8bde33f34022e2e8f99104e47a3ca392fd60e37d"}, - {file = "pillow-11.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:91da1d88226663594e3f6b4b8c3c8d85bd504117d043740a8e0ec449087cc494"}, - {file = "pillow-11.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:643f189248837533073c405ec2f0bb250ba54598cf80e8c1e043381a60632f58"}, - {file = "pillow-11.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:106064daa23a745510dabce1d84f29137a37224831d88eb4ce94bb187b1d7e5f"}, - {file = "pillow-11.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cd8ff254faf15591e724dc7c4ddb6bf4793efcbe13802a4ae3e863cd300b493e"}, - {file = "pillow-11.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:932c754c2d51ad2b2271fd01c3d121daaa35e27efae2a616f77bf164bc0b3e94"}, - {file = "pillow-11.3.0-cp311-cp311-win32.whl", hash = "sha256:b4b8f3efc8d530a1544e5962bd6b403d5f7fe8b9e08227c6b255f98ad82b4ba0"}, - {file = "pillow-11.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:1a992e86b0dd7aeb1f053cd506508c0999d710a8f07b4c791c63843fc6a807ac"}, - {file = "pillow-11.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:30807c931ff7c095620fe04448e2c2fc673fcbb1ffe2a7da3fb39613489b1ddd"}, - {file = "pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4"}, - {file = "pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69"}, - {file = "pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d"}, - {file = "pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6"}, - {file = "pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7"}, - {file = "pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024"}, - {file = "pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809"}, - {file = "pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d"}, - {file = "pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149"}, - {file = "pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d"}, - {file = "pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542"}, - {file = "pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd"}, - {file = "pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8"}, - {file = "pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f"}, - {file = "pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c"}, - {file = "pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd"}, - {file = "pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e"}, - {file = "pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1"}, - {file = "pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805"}, - {file = "pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8"}, - {file = "pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2"}, - {file = "pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b"}, - {file = "pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3"}, - {file = "pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51"}, - {file = "pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580"}, - {file = "pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e"}, - {file = "pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d"}, - {file = "pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced"}, - {file = "pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c"}, - {file = "pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8"}, - {file = "pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59"}, - {file = "pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe"}, - {file = "pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c"}, - {file = "pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788"}, - {file = "pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31"}, - {file = "pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e"}, - {file = "pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12"}, - {file = "pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a"}, - {file = "pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632"}, - {file = "pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673"}, - {file = "pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027"}, - {file = "pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77"}, - {file = "pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874"}, - {file = "pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a"}, - {file = "pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214"}, - {file = "pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635"}, - {file = "pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6"}, - {file = "pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae"}, - {file = "pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653"}, - {file = "pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6"}, - {file = "pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36"}, - {file = "pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b"}, - {file = "pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477"}, - {file = "pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50"}, - {file = "pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b"}, - {file = "pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12"}, - {file = "pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db"}, - {file = "pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa"}, - {file = "pillow-11.3.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7c8ec7a017ad1bd562f93dbd8505763e688d388cde6e4a010ae1486916e713e6"}, - {file = "pillow-11.3.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9ab6ae226de48019caa8074894544af5b53a117ccb9d3b3dcb2871464c829438"}, - {file = "pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe27fb049cdcca11f11a7bfda64043c37b30e6b91f10cb5bab275806c32f6ab3"}, - {file = "pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:465b9e8844e3c3519a983d58b80be3f668e2a7a5db97f2784e7079fbc9f9822c"}, - {file = "pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5418b53c0d59b3824d05e029669efa023bbef0f3e92e75ec8428f3799487f361"}, - {file = "pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:504b6f59505f08ae014f724b6207ff6222662aab5cc9542577fb084ed0676ac7"}, - {file = "pillow-11.3.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c84d689db21a1c397d001aa08241044aa2069e7587b398c8cc63020390b1c1b8"}, - {file = "pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523"}, + {file = "pillow-12.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0fd00cac9c03256c8b2ff58f162ebcd2587ad3e1f2e397eab718c47e24d231cc"}, + {file = "pillow-12.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3475b96f5908b3b16c47533daaa87380c491357d197564e0ba34ae75c0f3257"}, + {file = "pillow-12.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:110486b79f2d112cf6add83b28b627e369219388f64ef2f960fef9ebaf54c642"}, + {file = "pillow-12.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5269cc1caeedb67e6f7269a42014f381f45e2e7cd42d834ede3c703a1d915fe3"}, + {file = "pillow-12.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa5129de4e174daccbc59d0a3b6d20eaf24417d59851c07ebb37aeb02947987c"}, + {file = "pillow-12.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bee2a6db3a7242ea309aa7ee8e2780726fed67ff4e5b40169f2c940e7eb09227"}, + {file = "pillow-12.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:90387104ee8400a7b4598253b4c406f8958f59fcf983a6cea2b50d59f7d63d0b"}, + {file = "pillow-12.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bc91a56697869546d1b8f0a3ff35224557ae7f881050e99f615e0119bf934b4e"}, + {file = "pillow-12.0.0-cp311-cp311-win32.whl", hash = "sha256:27f95b12453d165099c84f8a8bfdfd46b9e4bda9e0e4b65f0635430027f55739"}, + {file = "pillow-12.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:b583dc9070312190192631373c6c8ed277254aa6e6084b74bdd0a6d3b221608e"}, + {file = "pillow-12.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:759de84a33be3b178a64c8ba28ad5c135900359e85fb662bc6e403ad4407791d"}, + {file = "pillow-12.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53561a4ddc36facb432fae7a9d8afbfaf94795414f5cdc5fc52f28c1dca90371"}, + {file = "pillow-12.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:71db6b4c1653045dacc1585c1b0d184004f0d7e694c7b34ac165ca70c0838082"}, + {file = "pillow-12.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2fa5f0b6716fc88f11380b88b31fe591a06c6315e955c096c35715788b339e3f"}, + {file = "pillow-12.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82240051c6ca513c616f7f9da06e871f61bfd7805f566275841af15015b8f98d"}, + {file = "pillow-12.0.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55f818bd74fe2f11d4d7cbc65880a843c4075e0ac7226bc1a23261dbea531953"}, + {file = "pillow-12.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b87843e225e74576437fd5b6a4c2205d422754f84a06942cfaf1dc32243e45a8"}, + {file = "pillow-12.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c607c90ba67533e1b2355b821fef6764d1dd2cbe26b8c1005ae84f7aea25ff79"}, + {file = "pillow-12.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:21f241bdd5080a15bc86d3466a9f6074a9c2c2b314100dd896ac81ee6db2f1ba"}, + {file = "pillow-12.0.0-cp312-cp312-win32.whl", hash = "sha256:dd333073e0cacdc3089525c7df7d39b211bcdf31fc2824e49d01c6b6187b07d0"}, + {file = "pillow-12.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9fe611163f6303d1619bbcb653540a4d60f9e55e622d60a3108be0d5b441017a"}, + {file = "pillow-12.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:7dfb439562f234f7d57b1ac6bc8fe7f838a4bd49c79230e0f6a1da93e82f1fad"}, + {file = "pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:0869154a2d0546545cde61d1789a6524319fc1897d9ee31218eae7a60ccc5643"}, + {file = "pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:a7921c5a6d31b3d756ec980f2f47c0cfdbce0fc48c22a39347a895f41f4a6ea4"}, + {file = "pillow-12.0.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:1ee80a59f6ce048ae13cda1abf7fbd2a34ab9ee7d401c46be3ca685d1999a399"}, + {file = "pillow-12.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c50f36a62a22d350c96e49ad02d0da41dbd17ddc2e29750dbdba4323f85eb4a5"}, + {file = "pillow-12.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5193fde9a5f23c331ea26d0cf171fbf67e3f247585f50c08b3e205c7aeb4589b"}, + {file = "pillow-12.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bde737cff1a975b70652b62d626f7785e0480918dece11e8fef3c0cf057351c3"}, + {file = "pillow-12.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a6597ff2b61d121172f5844b53f21467f7082f5fb385a9a29c01414463f93b07"}, + {file = "pillow-12.0.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b817e7035ea7f6b942c13aa03bb554fc44fea70838ea21f8eb31c638326584e"}, + {file = "pillow-12.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f4f1231b7dec408e8670264ce63e9c71409d9583dd21d32c163e25213ee2a344"}, + {file = "pillow-12.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e51b71417049ad6ab14c49608b4a24d8fb3fe605e5dfabfe523b58064dc3d27"}, + {file = "pillow-12.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d120c38a42c234dc9a8c5de7ceaaf899cf33561956acb4941653f8bdc657aa79"}, + {file = "pillow-12.0.0-cp313-cp313-win32.whl", hash = "sha256:4cc6b3b2efff105c6a1656cfe59da4fdde2cda9af1c5e0b58529b24525d0a098"}, + {file = "pillow-12.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:4cf7fed4b4580601c4345ceb5d4cbf5a980d030fd5ad07c4d2ec589f95f09905"}, + {file = "pillow-12.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:9f0b04c6b8584c2c193babcccc908b38ed29524b29dd464bc8801bf10d746a3a"}, + {file = "pillow-12.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7fa22993bac7b77b78cae22bad1e2a987ddf0d9015c63358032f84a53f23cdc3"}, + {file = "pillow-12.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f135c702ac42262573fe9714dfe99c944b4ba307af5eb507abef1667e2cbbced"}, + {file = "pillow-12.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c85de1136429c524e55cfa4e033b4a7940ac5c8ee4d9401cc2d1bf48154bbc7b"}, + {file = "pillow-12.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:38df9b4bfd3db902c9c2bd369bcacaf9d935b2fff73709429d95cc41554f7b3d"}, + {file = "pillow-12.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7d87ef5795da03d742bf49439f9ca4d027cde49c82c5371ba52464aee266699a"}, + {file = "pillow-12.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aff9e4d82d082ff9513bdd6acd4f5bd359f5b2c870907d2b0a9c5e10d40c88fe"}, + {file = "pillow-12.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8d8ca2b210ada074d57fcee40c30446c9562e542fc46aedc19baf758a93532ee"}, + {file = "pillow-12.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:99a7f72fb6249302aa62245680754862a44179b545ded638cf1fef59befb57ef"}, + {file = "pillow-12.0.0-cp313-cp313t-win32.whl", hash = "sha256:4078242472387600b2ce8d93ade8899c12bf33fa89e55ec89fe126e9d6d5d9e9"}, + {file = "pillow-12.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2c54c1a783d6d60595d3514f0efe9b37c8808746a66920315bfd34a938d7994b"}, + {file = "pillow-12.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:26d9f7d2b604cd23aba3e9faf795787456ac25634d82cd060556998e39c6fa47"}, + {file = "pillow-12.0.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:beeae3f27f62308f1ddbcfb0690bf44b10732f2ef43758f169d5e9303165d3f9"}, + {file = "pillow-12.0.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:d4827615da15cd59784ce39d3388275ec093ae3ee8d7f0c089b76fa87af756c2"}, + {file = "pillow-12.0.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:3e42edad50b6909089750e65c91aa09aaf1e0a71310d383f11321b27c224ed8a"}, + {file = "pillow-12.0.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e5d8efac84c9afcb40914ab49ba063d94f5dbdf5066db4482c66a992f47a3a3b"}, + {file = "pillow-12.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:266cd5f2b63ff316d5a1bba46268e603c9caf5606d44f38c2873c380950576ad"}, + {file = "pillow-12.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:58eea5ebe51504057dd95c5b77d21700b77615ab0243d8152793dc00eb4faf01"}, + {file = "pillow-12.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f13711b1a5ba512d647a0e4ba79280d3a9a045aaf7e0cc6fbe96b91d4cdf6b0c"}, + {file = "pillow-12.0.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6846bd2d116ff42cba6b646edf5bf61d37e5cbd256425fa089fee4ff5c07a99e"}, + {file = "pillow-12.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c98fa880d695de164b4135a52fd2e9cd7b7c90a9d8ac5e9e443a24a95ef9248e"}, + {file = "pillow-12.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa3ed2a29a9e9d2d488b4da81dcb54720ac3104a20bf0bd273f1e4648aff5af9"}, + {file = "pillow-12.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d034140032870024e6b9892c692fe2968493790dd57208b2c37e3fb35f6df3ab"}, + {file = "pillow-12.0.0-cp314-cp314-win32.whl", hash = "sha256:1b1b133e6e16105f524a8dec491e0586d072948ce15c9b914e41cdadd209052b"}, + {file = "pillow-12.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:8dc232e39d409036af549c86f24aed8273a40ffa459981146829a324e0848b4b"}, + {file = "pillow-12.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:d52610d51e265a51518692045e372a4c363056130d922a7351429ac9f27e70b0"}, + {file = "pillow-12.0.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1979f4566bb96c1e50a62d9831e2ea2d1211761e5662afc545fa766f996632f6"}, + {file = "pillow-12.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b2e4b27a6e15b04832fe9bf292b94b5ca156016bbc1ea9c2c20098a0320d6cf6"}, + {file = "pillow-12.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fb3096c30df99fd01c7bf8e544f392103d0795b9f98ba71a8054bcbf56b255f1"}, + {file = "pillow-12.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7438839e9e053ef79f7112c881cef684013855016f928b168b81ed5835f3e75e"}, + {file = "pillow-12.0.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d5c411a8eaa2299322b647cd932586b1427367fd3184ffbb8f7a219ea2041ca"}, + {file = "pillow-12.0.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d7e091d464ac59d2c7ad8e7e08105eaf9dafbc3883fd7265ffccc2baad6ac925"}, + {file = "pillow-12.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:792a2c0be4dcc18af9d4a2dfd8a11a17d5e25274a1062b0ec1c2d79c76f3e7f8"}, + {file = "pillow-12.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:afbefa430092f71a9593a99ab6a4e7538bc9eabbf7bf94f91510d3503943edc4"}, + {file = "pillow-12.0.0-cp314-cp314t-win32.whl", hash = "sha256:3830c769decf88f1289680a59d4f4c46c72573446352e2befec9a8512104fa52"}, + {file = "pillow-12.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:905b0365b210c73afb0ebe9101a32572152dfd1c144c7e28968a331b9217b94a"}, + {file = "pillow-12.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:99353a06902c2e43b43e8ff74ee65a7d90307d82370604746738a1e0661ccca7"}, + {file = "pillow-12.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b22bd8c974942477156be55a768f7aa37c46904c175be4e158b6a86e3a6b7ca8"}, + {file = "pillow-12.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:805ebf596939e48dbb2e4922a1d3852cfc25c38160751ce02da93058b48d252a"}, + {file = "pillow-12.0.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cae81479f77420d217def5f54b5b9d279804d17e982e0f2fa19b1d1e14ab5197"}, + {file = "pillow-12.0.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aeaefa96c768fc66818730b952a862235d68825c178f1b3ffd4efd7ad2edcb7c"}, + {file = "pillow-12.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09f2d0abef9e4e2f349305a4f8cc784a8a6c2f58a8c4892eea13b10a943bd26e"}, + {file = "pillow-12.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bdee52571a343d721fb2eb3b090a82d959ff37fc631e3f70422e0c2e029f3e76"}, + {file = "pillow-12.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:b290fd8aa38422444d4b50d579de197557f182ef1068b75f5aa8558638b8d0a5"}, + {file = "pillow-12.0.0.tar.gz", hash = "sha256:87d4f8125c9988bfbed67af47dd7a953e2fc7b0cc1e7800ec6d2080d490bb353"}, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +requires_python = ">=3.9" +summary = "plugin and hook calling mechanisms for python" +groups = ["test"] +files = [ + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, +] + +[[package]] +name = "psutil" +version = "7.1.3" +requires_python = ">=3.6" +summary = "Cross-platform lib for process and system monitoring." +groups = ["test"] +files = [ + {file = "psutil-7.1.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0005da714eee687b4b8decd3d6cc7c6db36215c9e74e5ad2264b90c3df7d92dc"}, + {file = "psutil-7.1.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:19644c85dcb987e35eeeaefdc3915d059dac7bd1167cdcdbf27e0ce2df0c08c0"}, + {file = "psutil-7.1.3-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95ef04cf2e5ba0ab9eaafc4a11eaae91b44f4ef5541acd2ee91d9108d00d59a7"}, + {file = "psutil-7.1.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1068c303be3a72f8e18e412c5b2a8f6d31750fb152f9cb106b54090296c9d251"}, + {file = "psutil-7.1.3-cp313-cp313t-win_amd64.whl", hash = "sha256:18349c5c24b06ac5612c0428ec2a0331c26443d259e2a0144a9b24b4395b58fa"}, + {file = "psutil-7.1.3-cp313-cp313t-win_arm64.whl", hash = "sha256:c525ffa774fe4496282fb0b1187725793de3e7c6b29e41562733cae9ada151ee"}, + {file = "psutil-7.1.3-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b403da1df4d6d43973dc004d19cee3b848e998ae3154cc8097d139b77156c353"}, + {file = "psutil-7.1.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ad81425efc5e75da3f39b3e636293360ad8d0b49bed7df824c79764fb4ba9b8b"}, + {file = "psutil-7.1.3-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f33a3702e167783a9213db10ad29650ebf383946e91bc77f28a5eb083496bc9"}, + {file = "psutil-7.1.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fac9cd332c67f4422504297889da5ab7e05fd11e3c4392140f7370f4208ded1f"}, + {file = "psutil-7.1.3-cp314-cp314t-win_amd64.whl", hash = "sha256:3792983e23b69843aea49c8f5b8f115572c5ab64c153bada5270086a2123c7e7"}, + {file = "psutil-7.1.3-cp314-cp314t-win_arm64.whl", hash = "sha256:31d77fcedb7529f27bb3a0472bea9334349f9a04160e8e6e5020f22c59893264"}, + {file = "psutil-7.1.3-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2bdbcd0e58ca14996a42adf3621a6244f1bb2e2e528886959c72cf1e326677ab"}, + {file = "psutil-7.1.3-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:bc31fa00f1fbc3c3802141eede66f3a2d51d89716a194bf2cd6fc68310a19880"}, + {file = "psutil-7.1.3-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3bb428f9f05c1225a558f53e30ccbad9930b11c3fc206836242de1091d3e7dd3"}, + {file = "psutil-7.1.3-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56d974e02ca2c8eb4812c3f76c30e28836fffc311d55d979f1465c1feeb2b68b"}, + {file = "psutil-7.1.3-cp37-abi3-win_amd64.whl", hash = "sha256:f39c2c19fe824b47484b96f9692932248a54c43799a84282cfe58d05a6449efd"}, + {file = "psutil-7.1.3-cp37-abi3-win_arm64.whl", hash = "sha256:bd0d69cee829226a761e92f28140bec9a5ee9d5b4fb4b0cc589068dbfff559b1"}, + {file = "psutil-7.1.3.tar.gz", hash = "sha256:6c86281738d77335af7aec228328e944b30930899ea760ecf33a4dba66be5e74"}, ] [[package]] @@ -826,6 +1122,100 @@ files = [ {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, ] +[[package]] +name = "pytest" +version = "9.0.2" +requires_python = ">=3.10" +summary = "pytest: simple powerful testing with Python" +groups = ["test"] +dependencies = [ + "colorama>=0.4; sys_platform == \"win32\"", + "exceptiongroup>=1; python_version < \"3.11\"", + "iniconfig>=1.0.1", + "packaging>=22", + "pluggy<2,>=1.5", + "pygments>=2.7.2", + "tomli>=1; python_version < \"3.11\"", +] +files = [ + {file = "pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b"}, + {file = "pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11"}, +] + +[[package]] +name = "pytest-cov" +version = "7.0.0" +requires_python = ">=3.9" +summary = "Pytest plugin for measuring coverage." +groups = ["test"] +dependencies = [ + "coverage[toml]>=7.10.6", + "pluggy>=1.2", + "pytest>=7", +] +files = [ + {file = "pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861"}, + {file = "pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1"}, +] + +[[package]] +name = "pytest-django" +version = "4.11.1" +requires_python = ">=3.8" +summary = "A Django plugin for pytest." +groups = ["test"] +dependencies = [ + "pytest>=7.0.0", +] +files = [ + {file = "pytest_django-4.11.1-py3-none-any.whl", hash = "sha256:1b63773f648aa3d8541000c26929c1ea63934be1cfa674c76436966d73fe6a10"}, + {file = "pytest_django-4.11.1.tar.gz", hash = "sha256:a949141a1ee103cb0e7a20f1451d355f83f5e4a5d07bdd4dcfdd1fd0ff227991"}, +] + +[[package]] +name = "pytest-html" +version = "4.1.1" +requires_python = ">=3.8" +summary = "pytest plugin for generating HTML reports" +groups = ["test"] +dependencies = [ + "jinja2>=3.0.0", + "pytest-metadata>=2.0.0", + "pytest>=7.0.0", +] +files = [ + {file = "pytest_html-4.1.1-py3-none-any.whl", hash = "sha256:c8152cea03bd4e9bee6d525573b67bbc6622967b72b9628dda0ea3e2a0b5dd71"}, + {file = "pytest_html-4.1.1.tar.gz", hash = "sha256:70a01e8ae5800f4a074b56a4cb1025c8f4f9b038bba5fe31e3c98eb996686f07"}, +] + +[[package]] +name = "pytest-metadata" +version = "3.1.1" +requires_python = ">=3.8" +summary = "pytest plugin for test session metadata" +groups = ["test"] +dependencies = [ + "pytest>=7.0.0", +] +files = [ + {file = "pytest_metadata-3.1.1-py3-none-any.whl", hash = "sha256:c8e0844db684ee1c798cfa38908d20d67d0463ecb6137c72e91f418558dd5f4b"}, + {file = "pytest_metadata-3.1.1.tar.gz", hash = "sha256:d2a29b0355fbc03f168aa96d41ff88b1a3b44a3b02acbe491801c98a048017c8"}, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +requires_python = ">=3.9" +summary = "Thin-wrapper around the mock package for easier use with pytest" +groups = ["test"] +dependencies = [ + "pytest>=6.2.5", +] +files = [ + {file = "pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d"}, + {file = "pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f"}, +] + [[package]] name = "python-fsutil" version = "0.15.0" @@ -853,15 +1243,43 @@ files = [ {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"}, ] +[[package]] +name = "roman-numerals" +version = "4.0.0" +requires_python = ">=3.10" +summary = "Manipulate well-formed Roman numerals" +groups = ["test"] +files = [ + {file = "roman_numerals-4.0.0-py3-none-any.whl", hash = "sha256:4131feb23ba1a542494873e4cee7844ec8d226a750134efc65ceb20939ed33c9"}, + {file = "roman_numerals-4.0.0.tar.gz", hash = "sha256:231287018a8788bf8c0718482a08c15b90458523ea1d840a18a791a86d4583b3"}, +] + [[package]] name = "roman-numerals-py" -version = "3.1.0" +version = "4.0.0" +requires_python = ">=3.10" +summary = "This package is deprecated, switch to roman-numerals." +groups = ["test"] +dependencies = [ + "roman-numerals==4.0.0", +] +files = [ + {file = "roman_numerals_py-4.0.0-py3-none-any.whl", hash = "sha256:dfcecf6e0cddbf2ee1112e7e2ebf58ba771984f075cb57a30e1811cee4f06332"}, + {file = "roman_numerals_py-4.0.0.tar.gz", hash = "sha256:f7fa8dff5b7b7251d3a7586b97c57a0698e2e28898fa42c23bcc0cf51b02aee9"}, +] + +[[package]] +name = "snakeviz" +version = "2.2.2" requires_python = ">=3.9" -summary = "Manipulate well-formed Roman numerals" +summary = "A web-based viewer for Python profiler output" groups = ["test"] +dependencies = [ + "tornado>=2.0", +] files = [ - {file = "roman_numerals_py-3.1.0-py3-none-any.whl", hash = "sha256:9da2ad2fb670bcf24e81070ceb3be72f6c11c440d73bd579fbeca1e9f330954c"}, - {file = "roman_numerals_py-3.1.0.tar.gz", hash = "sha256:be4bf804f083a4ce001b5eb7e3c0862479d10f94c936f6c4e5f250aa5ff5bd2d"}, + {file = "snakeviz-2.2.2-py3-none-any.whl", hash = "sha256:77e7b9c82f6152edc330040319b97612351cd9b48c706434c535c2df31d10ac5"}, + {file = "snakeviz-2.2.2.tar.gz", hash = "sha256:08028c6f8e34a032ff14757a38424770abb8662fb2818985aeea0d9bc13a7d83"}, ] [[package]] @@ -1003,36 +1421,57 @@ files = [ [[package]] name = "sqlparse" -version = "0.5.3" +version = "0.5.4" requires_python = ">=3.8" summary = "A non-validating SQL parser." groups = ["default"] files = [ - {file = "sqlparse-0.5.3-py3-none-any.whl", hash = "sha256:cf2196ed3418f3ba5de6af7e82c694a9fbdbfecccdfc72e281548517081f16ca"}, - {file = "sqlparse-0.5.3.tar.gz", hash = "sha256:09f67787f56a0b16ecdbde1bfc7f5d9c3371ca683cfeaa8e6ff60b4807ec9272"}, + {file = "sqlparse-0.5.4-py3-none-any.whl", hash = "sha256:99a9f0314977b76d776a0fcb8554de91b9bb8a18560631d6bc48721d07023dcb"}, + {file = "sqlparse-0.5.4.tar.gz", hash = "sha256:4396a7d3cf1cd679c1be976cf3dc6e0a51d0111e87787e7a8d780e7d5a998f9e"}, +] + +[[package]] +name = "tornado" +version = "6.5.4" +requires_python = ">=3.9" +summary = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +groups = ["test"] +files = [ + {file = "tornado-6.5.4-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d6241c1a16b1c9e4cc28148b1cda97dd1c6cb4fb7068ac1bedc610768dff0ba9"}, + {file = "tornado-6.5.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2d50f63dda1d2cac3ae1fa23d254e16b5e38153758470e9956cbc3d813d40843"}, + {file = "tornado-6.5.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1cf66105dc6acb5af613c054955b8137e34a03698aa53272dbda4afe252be17"}, + {file = "tornado-6.5.4-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50ff0a58b0dc97939d29da29cd624da010e7f804746621c78d14b80238669335"}, + {file = "tornado-6.5.4-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5fb5e04efa54cf0baabdd10061eb4148e0be137166146fff835745f59ab9f7f"}, + {file = "tornado-6.5.4-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9c86b1643b33a4cd415f8d0fe53045f913bf07b4a3ef646b735a6a86047dda84"}, + {file = "tornado-6.5.4-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:6eb82872335a53dd063a4f10917b3efd28270b56a33db69009606a0312660a6f"}, + {file = "tornado-6.5.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6076d5dda368c9328ff41ab5d9dd3608e695e8225d1cd0fd1e006f05da3635a8"}, + {file = "tornado-6.5.4-cp39-abi3-win32.whl", hash = "sha256:1768110f2411d5cd281bac0a090f707223ce77fd110424361092859e089b38d1"}, + {file = "tornado-6.5.4-cp39-abi3-win_amd64.whl", hash = "sha256:fa07d31e0cd85c60713f2b995da613588aa03e1303d75705dca6af8babc18ddc"}, + {file = "tornado-6.5.4-cp39-abi3-win_arm64.whl", hash = "sha256:053e6e16701eb6cbe641f308f4c1a9541f91b6261991160391bfc342e8a551a1"}, + {file = "tornado-6.5.4.tar.gz", hash = "sha256:a22fa9047405d03260b483980635f0b041989d8bcc9a313f8fe18b411d84b1d7"}, ] [[package]] name = "tzdata" -version = "2025.2" +version = "2025.3" requires_python = ">=2" summary = "Provider of IANA time zone data" groups = ["default"] marker = "sys_platform == \"win32\"" files = [ - {file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"}, - {file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"}, + {file = "tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1"}, + {file = "tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7"}, ] [[package]] name = "urllib3" -version = "2.5.0" +version = "2.6.2" requires_python = ">=3.9" summary = "HTTP library with thread-safe connection pooling, file post, and more." groups = ["default", "test"] files = [ - {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, - {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, + {file = "urllib3-2.6.2-py3-none-any.whl", hash = "sha256:ec21cddfe7724fc7cb4ba4bea7aa8e2ef36f607a4bab81aa6ce42a13dc3f03dd"}, + {file = "urllib3-2.6.2.tar.gz", hash = "sha256:016f9c98bb7e98085cb2b4b17b87d2c702975664e4f060c6532e64d1c1a5e797"}, ] [[package]] diff --git a/profiling/.gitignore b/profiling/.gitignore new file mode 100644 index 00000000..04dba9b5 --- /dev/null +++ b/profiling/.gitignore @@ -0,0 +1,6 @@ +# Ignore profiling results (regenerate locally) +results/*.prof +results/*.pstats + +# Keep directory structure +!results/.gitkeep diff --git a/profiling/README.md b/profiling/README.md new file mode 100644 index 00000000..96422653 --- /dev/null +++ b/profiling/README.md @@ -0,0 +1,109 @@ +# Profilácia Pytition projektu + +## Prehľad + +Tento adresár obsahuje nástroje na **časovú profiláciu** Pytition projektu. + +## Inštalácia závislostí + +```bash +pdm add snakeviz line-profiler --dev +``` + +## Spustenie profilácie + +### Základné použitie + +```bash +# Profilovať HTML sanitizáciu (default) +pdm run python profiling/run_profiler.py sanitize + +# Profilovať databázové operácie +pdm run python profiling/run_profiler.py models + +# Profilovať vytváranie podpisov +pdm run python profiling/run_profiler.py signatures + +# Profilovať databázové query +pdm run python profiling/run_profiler.py queries + +# Spustiť všetky scenáre +pdm run python profiling/run_profiler.py all +``` + +### Vizualizácia výsledkov + +Po spustení profilácie sa vytvorí `.prof` súbor v `profiling/results/`. Vizualizuj ho pomocou: + +```bash +pdm run snakeviz profiling/results/sanitize.prof +``` + +Otvorí sa prehliadač s interaktívnou vizualizáciou. + +## Scenáre + +| Scenár | Popis | Čo meria | +|--------|-------|----------| +| `sanitize` | HTML sanitizácia | Výkon `sanitize_html()` funkcie z helpers.py | +| `models` | CRUD operácie | Vytváranie, čítanie, aktualizácia modelov | +| `signatures` | Podpisy | Vytváranie a počítanie podpisov petícií | +| `queries` | DB queries | Komplexné databázové dotazy s filtráciou | + +## Interpretácia výsledkov + +### Kľúčové metriky + +- **ncalls** - počet volaní funkcie +- **tottime** - celkový čas strávený v funkcii (bez subfunkcií) +- **cumtime** - kumulatívny čas (vrátane subfunkcií) +- **percall** - čas na jedno volanie + +### Identifikácia bottleneckov + +1. Hľadaj funkcie s vysokým **cumtime** - celkovo zaberajú najviac času +2. Hľadaj funkcie s vysokým **tottime** - samotná funkcia je pomalá +3. Hľadaj funkcie s vysokým **ncalls** - volajú sa príliš často + +## Príklad optimalizácie + +### Pred optimalizáciou + +``` + ncalls tottime cumtime filename:lineno(function) + 1000 2.500 2.500 helpers.py:18(sanitize_html) +``` + +### Identifikovaný problém + +Funkcia `sanitize_html` sa volá 1000x a zaberá 2.5s. + +### Riešenie + +Pridať caching pre opakované HTML: + +```python +from functools import lru_cache + +@lru_cache(maxsize=100) +def sanitize_html_cached(html): + return sanitize_html(html) +``` + +### Po optimalizácii + +``` + ncalls tottime cumtime filename:lineno(function) + 1000 0.100 0.100 helpers.py:18(sanitize_html_cached) +``` + +## Dokumentácia výsledkov + +Pri odovzdávaní úlohy zaznamenaj: + +1. **Vybraný scenár** a prečo +2. **Identifikovaný bottleneck** (funkcia, riadky kódu) +3. **Meranie PRED** optimalizáciou (čas, ncalls) +4. **Popis optimalizácie** čo si zmenil +5. **Meranie PO** optimalizácii (čas, ncalls) +6. **Percentuálne zlepšenie** diff --git a/profiling/benchmark.py b/profiling/benchmark.py new file mode 100644 index 00000000..83837e05 --- /dev/null +++ b/profiling/benchmark.py @@ -0,0 +1,239 @@ +#!/usr/bin/env python +""" +Benchmark script to measure performance before and after optimization. +Run this script to get precise timing measurements. + +Usage: + python profiling/benchmark.py [function_name] [iterations] + +Examples: + python profiling/benchmark.py sanitize_html 1000 + python profiling/benchmark.py get_signature_number 500 +""" + +import os +import sys +import time +import statistics +import django + +# Setup Django +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'pytition.settings.test') +sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'pytition')) +django.setup() + +from django.contrib.auth import get_user_model +from petition.models import Organization, Petition, PytitionUser, Signature +from petition.helpers import sanitize_html + + +def benchmark_function(func, args=(), kwargs=None, iterations=100, warmup=10): + """ + Benchmark a function with precise timing. + + Returns dict with: min, max, mean, median, stdev, total + """ + if kwargs is None: + kwargs = {} + + # Warmup runs (not measured) + for _ in range(warmup): + func(*args, **kwargs) + + # Measured runs + times = [] + for _ in range(iterations): + start = time.perf_counter() + func(*args, **kwargs) + end = time.perf_counter() + times.append(end - start) + + return { + 'iterations': iterations, + 'min': min(times), + 'max': max(times), + 'mean': statistics.mean(times), + 'median': statistics.median(times), + 'stdev': statistics.stdev(times) if len(times) > 1 else 0, + 'total': sum(times), + 'times': times + } + + +def print_benchmark_results(name, results): + """Pretty print benchmark results.""" + print(f"\n{'='*60}") + print(f"BENCHMARK: {name}") + print(f"{'='*60}") + print(f" Iterations: {results['iterations']}") + print(f" Total time: {results['total']*1000:.4f} ms") + print(f" Mean: {results['mean']*1000:.4f} ms") + print(f" Median: {results['median']*1000:.4f} ms") + print(f" Min: {results['min']*1000:.4f} ms") + print(f" Max: {results['max']*1000:.4f} ms") + print(f" Std Dev: {results['stdev']*1000:.4f} ms") + print(f"{'='*60}") + + +def compare_results(before, after, name=""): + """Compare two benchmark results and show improvement.""" + improvement = ((before['mean'] - after['mean']) / before['mean']) * 100 + speedup = before['mean'] / after['mean'] if after['mean'] > 0 else float('inf') + + print(f"\n{'='*60}") + print(f"COMPARISON: {name}") + print(f"{'='*60}") + print(f" BEFORE: {before['mean']*1000:.4f} ms (mean)") + print(f" AFTER: {after['mean']*1000:.4f} ms (mean)") + print(f" ") + print(f" Improvement: {improvement:.2f}%") + print(f" Speedup: {speedup:.2f}x") + print(f"{'='*60}") + + return {'improvement_percent': improvement, 'speedup': speedup} + + +# ============================================================ +# BENCHMARK FUNCTIONS - Add your benchmarks here +# ============================================================ + +def benchmark_sanitize_html(iterations=1000): + """Benchmark the sanitize_html function.""" + # Test data + html_samples = [ + '

Simple paragraph with bold text

', + '
Content
', + '

' + 'Lorem ipsum dolor sit amet. ' * 100 + '

', + ] + + def run_sanitize(): + for html in html_samples: + sanitize_html(html) + + results = benchmark_function(run_sanitize, iterations=iterations) + print_benchmark_results("sanitize_html", results) + return results + + +def benchmark_signature_count(iterations=500): + """Benchmark petition signature counting.""" + # Setup + User = get_user_model() + from django.core.management import call_command + call_command('migrate', '--run-syncdb', verbosity=0) + + # Create test data + User.objects.filter(username='benchuser').delete() + user = User.objects.create_user('benchuser', password='test') + pu = PytitionUser.objects.get(user=user) + + petition = Petition.objects.create( + title='Benchmark Petition', + text='Test', + user=pu + ) + + # Create signatures + for i in range(200): + Signature.objects.create( + first_name=f'First{i}', + last_name=f'Last{i}', + email=f'bench{i}@test.com', + petition=petition, + confirmed=(i % 2 == 0) + ) + + def run_count(): + petition.get_signature_number(confirmed=True) + petition.get_signature_number(confirmed=False) + petition.get_signature_number() + + results = benchmark_function(run_count, iterations=iterations) + print_benchmark_results("get_signature_number", results) + + # Cleanup + petition.delete() + User.objects.filter(username='benchuser').delete() + + return results + + +def benchmark_petition_queries(iterations=200): + """Benchmark petition database queries.""" + from django.core.management import call_command + call_command('migrate', '--run-syncdb', verbosity=0) + + # Setup test data + User = get_user_model() + User.objects.filter(username__startswith='qbench').delete() + + users = [] + for i in range(5): + user = User.objects.create_user(f'qbench{i}', password='test') + users.append(user) + + for i in range(30): + pu = PytitionUser.objects.get(user=users[i % 5]) + Petition.objects.create( + title=f'Query Bench {i}', + text='Test content ' * 50, + user=pu, + published=(i % 2 == 0) + ) + + def run_queries(): + # Typical view queries + list(Petition.objects.filter(published=True)[:10]) + list(Petition.objects.filter(title__icontains='Bench')[:5]) + Petition.objects.filter(published=True).count() + + results = benchmark_function(run_queries, iterations=iterations) + print_benchmark_results("petition_queries", results) + + # Cleanup + Petition.objects.filter(title__startswith='Query Bench').delete() + User.objects.filter(username__startswith='qbench').delete() + + return results + + +def main(): + """Run benchmarks.""" + print("=" * 60) + print("PYTITION BENCHMARK SUITE") + print("=" * 60) + + benchmarks = { + 'sanitize_html': benchmark_sanitize_html, + 'signature_count': benchmark_signature_count, + 'petition_queries': benchmark_petition_queries, + } + + if len(sys.argv) > 1: + name = sys.argv[1] + iterations = int(sys.argv[2]) if len(sys.argv) > 2 else 100 + + if name in benchmarks: + benchmarks[name](iterations=iterations) + elif name == 'all': + for bname, bfunc in benchmarks.items(): + try: + bfunc() + except Exception as e: + print(f"Error in {bname}: {e}") + else: + print(f"Unknown benchmark: {name}") + print(f"Available: {', '.join(benchmarks.keys())}, all") + else: + print("Usage: python profiling/benchmark.py [benchmark_name] [iterations]") + print(f"Available benchmarks: {', '.join(benchmarks.keys())}, all") + print("\nRunning all benchmarks with default iterations...") + for bname, bfunc in benchmarks.items(): + try: + bfunc() + except Exception as e: + print(f"Error in {bname}: {e}") + + +if __name__ == '__main__': + main() diff --git a/profiling/results/.gitkeep b/profiling/results/.gitkeep new file mode 100644 index 00000000..5b00ff17 --- /dev/null +++ b/profiling/results/.gitkeep @@ -0,0 +1 @@ +# This file keeps the results directory in git diff --git a/profiling/run_profiler.py b/profiling/run_profiler.py new file mode 100644 index 00000000..14ad0587 --- /dev/null +++ b/profiling/run_profiler.py @@ -0,0 +1,328 @@ +#!/usr/bin/env python +""" +Profiling script for Pytition project. +This script runs selected tests/scenarios with cProfile and generates reports. + +Usage: + python profiling/run_profiler.py [scenario] + +Scenarios: + sanitize - Profile HTML sanitization (default) + models - Profile model operations + signatures - Profile signature creation + queries - Profile database queries + all - Run all scenarios +""" + +import cProfile +import pstats +import io +import os +import sys +import django +import time +from pstats import SortKey + +# Setup Django +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'pytition.settings.test') +sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'pytition')) +django.setup() + +from django.contrib.auth import get_user_model +from django.test import RequestFactory +from petition.models import Organization, Petition, PytitionUser, Signature, Permission +from petition.helpers import sanitize_html, get_client_ip + + +def setup_test_data(): + """Create test data for profiling.""" + User = get_user_model() + + # Cleanup + Signature.objects.all().delete() + Petition.objects.all().delete() + Organization.objects.all().delete() + User.objects.all().delete() + + # Create users + users = [] + for i in range(10): + user = User.objects.create_user(f'user{i}', password='testpass', email=f'user{i}@test.com') + users.append(user) + + # Create organizations + orgs = [] + for i in range(5): + org = Organization.objects.create(name=f'Organization{i}') + orgs.append(org) + + # Create petitions + petitions = [] + for i in range(50): + pu = PytitionUser.objects.get(user=users[i % 10]) + petition = Petition.objects.create( + title=f'Test Petition {i}', + text=f'

This is test petition number {i} with some HTML content.

', + user=pu, + published=True + ) + petitions.append(petition) + + # Create signatures + for petition in petitions[:10]: + for j in range(100): + Signature.objects.create( + first_name=f'Signer{j}', + last_name=f'Test{j}', + email=f'signer{j}_{petition.id}@test.com', + petition=petition, + confirmed=True + ) + + return users, orgs, petitions + + +def scenario_sanitize_html(): + """ + Profile sanitize_html function - potential bottleneck. + This function uses lxml to clean HTML and remove XSS attacks. + """ + html_samples = [ + '

Simple paragraph

', + '
Malicious content
', + '

' + 'Lorem ipsum dolor sit amet. ' * 500 + '

', # Large content + '
' + ''.join(['cell'] * 50) + '
', + '
' + 'nested content ' * 200 + '
', + ] + + results = [] + for iteration in range(200): # Run multiple times for accuracy + for html in html_samples: + result = sanitize_html(html) + results.append(len(result)) + return results + + +def scenario_model_operations(): + """Profile model CRUD operations.""" + User = get_user_model() + + # Cleanup first + Signature.objects.all().delete() + Petition.objects.filter(title__startswith='Profile Test').delete() + User.objects.filter(username__startswith='profuser').delete() + + results = [] + + # Create operations + for i in range(50): + user = User.objects.create_user(f'profuser{i}', password='test', email=f'prof{i}@test.com') + pu = PytitionUser.objects.get(user=user) + petition = Petition.objects.create( + title=f'Profile Test {i}', + text='Test content ' * 100, + user=pu + ) + results.append(petition.id) + + # Read operations + for _ in range(100): + petitions = list(Petition.objects.filter(title__startswith='Profile Test')[:25]) + results.append(len(petitions)) + + # Update operations + petitions = Petition.objects.filter(title__startswith='Profile Test') + for p in petitions[:25]: + p.title = p.title + ' Updated' + p.save() + + return results + + +def scenario_signature_creation(): + """Profile signature creation - often a bottleneck due to validation.""" + User = get_user_model() + + # Cleanup + User.objects.filter(username='sigprofuser').delete() + + # Setup + user = User.objects.create_user('sigprofuser', password='test', email='sigprof@test.com') + pu = PytitionUser.objects.get(user=user) + petition = Petition.objects.create( + title='Signature Profile Test', + text='Test content for signature profiling', + user=pu, + published=True + ) + + results = [] + for i in range(300): # Create many signatures + sig = Signature.objects.create( + first_name=f'First{i}', + last_name=f'Last{i}', + email=f'sig{i}@proftest.com', + petition=petition + ) + results.append(sig.id) + + # Query signatures multiple times + for _ in range(100): + count = petition.get_signature_number(confirmed=False) + results.append(count) + + return results + + +def scenario_petition_queries(): + """Profile complex petition queries.""" + from django.db.models import Count, Q + + setup_test_data() + + results = [] + + for _ in range(50): + # Complex query with filtering and related data + petitions = Petition.objects.filter( + published=True, + moderated=False + ).select_related('user', 'org').prefetch_related('signature_set')[:20] + + for p in petitions: + # Access related data - triggers lazy loading if not prefetched + sig_count = p.signature_set.count() + owner = p.owner_name + results.append(sig_count) + + # Aggregation queries + stats = Petition.objects.aggregate( + total=Count('id'), + published=Count('id', filter=Q(published=True)) + ) + results.append(stats['total']) + + # Search-like query + search_results = Petition.objects.filter( + Q(title__icontains='test') | Q(text__icontains='petition') + ).filter(published=True)[:10] + results.append(len(list(search_results))) + + return results + + +def run_profiler(scenario_func, scenario_name): + """Run cProfile on a scenario and generate report.""" + print(f"\n{'='*70}") + print(f"PROFILING: {scenario_name}") + print(f"{'='*70}") + + profiler = cProfile.Profile() + + # Run with profiling + profiler.enable() + start_time = time.time() + result = scenario_func() + end_time = time.time() + profiler.disable() + + elapsed = end_time - start_time + print(f"\n>>> Total execution time: {elapsed:.4f} seconds") + print(f">>> Operations completed: {len(result)}") + + # Generate stats + stats = pstats.Stats(profiler) + stats.strip_dirs() + stats.sort_stats(SortKey.CUMULATIVE) + + # Print top 30 functions by cumulative time + print(f"\n{'─'*70}") + print(f"TOP 30 FUNCTIONS BY CUMULATIVE TIME:") + print(f"{'─'*70}") + stats.print_stats(30) + + # Also show by total time (time spent in function itself) + print(f"\n{'─'*70}") + print(f"TOP 15 FUNCTIONS BY TOTAL TIME (excluding subcalls):") + print(f"{'─'*70}") + stats.sort_stats(SortKey.TIME) + stats.print_stats(15) + + # Save to file for snakeviz visualization + results_dir = os.path.join(os.path.dirname(__file__), 'results') + os.makedirs(results_dir, exist_ok=True) + profile_file = os.path.join(results_dir, f'{scenario_name}.prof') + profiler.dump_stats(profile_file) + + print(f"\n>>> Profile saved to: {profile_file}") + print(f">>> Visualize with: pdm run snakeviz {profile_file}") + + return stats, elapsed + + +def main(): + """Main entry point.""" + scenarios = { + 'sanitize': ('HTML Sanitization (sanitize_html)', scenario_sanitize_html), + 'models': ('Model CRUD Operations', scenario_model_operations), + 'signatures': ('Signature Creation', scenario_signature_creation), + 'queries': ('Database Queries', scenario_petition_queries), + } + + # Parse command line + if len(sys.argv) > 1: + scenario_key = sys.argv[1] + if scenario_key == 'all': + selected = list(scenarios.keys()) + elif scenario_key in scenarios: + selected = [scenario_key] + else: + print(f"Unknown scenario: {scenario_key}") + print(f"Available scenarios: {', '.join(scenarios.keys())}, all") + sys.exit(1) + else: + selected = ['sanitize'] # Default + + print("=" * 70) + print("PYTITION PROFILER - Time Profiling") + print("=" * 70) + print(f"Selected scenarios: {', '.join(selected)}") + + # Run Django migrations for test DB + from django.core.management import call_command + print("\nSetting up test database...") + call_command('migrate', '--run-syncdb', verbosity=0) + print("Database ready.\n") + + results = {} + for key in selected: + name, func = scenarios[key] + try: + stats, elapsed = run_profiler(func, key) + results[key] = {'time': elapsed, 'status': 'OK'} + except Exception as e: + import traceback + print(f"Error in {key}: {e}") + traceback.print_exc() + results[key] = {'time': 0, 'status': f'ERROR: {e}'} + + # Summary + print("\n" + "=" * 70) + print("PROFILING SUMMARY") + print("=" * 70) + for key, data in results.items(): + status_icon = "✓" if data['status'] == 'OK' else "✗" + print(f" {status_icon} {key}: {data['time']:.4f}s - {data['status']}") + + print("\n" + "=" * 70) + print("NEXT STEPS:") + print("=" * 70) + print("1. Review the output above to identify bottlenecks") + print("2. Use snakeviz for visual analysis:") + print(" pdm run snakeviz profiling/results/.prof") + print("3. Focus on functions with highest cumulative/total time") + print("=" * 70) + + +if __name__ == '__main__': + main() diff --git a/pyproject.toml b/pyproject.toml index 75fd2eea..cb8533b2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,63 @@ distribution = false [tool.pdm.dev-dependencies] test = [ - "coverage==4.5.2", + "coverage>=7.0.0", "sphinx", - "sphinx-rtd-theme" + "sphinx-rtd-theme", + "pytest>=7.0.0", + "pytest-django>=4.5.0", + "pytest-cov>=4.0.0", + "pytest-mock>=3.10.0", + "pytest-html>=3.2.0", + "snakeviz>=2.2.0", + "line-profiler>=4.0.0", + "memory-profiler>=0.61.0", ] + +[tool.pdm.scripts] +# Django test príkaz +test.env = { DJANGO_SETTINGS_MODULE = "pytition.settings.test" } +test.cmd = "coverage run --omit='.venv/*' pytition/manage.py test petition" + +# Coverage report +coverage-report.cmd = "coverage report -m" +coverage-html.cmd = "coverage html" + +# Profiling príkazy +profile.env = { DJANGO_SETTINGS_MODULE = "pytition.settings.test" } +profile.cmd = "python profiling/run_profiler.py" + +profile-all.env = { DJANGO_SETTINGS_MODULE = "pytition.settings.test" } +profile-all.cmd = "python profiling/run_profiler.py all" + +benchmark.env = { DJANGO_SETTINGS_MODULE = "pytition.settings.test" } +benchmark.cmd = "python profiling/benchmark.py" + +# Pytest príkazy +pytest.env = { DJANGO_SETTINGS_MODULE = "pytition.settings.test" } +pytest.cmd = "pytest" + +pytest-cov.env = { DJANGO_SETTINGS_MODULE = "pytition.settings.test" } +pytest-cov.cmd = "pytest --cov=pytition/petition --cov-report=term-missing --cov-report=html" + +[tool.pytest.ini_options] +DJANGO_SETTINGS_MODULE = "pytition.settings.test" +python_files = ["tests*.py", "test_*.py"] +addopts = "-v --tb=short --color=yes" +testpaths = ["pytition/petition/tests"] + +[tool.coverage.run] +source = ["pytition/petition"] +omit = [ + "*/migrations/*", + "*/.venv/*", + "*/tests/*", +] + +[tool.coverage.report] +exclude_lines = [ + "pragma: no cover", + "def __repr__", + "raise NotImplementedError", +] +show_missing = true diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 00000000..dd69ff21 --- /dev/null +++ b/pytest.ini @@ -0,0 +1,27 @@ +[pytest] +DJANGO_SETTINGS_MODULE = pytition.settings.test +pythonpath = pytition +python_files = tests*.py test_*.py +python_classes = Test* *Test +python_functions = test_* +testpaths = pytition/petition/tests +addopts = + -v + --tb=short + --color=yes + -ra + --create-db + +# Markers pre kategorizáciu testov +markers = + slow: marks tests as slow (deselect with '-m "not slow"') + mock: tests using mocks + stub: tests using stubs + fake: tests using fakes + integration: integration tests + unit: unit tests + +# Ignorovať warningy +filterwarnings = + ignore::DeprecationWarning + ignore::PendingDeprecationWarning diff --git a/pytition/maintenance_mode_state.txt b/pytition/maintenance_mode_state.txt new file mode 100755 index 00000000..c2270834 --- /dev/null +++ b/pytition/maintenance_mode_state.txt @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/pytition/mediaroot/julia/logo.png b/pytition/mediaroot/julia/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_1C6tbdE.png b/pytition/mediaroot/julia/logo_1C6tbdE.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_5xLJcfM.png b/pytition/mediaroot/julia/logo_5xLJcfM.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_6ZKSqbj.png b/pytition/mediaroot/julia/logo_6ZKSqbj.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_9pR014r.png b/pytition/mediaroot/julia/logo_9pR014r.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_DpisGTq.png b/pytition/mediaroot/julia/logo_DpisGTq.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_Efp31Gz.png b/pytition/mediaroot/julia/logo_Efp31Gz.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_GCqm05a.png b/pytition/mediaroot/julia/logo_GCqm05a.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_IljBoKg.png b/pytition/mediaroot/julia/logo_IljBoKg.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_MDkoIbr.png b/pytition/mediaroot/julia/logo_MDkoIbr.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_PRgFUU5.png b/pytition/mediaroot/julia/logo_PRgFUU5.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_RMvZBjw.png b/pytition/mediaroot/julia/logo_RMvZBjw.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_SZkJTCs.png b/pytition/mediaroot/julia/logo_SZkJTCs.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_VDH9pji.png b/pytition/mediaroot/julia/logo_VDH9pji.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_VRz4Lzt.png b/pytition/mediaroot/julia/logo_VRz4Lzt.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_WoSPtAP.png b/pytition/mediaroot/julia/logo_WoSPtAP.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_YzXxIxc.png b/pytition/mediaroot/julia/logo_YzXxIxc.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_bqpipBB.png b/pytition/mediaroot/julia/logo_bqpipBB.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_c3j6N91.png b/pytition/mediaroot/julia/logo_c3j6N91.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 zcmYM5Wl$VV*M=8&cY?dS>!JaIySux)h2R9YAi)B`Jp_jUi@Q4ncMIu#Xl{+bYkPoeT(iuG>6WX z5{X7IrjP@}!7a<2TbcQoU97iWWSu_+dHW|+93N*bujh%51@u$y2F~6jwq_+F5ZAu{Me%(h(YhXH@rv3>; zDdP8!rcI_$wd47`T}w;raGV6|Yr9{2(Ln67jm}WnTk{os=#>YgmCjIKe4Ej7@ z^QW7m-n3MDmEip>n<>^(m3-wusE_0+kYgze3+np45$0OlPl~7Rt%kBcIL%}}RR8yR z`=;!rZBL{Naji~oZWM@!h^Xviz**Cx!lzI9f&b*GmS8kwO%(YzG?vAUqXpUO1Ezm)>)%K4ycI$0s1@zFjcr zlV!=UYIa)v9r*aKp`l@`CYFWy z)*ir}x|+BHSF*FSd&+8pF-H%sX`_C>e%zY=NUkJMf9m}l28R;)tdL5m&VlN2(Ru&$ z`UZ=A63@Rucs{CV?px=7YfnjT?mz4s(*)emR@WbzNCaA1T9(nfOx-K7na8_T7aYSk z8d-*kJW=LAIdU8~tjhNGfcLjo7$z<3O@z~xrpoRp$Zgf-IREC2ugFz#+OQ?Cnt6Oq z`VtZn`uf>DrkLm?a^@|j&8tpOzkdHdUvFu&1FS z>b2_BY-MG2+l(oXilUq+@_5=fS!2>IW<7FucNcs>mgt_(ZKFIEc;0qWBk&9*|CPbe ztsjr`!+jVE8%072xWj|Q=jL$QHyV#y37Z=8ipS8$$0wvQUWp}jSo$jh0hO?Dz)Z3H ztEdk)HPn@23vbT&>o^}@{hG7S7!MvE-m9n^HZ^QkRu(5h*5m8joArkrUA9bS>+Gz z0ft2yEs>g1h*WU^` z;e)`B{rvk%S(EfAEzXFl>dK<-<`J@1m;;9VaIzP|8(3B@ra$dVuQ z^7-AN5qsgFt2V8U?sNmH$2ZsgS0@*%^sXE8Ur#d(oQXCLZ~)8uC-M=YUPwqN&;Pjm z_GB@jb0h7hDwh+73IDa>`tp3hsHbGoQbB3Ir5seKSk@!O`spQ9AS%qnjSOBxf(LFw z*OPig`wazxjIEH3uP}4@mVbZtY`@tR1URCXm+Q%>WP=!6F*|p~GQ)?Kr|EnDzWeTCCRJWpwMpF%Xa zPPz#}=%=cW+Un3?1nC)r9cR^r=J?R>&yVzATw zc3b=Ud_S2h=z(}5P*3OvS^4d>Dup5H`S%Z0gk-s@!$4lQ>vmJO`q50UlKc5dBI|fm zCmD<5=ws(yO=IL5r=&-C7D03}OIpTdVM`Nr5Q9}|bdwZLq2I@^1(Mb5*&(SHU&L2g z2Xb7x9*2^tsp;W4<-W3*zuq->2kj<*1c8{Ee!9-AU1h$Dl$eru4@&*@5bkjPXBMhR zw-bY>7*34kW+#J*iYO<0T^M~K6~s_b!PbkiV}(q^znggf90Urr7)&_Z?0yeu)I67) z)&=}$``gnAx!*2Umg3J(@|A7>?v9#Y_?kjZGO@U!TD2PY6!6?yHZMG~grHC3D3>_* zlmwXMrvDzo_fAa13ZMJAwa0kT_C-J|YU`opZvzgJ$Wb(b5Vf)2UFbWopA4Iwje>$Y z)vJeVMMB1^-bbpw6)H`ZxI;sK)8`1@ukIFYbnsZ+Vi(BRyS@tOyi1TZ_=vMW+Xt;! z%#8aqhE@DVF zwt`-Nhlrl!bO=jGrtf6b>#Fk2EJcW3#A*l6xQY*o@wLjXN3QMJk{LCNO%ak-#Bm#t zp_B9thv65V0H-1v^yCRR$uX|@Kvax+?~9F~*W1PGzQGxfIHp=XHC+$RbJ~aSFk?b< zOoe@xW6}CWv!+Y=anbKmen|T@9>5Rs9$AxezMdB)S<LzM7BsQz0*hLOdI*u+=F~u{h$eE}S1ylB__P z;`nyV{LBnjT^p$#p^$mCVXOOmh1ODQ`bh3E3RM+$^6JAxm-qnpX3+EEM?-JsW2c$x zSey4_ytydz_}Gf8XnO3je7O^iEHpTw@4jy^uvO5z@lc4X^O*{%*-j4PeFjw!&39D` z2LA{kOPcQ|Fj1^yg4PerU5VN077AEJf4jxX9GA2uOt^)axdemn-jUo3XekU#AjZ(( zm@%oXThMj~=!6Iy*ldVr*w3@ia5)_oZcs&F?7P+Vd>)qqa!_*XA#;w`Ag?J&h(f|f z`O6a?8jS@?K?uda37fVk+*+gXM$a8g!aPleMjSU52;FuSD4LsRkSvO}YF^C`d3$W$ z@Mj+QAVGm$4EA z#{ShnIJz!Z4K|8TmnB1D@l};#A16#2Yt)oOv>0QQI zMEe473c5CvrNd_12zeYe=>qb#G&6M zqJ6*1y_1J_9Ji(~Rt*i2OQEW0*n9ST>GOl7HrItg;2x0HIV^LPr-Db0+|y|ZOjeH= zMM|!s%7NQLA{11zBsiz~xE@CU;gEJ?DN*=B=(^lWX0mi7#Vi0EoecnC%SJ<~{OTt!t=2T`pV$oR}(sB$W zNT6+5k~9=p;Nl{OnPg^2xQ}BrgVo@d?X*>y^Sd?dZuRiE8S`S;Y{Qg_ z=6>Q%wrxXxFZMngWt{ibzW>aprE2=+J8Y%+_d8pXMUZi`!Vi^U*6H1Z+5JqLj7d|= z28Mc7>F6zN%tB5?EQja=VOsRQ%PJ0TZVzBM9V4&#LaC@gGL_fO{EDuvo)>un)ASO=mPV=D&4!0YRUk`YyPIovfF$eke5Q2S2jU(2pVE^QDC2>Pq$` zjQ*iWfe_;=C@7$liM04!Y&35M2lPdvZ8`^zB^iCw;Pn|>t8B`8aST#`L?eFrpc1^} zx%7Z)#nq}{qiXM2{QZP{$U<#$Oq?x^Q7b9A5-saE4OO;8>%+`#e`+0=u^5jmi;AwJ zCP^CRCH!6@EdtXUb9c>U(Euf~Ppm zLg-pq$w}ybw#nyj@TUz2TgeUf!n7#E>ym_7;w_I170&6}l7x|_gpnqNkz(?o7Sz{Y z-FLrt)@8W6yW88_BLgoK6q~VcKpAMHuW!#m2(P{)6}Cl>4>DbAaa(P6F#*yQAmQ7o z%kKQxefPRke#9@nd=NAwre%WiJLEMFgZyryKDdbz<_CI&u_cRU@drfkm@Wf_ZiMy6 zJw`h>EHwPgi}Uky{4P9Bc6Jva&(-*;$jHjN*S&jikeGBtNFAmd80Gf(Z*R6#CFJR- zRQz!_wPxp8Jiy$oXYO$s@4!mOh(d#5I>YsYf!<3G`pJFeY{L(9TZw)yUQDLT!fzMU zyL`BQa$s>@Z}c^G=x7rBQ2pvE!c5K@9#;0j0!0vk3 z5_KWch3~>XMGm?{d;e~3Ze~CYFl7}L*d_%)4;N91tpO?8| z)aFttMMJRE>OSX?lF0~pK~@dnS5iK-S9q2vI9You*H#P{Ge(sjIr;)tV!9y}F|**p z#4N9dL*@R8kq<82kL0~lz2CA1zjV)Kj4s6x_4 z6NFIo#Y9uk(J=L?;9k^iK};LW2i31HSX|S-aLHYkmy8;_Hh(vl%=?x;&|L<+2G>;2 zZp`l-AKsBTas2+(+9ka4>}7P{=5_K@DaRWalD>G{_3N6ep}qa_Ov$Ha$K`)(9+Oa@ zK;!1t&ZFIrCwDJfKQq={GAG{a*;u)Abu*1uK%_ylB6`~3ViGedfs;UEMc~b z&HUBm^;n0!>w&8KICt{IYq{Fy-f`o3(4grk`Ihljtafy1i_6>hj4prl++!t>P58tO zMG>yV?dUT|O&?5YBl(EE1_koSWS~U+81tE$KLSa*4w=FayjFqKHUkp#SK;lx%CgCe zX+B2yjCG8RvLLgsb;05%iKzIh z4%37d1u7F9OlS?sTL%Tu5&ERDp0NBQ=}fKaNR|q%3gZmC4QYl-vY*9#s+f3D?i~Op z;fnK*s5mb47;IWku@OVjh2xxTiYNW{xx-P(OJ<;ldflMe*-PkqOhQWnw0S+t>dJ~e zUk#ADTS8w^M6a$eumqGFU~b zrH`dj&X`B&N@71j5y6bP&L9WQZXUWHJs=RZh=C#*Z3yn3JjocwV_bfGsxtSpjw!68>Sa>1qs6}|sza_fL9|mXPbhmCq90(A z2*d2NUVzP9-vH{F5ZHQ(a3v)rKowf=47kq|4M-ptC$kdV{Zm0%u8=-(aNSDEhgc|^ zU-W5m+G>BaiIK}FL()Oj_69t_FvqA6Uo+WJ#^atY`%`sTi&!EAbN+Vf!o6T1^0tLy z@L#v3JKPV|;dy=dAqrM}WRNI66WbEyG4b>Y#bbDk=jV-HMO=zo?OjY&wTjWnPZx(g z`C>u(vEFf!X4Dyz2bHz8o9#Xqz-@Y;uh})mJaGlt3-xiZMHyvgWErdeocK_xFuYJ~ z?ZEYq$8Om@J%gkS350b$K!&33d=tHx;&8*jifb<_P0Wk^odD5$ZJ#2aAqV9Cdq_K0 z8zJ=TWEkS-aAFiu7%dApjkI{qCC4EDzks?_zhYAdB*jflO=oMZ*So{1Kmd!vAQuaM zX_<@~-&S|}8ghgg)QL9ZK|CVxn z5mXI~d3JV&6qG-tiaBatFLJ-;5%SPSUgk18S5j<;dX#0w`;;ON)NFXfZ&^~gF#2E) zPKun2O?1~!U*-gRm>@;T>-^vrF8@S~IH#>Gq*&8L_~<8LHRexfY=1>R&UD<;K3{3U zeI#b-lzsl-(%}XOR09kn6iKe;O}~DPW%E`x;us*y)~Ft$ma~lFDQ4%0KOg_vjuBv$ zoe9Nnps|%2z(c{qI-RbJw`A={gyPgz`IxJ+DH|$sHEEY38ih0J*a}iW!M2Jcc=tvX^QHKhRnE_r zaOn>e#aH*+*VNHJS||z|zTH=sTYc5l)iN?NDZG3MfND3dW72ui^-LH!U23Cba;N$9 zt>P~_Ry?%aIPMDElrV0R493ol{RoRjWKeh1@8p*LyFCuBlBKN&+|5MD)ngzdoYj(85za?l9LegxO_8Lq(qGYj<80H@8bqwb z^i>goG|{*C;UvViH!$u8&<)l6jCUK#3c#>#cxh=dI1Z1wDZIp?7>Ghp0@>RWqks1=I--T5p%{j#qh#TKgRxZYEYnt0qu``YHJ9*_)Lyyh51y+sReM$8O5gbUyOI< zDJYO7n0U8CLT$d5#>Z)qoOtLdz4#<9>S$+6V!;>Z7BTsRt};>1hkYHBLt*n%5V23i zoWTKH6k)t?%uP<(r_@O0=`qN%X-@G0*?+_LyD#cuIP3AZ0k#E~#^YRV^2<*2~K zWOAgE)F~jXX( z5QW?@#VO;pc!V&GB)@J#9zXw48~DV!v-Mr(|04!gUs@Xr!R4(n9T90XxuQ(j#PH8Od@aZg6n*0vrgj-6Azvek~YOn0U3VX_w| zK5lYvUL6&mQJNAOpE0Nck_;#iY6K4KPpU!~{oYL)!l^J6!7W-${zwWDECk*B()-ow zpBX>IR4(J86e0ruh5x#CXn-?gf|``}>NLego9~b?of=&~|J&kPn##rOe3|r3*SWd9 zxml-V;ShNQNncgi4a*1TBR%>BCA2>Ug<}Q>^pCHfIfdN9QV;_f^c7~(`oky9_yCM+1|(IuQ)YHCp_*H7Imcrpwd-TTYSX zZ8=r3X3BaW=NG0MIfxstN4(5_z#R#yC zn~j?MR%#kHVAmEo)m0<>b|ojR$jAmX&um3S9gBwBA2IH2GG=uZ& zCEg1tbmZUH{B_*~>!|!R`|v6MFFe|mI!tA&FQ=vq%p9dU{=gi>{tmcR@logV;8|{x zIm|Q6Am2LknBjI1a5_ZMqmv~#$v&b%og*W`$)svatKf4ICtVA&h_z2!INs_D84Y;b z=y1abFy-&MXGv1FpB8bdh;WE{ekZYZ?A_#SQl2$XrKlU~_!o6A#9e83_{o|=JN7FI2uHRc%o)YftN zaMI8|PI|uKAy$gU!8KGLNUVJ6uN<$RoK={^Ls?xx#Z9f0o>ll=Ka11P+~51Btf^!4 z7Moh9*_ht6Ep#Ca8g53u)%CzIL#LwLgMmuv_*Be6RKvzjaK*-+kmv;OkS2Ql967?#QGOt;;_IUavP(xr z2ZxDDDa!H|?KqP2=WuMM;Ooc+WNsHRa@2G|%4;&3i8P-jg(mcE9})1l24W2H6m)ng zU0}Fs-TmuD)16SjgkXR^OFRPUIxANMvSb3zy@QA*liy>@*tLT@TPMon6Nrp`N|N?3WfFG==WEP3JZrpzYftiZ3&E?B)-%t15%X6`Hzn`@N2r;m!s96s zTr*2~*Lm!}Ib5$Q=AXVqP%`20U%b<%mXd7w)HHx#rY@+GF1 znRHO0q2y_{Y8`cq;KJhNIZDEvZ00(4XRckjP~xCZPZg*5^K^LJK7J;C>D{}2IV&>c z16k{A5fNnvQ|MGvj1~G3K3gx7qeXy@tJdbUS^Wb))T4+qOE{^yF0OKtGDpK_Y&^_? znisa`R`$(fv4+75FSjroT+}{Wo{{=~yHuve5rtVg9qY;5Z0?@|TD2PJHG~(QP+v5e6H^sWtN2 z!7BpUJ10@wSak{_48(3fHRB_2Q`r7KnKnEr;S+!;sHvr9vSYyJ<^b*>=5T(EIm4s| zqYu3)d?J1=#G#g+Tw~&?_ef5jpP5DZc(#-;(MN$?3F>q~1e0XN`G_zEr?z~2zRRwf z!XwNUv5!vw{(Zb%5*(S$&>P)?Rj3+8$%F!um}0J*oeuhaed5!(1=XeS*xCKf?Kwn+ zkvx;_tOTmT2x(D@M+9?Pcbk$q)-I-|{&I}*gAAOZz=Eo}I#m!W90g}RAaz1tVAW$; zBjOo=ysQ~)dJ7&@!PkXBX%3sWZD@Y?!wuw0Z+#ZxNq0p_pJEKIROKite5pRhH6Y)H zhW0Yq^FpZsPw_)w8He3WF=Q@%uF>;>z_%foJgU=BnqdhlniwVC1B`OwMm+f)^X#0#Amgou<`o#Tc^hl#+XKU=jabR?j~fG97VCuvC>8@>lN(Yn*Zu1q+?mQro~@jogoWh+RD=Jb9zfNzJf|s zM~4Vv;pQB?tDTHKJr{oLIgGA)G+m-6S0{QL8!cfeGD)%{UP%& z>ARwiFVNa>`~i+XFXsrF^xeiWO6ChS2MHXImBu~_*+L7kLh>J{VhCy1z&7)l2-RFf zFrb$GYzLZZPE;UIjEzMGg>Ihw6B^UaXAfkTWlMEUOX^sK!f%HLahpszc|~m`R;Ugg zOtNO2Q@Ltjt@EqlsnFyf#?qe)VuhOGC3jDCU`2hr{AWN{I;x|o2{d7-7>{Gok7D`_ zSmKp0P6eYJ@im2<69*Anl?Sy(oA0CaA6r_rdfX3=c@R#G!gom0dD{()8 zIrBEF!fte>N-KevDbK%2N)K(oy4^p@RSeDeXw!@@6-TC=>1`)BNnQ_jq%Da=4IOGEuauo!xU?^C{n1!Qbw z7$`RA$w_$On)J3l4fi4*HI;+f+S=a3w3%|67M^k{Eb+2^;!8(Dejw8=25D7^v9uTw zi=RMCNI-cGa4jjQOvFjK$IaW6in!7>xx|ToNOQlPNuQ{I8Oh#Xmgc4`qv|FNX>9{d z2$6^~va_;?S^|Hobi=5VP|RV)N5mp|?-Dw4GIix}3qaIG(&7a^A9lrL2yRGG62)A7 z%K!=gpny`+zj|2J{;_y~0GeA^K>z*QoRShUGCF$FNF~(S*(h)77zWmj*lf@pIXqE_ zUHA*eoTY(~gJWxa%iLql8KKnSIY(j*1V}{bHWPLDf`W#6G16NPi{gr_gov@ZZf#y3 zu7tf$>kJe#W`Q1{GTPt=hFma2*cu|YT__lCugPV8^#~#1LA6t)+Q#Yyr7SUI{wMrk zL4>G#p2a+Ge7hZ7&sJPE@6sQqkUoTe9XzQmFJEqPqZZeuD3n922W}M#6r5jsa7a+n z#1C_-jN=pMi!Imk0b=^O48A+R;E4`=a;$NyO0t6`r@e*5Pz9}~7x6)-r*w9_I-v3S zQHfNU|G@Ln@O-Ga89==N)unu%^Wc|!XgFq^PXq{5JKE#F?w$_c>0Wh4RUISG%-KUG z#Nk$jEx_L9QdHqf1BF}4lFoLBr}i}o(JC3%Mp(opXytmEV1m7iw<68GF+KPGr*`FH zjgc@%;kZ{Hwcq?>nhF|Iad0vfq?EGLR8zWo=>`*;wh60d3j>qj@;UODSAMxNI! zJS83X-iQWQ1mvw&HXn<)%IX}a3-@Mkzhjl94+bKnqGTY#=F&+qK_dy~lG&sEu`CS( z1L2^j8x-~q4pvsDDJ^_sBxM>)}U_{ju_j3Wce_xo^Ot0Pt9qUL!z4toz*S`Xde`g?-xhyLw94=Zc zM-^)7-~YY*Wuv+>%J5d4m-ja16PsR(>lUEGI@sIK%;IotkRyb1JmC~dcjC1D{+&UO zf6{=RPUeiZi$a9b|D)XY8YQe8Mgp~e=ibAKG~u^$fKKA9<(02U)#9K~ZqS=dX>#R! z14q`bJDpZ7CL%>>H2vRu55CgLJ@a+41^fFPr`$yh7QX!Tp1bT$QM%^oQ}5Q-qjI4L z$^Cl|{K~j{TahvR%w@@%0B-BCZ%8RDcXo4fnBrmcN4F7^l!VoQ`#7A#Q=MQq8{#olyOuE0s$(9|S{#I{3*xzT@>f4c;j&$P!VrrDhlWOE_K2atUXM zQ1x3W^Vn<{V-}SeqIoex#r@UAwB%W`#iUn@^@eLf<0`&yT<6<+cctyK@$<*`^WDB2 zfX^LHp#=yMzim3UPYIAa8I$10Js`X3p7c02nf#C#a&#zma4!JG#mI8wOV5)64{b?C z7@CY^8BOw~x4;T$oeK6K_0VRtNCvWt;Zn> zVur$A%U&{ej7;CPy$+`eXJ%${oZF57Dsgvlhh$5xpdT89OF&SoTfbdDNOoc;w6Yq= zLM=RbR5zMl@zqVEsXz5*xj(y#D$7tJV1VVTv}rK+C4F$J%!6S^pGwRACD9>er7Qfe z2Z8Xgmk4wMQIT(b<@n8`ctmiXMbn;(spI6`B3s*f@RJr+A^x4O<(ZQ!j=#GRTmkU7 z`(ZoI&E)x#q8{jz{@1qy)baDrFbEXk1Lx?$KN^E|^hbTZC%G-L=+WY>6xnO(*9eK~ zWExRvRK)b~K!HVm&$HjMk@f$qQ^352g>CM)$V--dJ8@k_LFErHEw`(IPWqV`NlasG*7frf>9hoThWDE2T zyRjr~`R@L0woj0x=ZluB$lDMO?A3kX@@UF>{5QtgmRnyj#}dJ(RXB~~#`=bEkXWzE z2MSw=$EPYKrc6d)pHrcBO?Pq1oHCo zCO}n%5u#tu#tS<2*u)D|%LNj4UV{H{FjX4^eY9Pm?Q-fslwl>RoWF{7GNzWss|-g4 zpk8Iuep?V0@G*Dc%OJN8Qij6W@$cV0&!t+jT)E=hXYH)z&**~2zSTQljQ$%m0%)Zg zwcYS{Kcb1}T1uNSME6UTYih%T*H5l|0j4 zUIwqj0*$Sc7?b(LC6SQ1Oq6~#8^+%ihgvk3U;5P|s|jSHD{E_k0OAJVZJwTT zF4&l1HT9sZJX9QtM-)aBDB90S4TbU6%nQ?>cx`_wPAQR;_LJ#Rm3{y2?fdDNoZn02 zv0?H2@@Cs5_Kj9$!s*ZabnztKW^C>K`eoYbR70Otf@zjHAf7|2dRReS~&SszIl{Ujp+2+Afq1>*A z0jb%UXflFjx0=2I8y6p6GTnKuPIVpb`VbV<5+Yoecek}tlk5xMhLVzTxA)h3mz7_3 zXDdxH22jjGvi$YEK{(>?DR^d{6x*i)pKk_m!e4$E(?4Go&5*M*;n756ixuQysc&OZ zL7{t%pV!IoWE&B%3j4n|ghhp@m1*8wd_J@yD6V~oxn5*%(aor=tjqyUe*gr{Y&x?J zo%5a;C+cL2Ryn3I|5q!Syg!J2uoBS-Q))XOk@P49rzWG%OZ+XtZ{br1gD+L{=YDs! zXD)%}#FnpM#CHI*ou8Wn5@9m&;J~ETTa+I;x?4kN;t#McJB04Yn+ywueF1UcrNTZ& z=0oM}d^vQvePeQZ5^EenE7^jFdXIw%0RIQ8 z#LN??vY>$CA>K?bFI^tfI--Y6dh?j|OcZ74-+JV-D*a?W20IHkI zZIb|bMCNFVNzcg{1&nD|HZ^DAa@!pl^9qr&vS^4g*_i@UmcU#FOrgm{STWt^nE<)| zbkY6(w%+bDnZvKL;#f|&4ndyW%N(_$`!r4V6 zSlcDtaQ|0JQ}bnq{M{G8z)MCr=wy9J9FFJ86-s6fuH7(mg)H(oX$|I9o6E&isfj#mf zgyrSs1;Ewu3%arNu{$VqfAjfals)zBwy`XZ+X#d26$U*%tj1dtgkJ(#;aY(kP@xu!-)--G_$Q{NruVtrqs4&vXCI~*tGA&>#XWmzS5&f`nRAk&R zKfxAKRC3eMmh*PM+bwpI&C|NSlPLb*L6Zy?JuXSz+aL;n$h+F^|2%NnackDN`y~=e z)DjLvdqevVEN_Y%!7x_B^2_G8x`>NSt;_T}{d-r_sP%ozS{K0Q>;N1+P%4#m8TZ_DAJA3haV}u%MpTF@VnScAfi!P`q`fLdg>l7ySUUN}jB^h#A->$nH9+ zX@{nUc6{HgXe*PAK7KBf6poFElh@l?{!u8PlJ}j6q&)e%Rm(H|W9H0iwgR%ygtYqbjENu_4zsFAt5+yH+DaBJ;q|WaI1F-OCuSz5 z*4u1yR^ZVdSJo=8RlNUq4kbDrapazWE9-RNgG*ISjWHk@od?-?UkEoJTYVWm1)xH>iCpPZ7)E~y~{;+JQ_wlI1o6Sm>+@3_3}X!&=Afae-nT%#ow>Rfzx2IjbmSW zhMIJP#e?h)3kQqkQ~yJny-pT626I=;YZMEQU6=7(GEtt|M%KVc#$(dw1I3-P*JYGc1j z+Su4oHKa%W*F$Y>)k~>LAvEXVF0aL=B5=grKgn4zqgN1mUB zg=Rq2ceSgfr{{N4-8_*mo*(j@DNU;=>A!S#2e4eutG}H9PPntPlXLdu_UX<0#RBJK zu3Y24qgErDbg5RBmc?)!hPAw(BoQ;L#;qIs%{jB4nwcP=XguLHj!-oslEGW}sZE$v z!Yo1%f_YAA@vuCVd=(9L7?dl;9h5v#UbvxhM?B{pV#g9>WMo8vxcc4o5EzLJJBL%D zgzFJ~ksnk^3f<9R6#{mWL54Ej|6eUDYtk_DMyBfbQgn@?4pncyzinwwWvDND(&k(Rzv; z;{Ts3r2ysxANK7B>Hl5&OtFtx{Z0S^y}#2uXYi^2V{Zoz#e(Ezl%;DVO~d{N7YG!P literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_oESqz2r.png b/pytition/mediaroot/julia/logo_oESqz2r.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_pohCcpG.png b/pytition/mediaroot/julia/logo_pohCcpG.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_sNJ8mMG.png b/pytition/mediaroot/julia/logo_sNJ8mMG.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_tq9YibH.png b/pytition/mediaroot/julia/logo_tq9YibH.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/mediaroot/julia/logo_uVNwfnQ.png b/pytition/mediaroot/julia/logo_uVNwfnQ.png new file mode 100644 index 0000000000000000000000000000000000000000..5b78c5d61dee8dbecc6933593cd5afc7fddddaa2 GIT binary patch literal 15163 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 literal 0 HcmV?d00001 diff --git a/pytition/petition/helpers.py b/pytition/petition/helpers.py index 29592230..0437eeca 100644 --- a/pytition/petition/helpers.py +++ b/pytition/petition/helpers.py @@ -9,24 +9,69 @@ from django.core.mail import get_connection, EmailMultiAlternatives, EmailMessage from django.utils.translation import gettext as _ from django.contrib.auth.models import User +from functools import lru_cache # OPTIMALIZÁCIA: import pre cache # Remove all moderated instances of Petition def remove_user_moderated(petitions): petitions = [p for p in petitions if not p.is_moderated] return petitions -# Remove all javascripts from HTML code -def sanitize_html(unsecure_html_content): - cleaner = Cleaner(inline_style=False, scripts=True, javascript=True, - safe_attrs=lxml.html.defs.safe_attrs | set(['style']), - frames=False, embedded=False, - meta=True, links=True, page_structure=True, remove_tags=['body']) + +# ============================================================================= +# OPTIMALIZÁCIA: Cleaner sa vytvorí RAZ pri importe modulu +# PRED: Cleaner() sa volal pri KAŽDOM sanitize_html() - 1000x = 1000 objektov +# PO: Cleaner() sa vytvorí 1x a použije sa opakovane +# ============================================================================= +_html_cleaner = Cleaner( + inline_style=False, + scripts=True, + javascript=True, + safe_attrs=lxml.html.defs.safe_attrs | set(['style']), + frames=False, + embedded=False, + meta=True, + links=True, + page_structure=True, + remove_tags=['body'] +) + + +# ============================================================================= +# OPTIMALIZÁCIA: LRU Cache pre opakovaný HTML obsah +# Ak sa rovnaký HTML spracuje viackrát, vráti sa z pamäte (O(1) namiesto O(n)) +# maxsize=256 = posledných 256 unikátnych HTML reťazcov +# ============================================================================= +@lru_cache(maxsize=256) +def _sanitize_html_cached(unsecure_html_content): + """Interná funkcia s cache - používa globálny _html_cleaner.""" try: - secure_html_content = lxml.html.tostring(cleaner.clean_html(lxml.html.fromstring(unsecure_html_content)), method="html") + secure_html_content = lxml.html.tostring( + _html_cleaner.clean_html(lxml.html.fromstring(unsecure_html_content)), + method="html" + ) except: secure_html_content = b'' return secure_html_content.decode() + +# Remove all javascripts from HTML code +def sanitize_html(unsecure_html_content): + """ + Odstráni JavaScript a nebezpečné elementy z HTML. + + OPTIMALIZÁCIE: + 1. Používa globálny Cleaner (nie nový pri každom volaní) + 2. LRU cache pre opakovaný obsah + 3. Early return pre prázdny vstup + """ + # OPTIMALIZÁCIA: Rýchly návrat pre prázdny vstup + if not unsecure_html_content: + return '' + + # Použiť cache verziu + return _sanitize_html_cached(unsecure_html_content) + + # Get the client IP address, considering proxies and RP def get_client_ip(request): x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') diff --git a/pytition/petition/tests/tests_CoverageImprovement.py b/pytition/petition/tests/tests_CoverageImprovement.py new file mode 100644 index 00000000..c285b0fb --- /dev/null +++ b/pytition/petition/tests/tests_CoverageImprovement.py @@ -0,0 +1,764 @@ +""" +Test suite for improving code coverage in Pytition project. +This module demonstrates usage of: +- Mocks: Simulating external dependencies (email sending, HTTP requests) +- Stubs: Providing predefined responses to method calls +- Fakes: Simplified implementations of complex objects + +Author: Generated for coverage improvement +""" + +from django.test import TestCase, RequestFactory, override_settings +from django.contrib.auth import get_user_model +from django.contrib.messages.storage.fallback import FallbackStorage +from django.contrib.sessions.middleware import SessionMiddleware +from django.http import HttpRequest +from unittest.mock import Mock, patch, MagicMock, call +from unittest import skip + +from petition.models import ( + Organization, Petition, PytitionUser, Signature, + PetitionTemplate, Permission, SlugModel, ModerationReason +) +from petition.helpers import ( + sanitize_html, get_client_ip, get_session_user, check_user_in_orga, + petition_from_id, check_petition_is_accessible, send_confirmation_email, + send_welcome_mail, subscribe_to_newsletter, get_update_form, + settings_context_processor, footer_content_processor, petition_detail_meta, + remove_user_moderated +) +from petition.forms import ( + SignatureForm, PetitionCreationStep1, NewsletterForm, + OrgCreationForm, DeleteAccountForm, UpdateInfoForm +) +from petition.widgets import SwitchWidget, SwitchField +from petition.templatetags.petition_extras import addstr, getitem, bootstrap + + +# ============================================================================ +# HELPER FUNCTION TESTS - Using Mocks and Stubs +# ============================================================================ + +class SanitizeHtmlTest(TestCase): + """Tests for sanitize_html helper function""" + + def test_sanitize_html_removes_javascript(self): + """Test that JavaScript is removed from HTML""" + unsafe_html = '
Hello
' + result = sanitize_html(unsafe_html) + self.assertNotIn('script', result.lower()) + self.assertNotIn('onclick', result.lower()) + + def test_sanitize_html_empty_input(self): + """Test sanitization with empty string""" + result = sanitize_html('') + self.assertEqual(result, '') + + def test_sanitize_html_invalid_html(self): + """Test sanitization with invalid HTML - should return empty string""" + # Testing line 29-30 in helpers.py (exception handling) + result = sanitize_html(None) + self.assertEqual(result, '') + + +class GetClientIpTest(TestCase): + """Tests for get_client_ip helper function using Stubs""" + + def test_get_client_ip_with_x_forwarded_for(self): + """Test IP extraction from X-Forwarded-For header (STUB pattern)""" + # Create a stub request object + request = Mock() + request.META = {'HTTP_X_FORWARDED_FOR': '192.168.1.1, 10.0.0.1'} + + ip = get_client_ip(request) + self.assertEqual(ip, '192.168.1.1') + + def test_get_client_ip_without_proxy(self): + """Test IP extraction from REMOTE_ADDR (STUB pattern)""" + request = Mock() + request.META = {'REMOTE_ADDR': '127.0.0.1'} + + ip = get_client_ip(request) + self.assertEqual(ip, '127.0.0.1') + + def test_get_client_ip_no_headers(self): + """Test IP extraction when no headers present""" + request = Mock() + request.META = {} + + ip = get_client_ip(request) + self.assertIsNone(ip) + + +class GetSessionUserTest(TestCase): + """Tests for get_session_user helper using Mocks""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('testuser', password='testpass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + + def test_get_session_user_valid(self): + """Test getting session user with valid request""" + request = Mock() + request.user = self.user + + result = get_session_user(request) + self.assertEqual(result, self.pytition_user) + + def test_get_session_user_not_found(self): + """Test get_session_user raises Http404 for non-existent user""" + from django.http import Http404 + + request = Mock() + request.user = Mock() + request.user.username = 'nonexistent_user_xyz' + + with self.assertRaises(Http404): + get_session_user(request) + + +class CheckUserInOrgaTest(TestCase): + """Tests for check_user_in_orga helper - Testing line 51-53""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('orguser', password='orgpass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + self.org = Organization.objects.create(name='TestOrg') + + def test_check_user_not_in_org(self): + """Test that HttpResponseForbidden is returned when user is not in org""" + result = check_user_in_orga(self.pytition_user, self.org) + self.assertIsNotNone(result) + self.assertEqual(result.status_code, 403) + + def test_check_user_in_org(self): + """Test that None is returned when user is in org""" + self.org.members.add(self.pytition_user) + result = check_user_in_orga(self.pytition_user, self.org) + self.assertIsNone(result) + + +class PetitionFromIdTest(TestCase): + """Tests for petition_from_id helper""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('petuser', password='petpass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + self.petition = Petition.objects.create(title='Test Petition', user=self.pytition_user) + + def test_petition_from_id_valid(self): + """Test getting petition with valid ID""" + result = petition_from_id(self.petition.id) + self.assertEqual(result, self.petition) + + def test_petition_from_id_not_found(self): + """Test Http404 raised for invalid petition ID - Testing line 70-71""" + from django.http import Http404 + + with self.assertRaises(Http404): + petition_from_id(99999) + + +class CheckPetitionIsAccessibleTest(TestCase): + """Tests for check_petition_is_accessible helper - Testing lines 78-90""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('accessuser', password='accesspass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + self.petition = Petition.objects.create(title='Access Test', user=self.pytition_user) + self.factory = RequestFactory() + + def test_published_petition_accessible(self): + """Test that published petition is accessible""" + self.petition.published = True + self.petition.moderated = False + self.petition.save() + + request = self.factory.get('/') + request.user = Mock() + request.user.is_authenticated = False + + result = check_petition_is_accessible(request, self.petition) + self.assertTrue(result) + + def test_moderated_petition_raises_404(self): + """Test that moderated petition raises Http404 - Line 88-89""" + from django.http import Http404 + + self.petition.published = True + self.petition.moderated = True + self.petition.save() + + request = self.factory.get('/') + request.user = Mock() + request.user.is_authenticated = False + + with self.assertRaises(Http404): + check_petition_is_accessible(request, self.petition) + + def test_unpublished_petition_raises_404(self): + """Test that unpublished petition raises Http404 - Line 90""" + from django.http import Http404 + + self.petition.published = False + self.petition.moderated = False + self.petition.save() + + request = self.factory.get('/') + request.user = Mock() + request.user.is_authenticated = False + + with self.assertRaises(Http404): + check_petition_is_accessible(request, self.petition) + + +# ============================================================================ +# EMAIL SENDING TESTS - Using Mocks +# ============================================================================ + +class SendConfirmationEmailTest(TestCase): + """Tests for send_confirmation_email using Mock for email backend""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('emailuser', password='emailpass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + self.petition = Petition.objects.create( + title='Email Test', + user=self.pytition_user, + confirmation_email_reply='reply@test.com' + ) + self.signature = Signature.objects.create( + first_name='Test', + last_name='User', + email='test@example.com', + petition=self.petition + ) + self.factory = RequestFactory() + + @patch('petition.helpers.get_connection') + @patch('petition.helpers.EmailMultiAlternatives') + def test_send_confirmation_email_called(self, mock_email_class, mock_connection): + """Test that email is sent correctly (MOCK pattern)""" + # Create mock email instance + mock_email = MagicMock() + mock_email_class.return_value = mock_email + mock_connection.return_value.__enter__ = Mock(return_value=mock_connection) + mock_connection.return_value.__exit__ = Mock(return_value=False) + + request = self.factory.get('/') + request.build_absolute_uri = Mock(return_value='http://test.com/confirm/1/hash') + + send_confirmation_email(request, self.signature) + + # Verify email was created and sent + mock_email_class.assert_called_once() + mock_email.attach_alternative.assert_called_once() + mock_email.send.assert_called_once() + + +class SendWelcomeMailTest(TestCase): + """Tests for send_welcome_mail using Mock""" + + @patch('petition.helpers.get_connection') + @patch('petition.helpers.EmailMultiAlternatives') + def test_send_welcome_mail(self, mock_email_class, mock_connection): + """Test welcome mail sending (MOCK pattern) - Testing lines 123-130""" + mock_email = MagicMock() + mock_email_class.return_value = mock_email + mock_connection.return_value.__enter__ = Mock(return_value=mock_connection) + mock_connection.return_value.__exit__ = Mock(return_value=False) + + user_infos = { + 'email': 'newuser@example.com', + 'first_name': 'New', + 'last_name': 'User' + } + + send_welcome_mail(user_infos) + + mock_email_class.assert_called_once() + mock_email.send.assert_called_once() + + +class SubscribeToNewsletterTest(TestCase): + """Tests for subscribe_to_newsletter using Mocks - Testing lines 129-152""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('newsuser', password='newspass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + + @patch('petition.helpers.requests.post') + def test_subscribe_via_post(self, mock_post): + """Test newsletter subscription via POST method (MOCK pattern)""" + petition = Petition.objects.create( + title='POST Newsletter Test', + user=self.pytition_user, + newsletter_subscribe_method='POST', + newsletter_subscribe_http_url='http://newsletter.example.com/subscribe', + newsletter_subscribe_http_mailfield='email', + newsletter_subscribe_http_data='{"list": "main"}' + ) + + subscribe_to_newsletter(petition, 'subscriber@test.com') + + mock_post.assert_called_once() + + @patch('petition.helpers.requests.get') + def test_subscribe_via_get(self, mock_get): + """Test newsletter subscription via GET method (MOCK pattern)""" + petition = Petition.objects.create( + title='GET Newsletter Test', + user=self.pytition_user, + newsletter_subscribe_method='GET', + newsletter_subscribe_http_url='http://newsletter.example.com/subscribe', + newsletter_subscribe_http_mailfield='email' + ) + + subscribe_to_newsletter(petition, 'subscriber@test.com') + + mock_get.assert_called_once() + + @patch('petition.helpers.get_connection') + @patch('petition.helpers.EmailMessage') + def test_subscribe_via_mail(self, mock_email, mock_connection): + """Test newsletter subscription via MAIL method (MOCK pattern)""" + mock_connection.return_value.__enter__ = Mock(return_value=mock_connection) + mock_connection.return_value.__exit__ = Mock(return_value=False) + mock_email_instance = MagicMock() + mock_email.return_value = mock_email_instance + + petition = Petition.objects.create( + title='MAIL Newsletter Test', + user=self.pytition_user, + newsletter_subscribe_method='MAIL', + newsletter_subscribe_mail_subject='Subscribe {}', + newsletter_subscribe_mail_from='admin@list.com', + newsletter_subscribe_mail_to='list@list.com', + newsletter_subscribe_mail_smtp_host='localhost', + newsletter_subscribe_mail_smtp_port=25 + ) + + subscribe_to_newsletter(petition, 'subscriber@test.com') + + mock_email.assert_called_once() + mock_email_instance.send.assert_called_once() + + def test_subscribe_empty_url(self): + """Test that subscription with empty URL does nothing""" + petition = Petition.objects.create( + title='Empty URL Test', + user=self.pytition_user, + newsletter_subscribe_method='POST', + newsletter_subscribe_http_url='' + ) + + # Should not raise any exception + subscribe_to_newsletter(petition, 'test@test.com') + + +# ============================================================================ +# WIDGET TESTS - Testing widgets.py coverage +# ============================================================================ + +class SwitchWidgetTest(TestCase): + """Tests for SwitchWidget - Testing lines 8, 12, 21 in widgets.py""" + + def test_get_context_with_existing_class(self): + """Test get_context when attrs already has class - Line 12""" + widget = SwitchWidget() + widget.label = 'Test Label' + + context = widget.get_context('test_field', True, {'class': 'existing-class'}) + + self.assertIn('custom-control-input', context['widget']['attrs']['class']) + self.assertIn('existing-class', context['widget']['attrs']['class']) + + def test_get_context_without_attrs(self): + """Test get_context when attrs is None - Line 8""" + widget = SwitchWidget() + widget.label = 'Test Label' + + context = widget.get_context('test_field', True, None) + + self.assertEqual(context['widget']['attrs']['class'], 'custom-control-input') + + def test_init_with_label(self): + """Test widget initialization with label - Line 21""" + widget = SwitchWidget(label='Custom Label') + # Should not raise an exception + + +class SwitchFieldTest(TestCase): + """Tests for SwitchField - Testing line 37 in widgets.py""" + + def test_label_tag_returns_empty(self): + """Test that label_tag returns empty string - Line 37""" + field = SwitchField(label='Test') + result = field.label_tag() + self.assertEqual(result, '') + + +# ============================================================================ +# TEMPLATETAG TESTS - Testing petition_extras.py coverage +# ============================================================================ + +class TemplateTagsTest(TestCase): + """Tests for template tags - Testing lines 12, 16, 25, 27""" + + def test_addstr_concatenates_strings(self): + """Test addstr filter - Line 12""" + result = addstr('Hello', ' World') + self.assertEqual(result, 'Hello World') + + def test_addstr_with_numbers(self): + """Test addstr with numbers""" + result = addstr(10, 20) + self.assertEqual(result, '1020') + + def test_getitem_returns_value(self): + """Test getitem filter - Line 16""" + array = {'key': 'value'} + result = getitem(array, 'key') + self.assertEqual(result, 'value') + + def test_bootstrap_with_textarea(self): + """Test bootstrap filter with textarea widget - Line 25""" + from django import forms + + class TestForm(forms.Form): + text = forms.CharField(widget=forms.Textarea) + + form = TestForm() + field = form['text'] + result = bootstrap(field) + + self.assertIn('form-control', str(result)) + + def test_bootstrap_with_checkbox(self): + """Test bootstrap filter with checkbox widget - Line 27""" + from django import forms + + class TestForm(forms.Form): + agree = forms.BooleanField(widget=forms.CheckboxInput) + + form = TestForm() + field = form['agree'] + result = bootstrap(field) + + self.assertIn('form-check-input', str(result)) + + def test_bootstrap_with_file_input(self): + """Test bootstrap filter with file input""" + from django import forms + + class TestForm(forms.Form): + file = forms.FileField(widget=forms.FileInput) + + form = TestForm() + field = form['file'] + result = bootstrap(field) + + self.assertIn('form-control-file', str(result)) + + def test_bootstrap_with_unsupported_widget(self): + """Test bootstrap filter returns field unchanged for unsupported widget""" + from django import forms + + class CustomWidget(forms.Widget): + pass + + class TestForm(forms.Form): + custom = forms.CharField(widget=CustomWidget) + + form = TestForm() + field = form['custom'] + result = bootstrap(field) + + # Should return field unchanged + self.assertEqual(result, field) + + +# ============================================================================ +# FORM VALIDATION TESTS - Using Fakes +# ============================================================================ + +class NewsletterFormTest(TestCase): + """Tests for NewsletterForm validation - Testing forms.py coverage""" + + def test_newsletter_form_both_tls_and_starttls(self): + """Test validation error when both TLS and STARTTLS are selected""" + form_data = { + 'has_newsletter': True, + 'newsletter_text': 'Subscribe', + 'newsletter_subscribe_method': 'MAIL', + 'newsletter_subscribe_mail_smtp_tls': True, + 'newsletter_subscribe_mail_smtp_starttls': True, + 'newsletter_subscribe_mail_smtp_port': 25 + } + form = NewsletterForm(data=form_data) + self.assertFalse(form.is_valid()) + self.assertIn('newsletter_subscribe_mail_smtp_tls', form.errors) + + def test_newsletter_form_invalid_port(self): + """Test validation error for invalid SMTP port""" + form_data = { + 'has_newsletter': True, + 'newsletter_subscribe_mail_smtp_port': 70000 # Invalid port + } + form = NewsletterForm(data=form_data) + self.assertFalse(form.is_valid()) + + +class OrgCreationFormTest(TestCase): + """Tests for OrgCreationForm validation""" + + def test_invalid_org_name_dots(self): + """Test that '.' and '..' are invalid org names""" + form = OrgCreationForm(data={'name': '..'}) + self.assertFalse(form.is_valid()) + + form = OrgCreationForm(data={'name': '.'}) + self.assertFalse(form.is_valid()) + + def test_valid_org_name(self): + """Test valid organization name""" + form = OrgCreationForm(data={'name': 'Valid Org Name'}) + self.assertTrue(form.is_valid()) + + +class DeleteAccountFormTest(TestCase): + """Tests for DeleteAccountForm validation""" + + def test_incorrect_validation_code(self): + """Test that incorrect validation code fails""" + form = DeleteAccountForm(data={'validation': 'wrong code'}) + self.assertFalse(form.is_valid()) + self.assertIn('validation', form.errors) + + +class PetitionCreationStep1Test(TestCase): + """Tests for PetitionCreationStep1 form - Testing lines 54-67""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('formuser', password='formpass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + self.org = Organization.objects.create(name='FormOrg') + + def test_form_requires_org_or_user(self): + """Test that form raises ValueError without org or user - Line 67""" + with self.assertRaises(ValueError): + PetitionCreationStep1(data={'title': 'Test'}) + + def test_duplicate_title_for_user(self): + """Test duplicate title validation for user petitions - Lines 54-66""" + Petition.objects.create(title='Duplicate Title', user=self.pytition_user) + + form = PetitionCreationStep1( + data={'title': 'Duplicate Title'}, + user_name=self.pytition_user.user.username + ) + self.assertFalse(form.is_valid()) + self.assertIn('title', form.errors) + + +class SignatureFormTest(TestCase): + """Tests for SignatureForm - Line 47""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('sigformuser', password='sigformpass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + + def test_form_without_newsletter(self): + """Test form when petition has no newsletter - Line 47""" + petition = Petition.objects.create( + title='No Newsletter', + user=self.pytition_user, + has_newsletter=False + ) + + form = SignatureForm(petition=petition) + self.assertNotIn('subscribed_to_mailinglist', form.fields) + + def test_form_with_newsletter(self): + """Test form when petition has newsletter""" + petition = Petition.objects.create( + title='With Newsletter', + user=self.pytition_user, + has_newsletter=True, + newsletter_text='Subscribe to our list' + ) + + form = SignatureForm(petition=petition) + self.assertIn('subscribed_to_mailinglist', form.fields) + + +# ============================================================================ +# MODEL TESTS - Testing model edge cases +# ============================================================================ + +class PetitionModelTest(TestCase): + """Tests for Petition model methods""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('modeluser', password='modelpass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + self.org = Organization.objects.create(name='ModelOrg') + + def test_petition_owner_type_org(self): + """Test owner_type property for org-owned petition""" + petition = Petition.objects.create(title='Org Petition', org=self.org) + self.assertEqual(petition.owner_type, 'org') + + def test_petition_owner_type_user(self): + """Test owner_type property for user-owned petition""" + petition = Petition.objects.create(title='User Petition', user=self.pytition_user) + self.assertEqual(petition.owner_type, 'user') + + def test_petition_save_without_owner_raises(self): + """Test that saving petition without owner raises exception""" + petition = Petition(title='No Owner') + with self.assertRaises(Exception): + petition.save() + + def test_petition_save_with_both_owners_raises(self): + """Test that saving petition with both owners raises exception""" + petition = Petition(title='Both Owners', user=self.pytition_user, org=self.org) + with self.assertRaises(Exception): + petition.save() + + def test_transfer_petition_to_user(self): + """Test transferring petition to user""" + petition = Petition.objects.create(title='Transfer Test', org=self.org) + petition.transfer_to(user=self.pytition_user) + + self.assertEqual(petition.user, self.pytition_user) + self.assertIsNone(petition.org) + + def test_transfer_petition_invalid(self): + """Test transfer with neither user nor org raises ValueError""" + petition = Petition.objects.create(title='Transfer Invalid', org=self.org) + + with self.assertRaises(ValueError): + petition.transfer_to() + + def test_transfer_petition_both_raises(self): + """Test transfer with both user and org raises ValueError""" + petition = Petition.objects.create(title='Transfer Both', org=self.org) + + with self.assertRaises(ValueError): + petition.transfer_to(user=self.pytition_user, org=self.org) + + +class RemoveUserModeratedTest(TestCase): + """Tests for remove_user_moderated helper function""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('moduser', password='modpass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + + def test_remove_moderated_petitions(self): + """Test that moderated petitions are removed from list""" + petition1 = Petition.objects.create(title='Normal', user=self.pytition_user) + petition2 = Petition.objects.create(title='Moderated', user=self.pytition_user, moderated=True) + + result = remove_user_moderated([petition1, petition2]) + + self.assertEqual(len(result), 1) + self.assertEqual(result[0], petition1) + + def test_remove_user_moderated_petitions(self): + """Test that petitions from moderated users are removed""" + self.pytition_user.moderated = True + self.pytition_user.save() + + petition = Petition.objects.create(title='User Mod', user=self.pytition_user) + + result = remove_user_moderated([petition]) + self.assertEqual(len(result), 0) + + +# ============================================================================ +# CONTEXT PROCESSOR TESTS +# ============================================================================ + +class ContextProcessorTest(TestCase): + """Tests for context processors""" + + def test_settings_context_processor(self): + """Test settings_context_processor returns settings""" + from django.conf import settings as django_settings + + request = Mock() + result = settings_context_processor(request) + + self.assertIn('settings', result) + self.assertEqual(result['settings'], django_settings) + + @override_settings(FOOTER_TEMPLATE=None) + def test_footer_content_processor_no_template(self): + """Test footer_content_processor without template""" + request = Mock() + result = footer_content_processor(request) + + self.assertIn('footer_content', result) + self.assertIsNone(result['footer_content']) + + +class PetitionDetailMetaTest(TestCase): + """Tests for petition_detail_meta helper""" + + def test_petition_detail_meta(self): + """Test petition_detail_meta returns correct URLs""" + request = Mock() + request.scheme = 'https' + request.get_host.return_value = 'example.com' + + result = petition_detail_meta(request, 1) + + self.assertIn('site_url', result) + self.assertIn('petition_url', result) + self.assertEqual(result['site_url'], 'example.com') + self.assertIn('https://example.com', result['petition_url']) + + +class GetUpdateFormTest(TestCase): + """Tests for get_update_form helper""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user( + 'updateuser', + password='updatepass', + first_name='Test', + last_name='User', + email='test@example.com' + ) + + def test_get_update_form_without_data(self): + """Test get_update_form pre-populates with user data""" + form = get_update_form(self.user) + + self.assertEqual(form.initial['first_name'], 'Test') + self.assertEqual(form.initial['last_name'], 'User') + self.assertEqual(form.initial['email'], 'test@example.com') + + def test_get_update_form_with_data(self): + """Test get_update_form uses provided data""" + custom_data = { + 'first_name': 'New', + 'last_name': 'Name', + 'email': 'new@example.com' + } + form = get_update_form(self.user, data=custom_data) + + self.assertEqual(form.data['first_name'], 'New') diff --git a/pytition/petition/tests/tests_MocksStubsFakes.py b/pytition/petition/tests/tests_MocksStubsFakes.py new file mode 100644 index 00000000..15ad3063 --- /dev/null +++ b/pytition/petition/tests/tests_MocksStubsFakes.py @@ -0,0 +1,629 @@ + +# Unit : Mocks, Stubs and Fakes + +from django.test import TestCase, RequestFactory +from django.contrib.auth import get_user_model +from django.http import Http404, HttpResponseForbidden +from django.conf import settings +from unittest.mock import Mock, patch, MagicMock, PropertyMock +from unittest import mock + +from petition.models import ( + Organization, Petition, PytitionUser, Permission, + Signature, PetitionTemplate, SlugModel +) +from petition.helpers import ( + sanitize_html, get_client_ip, get_session_user, + check_user_in_orga, petition_from_id, check_petition_is_accessible, + send_confirmation_email, send_welcome_mail, subscribe_to_newsletter, + get_update_form, remove_user_moderated +) + + +# ============================================================================= +# FAKE CLASSES - implementations for testing +# ============================================================================= + +class FakeRequest: + + def __init__(self, user=None, meta=None, get_params=None, scheme='http', host='testserver'): + self.user = user or Mock() + self.META = meta or {} + self.GET = get_params or {} + self.scheme = scheme + self._host = host + + def get_host(self): + return self._host + + def build_absolute_uri(self, path): + return f"{self.scheme}://{self._host}{path}" + + +class FakePetition: + + def __init__(self, published=True, moderated=False, owner_type="user", owner=None): + self.published = published + self.moderated = moderated + self._owner_type = owner_type + self._owner = owner + self.is_moderated = moderated + + @property + def owner_type(self): + return self._owner_type + + @property + def owner(self): + return self._owner + + +# ============================================================================= +# TESTS FOR helpers.py +# ============================================================================= + +class TestSanitizeHtml(TestCase): + """Tests for sanitize_html function""" + + def test_sanitize_removes_javascript(self): + unsafe_html = '

Safe content

' + result = sanitize_html(unsafe_html) + self.assertNotIn('script', result.lower()) + self.assertIn('Safe content', result) + + def test_sanitize_empty_input(self): + result = sanitize_html('') + self.assertEqual(result, '') + + def test_sanitize_preserves_safe_html(self): + safe_html = '

Hello World

' + result = sanitize_html(safe_html) + self.assertIn('Hello', result) + self.assertIn('World', result) + + +class TestGetClientIp(TestCase): + + def test_get_ip_from_x_forwarded_for(self): + # Create a stub request with predefined META + stub_request = FakeRequest(meta={ + 'HTTP_X_FORWARDED_FOR': '192.168.1.100, 10.0.0.1' + }) + result = get_client_ip(stub_request) + self.assertEqual(result, '192.168.1.100') + + def test_get_ip_from_remote_addr(self): + stub_request = FakeRequest(meta={ + 'REMOTE_ADDR': '127.0.0.1' + }) + result = get_client_ip(stub_request) + self.assertEqual(result, '127.0.0.1') + + def test_get_ip_no_headers(self): + stub_request = FakeRequest(meta={}) + result = get_client_ip(stub_request) + self.assertIsNone(result) + + +class TestGetSessionUser(TestCase): + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('testuser', password='testpass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + + def test_get_session_user_success(self): + """Test successful user retrieval""" + request = FakeRequest() + request.user = self.user + result = get_session_user(request) + self.assertEqual(result, self.pytition_user) + + def test_get_session_user_not_found(self): + """Test user not found raises Http404""" + request = FakeRequest() + request.user = Mock() + request.user.username = 'nonexistent_user' + + with self.assertRaises(Http404): + get_session_user(request) + + +class TestCheckUserInOrga(TestCase): + """Tests for check_user_in_orga function""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('orguser', password='testpass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + self.org = Organization.objects.create(name="TestOrg") + + def test_user_in_organization(self): + """Test user is in organization""" + self.org.members.add(self.pytition_user) + result = check_user_in_orga(self.pytition_user, self.org) + self.assertIsNone(result) + + def test_user_not_in_organization(self): + """Test user not in organization returns HttpResponseForbidden""" + result = check_user_in_orga(self.pytition_user, self.org) + self.assertIsInstance(result, HttpResponseForbidden) + + +class TestPetitionFromId(TestCase): + """Tests for petition_from_id function""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('petuser', password='testpass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + self.petition = Petition.objects.create(title="Test Petition", user=self.pytition_user) + + def test_petition_exists(self): + """Test petition retrieval by valid ID""" + result = petition_from_id(self.petition.id) + self.assertEqual(result, self.petition) + + def test_petition_not_exists(self): + """Test petition not found raises Http404""" + with self.assertRaises(Http404): + petition_from_id(99999) + + +class TestRemoveUserModerated(TestCase): + """Tests for remove_user_moderated function using FAKES""" + + def test_remove_moderated_petitions(self): + """FAKE: Test filtering of moderated petitions""" + # Create fake petitions with different moderation states + fake_petitions = [ + FakePetition(moderated=False), + FakePetition(moderated=True), + FakePetition(moderated=False), + ] + + result = remove_user_moderated(fake_petitions) + self.assertEqual(len(result), 2) + + def test_all_moderated(self): + """FAKE: Test when all petitions are moderated""" + fake_petitions = [ + FakePetition(moderated=True), + FakePetition(moderated=True), + ] + # Nastavíme is_moderated explicitne + for p in fake_petitions: + p.is_moderated = True + + result = remove_user_moderated(fake_petitions) + self.assertEqual(len(result), 0) + + +class TestSendConfirmationEmail(TestCase): + """Tests for send_confirmation_email using MOCKS""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('emailuser', password='testpass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + self.petition = Petition.objects.create( + title="Email Test Petition", + user=self.pytition_user, + confirmation_email_reply="reply@test.com" + ) + self.signature = Signature.objects.create( + first_name="John", + last_name="Doe", + email="john@test.com", + petition=self.petition + ) + + @patch('petition.helpers.get_connection') + @patch('petition.helpers.EmailMultiAlternatives') + def test_send_confirmation_email_called(self, mock_email_class, mock_get_connection): + """MOCK: Test that email is sent with correct parameters""" + # Setup mocks + mock_connection = MagicMock() + mock_get_connection.return_value.__enter__ = Mock(return_value=mock_connection) + mock_get_connection.return_value.__exit__ = Mock(return_value=False) + + mock_email = MagicMock() + mock_email_class.return_value = mock_email + + # Create fake request + request = FakeRequest(scheme='https', host='example.com') + + # Call the function + send_confirmation_email(request, self.signature) + + # Verify email was created and sent + mock_email_class.assert_called_once() + mock_email.attach_alternative.assert_called_once() + mock_email.send.assert_called_once_with(fail_silently=False) + + +class TestSendWelcomeMail(TestCase): + """Tests for send_welcome_mail using MOCKS""" + + @patch('petition.helpers.get_connection') + @patch('petition.helpers.EmailMultiAlternatives') + def test_send_welcome_mail(self, mock_email_class, mock_get_connection): + """MOCK: Test welcome mail is sent correctly""" + mock_connection = MagicMock() + mock_get_connection.return_value.__enter__ = Mock(return_value=mock_connection) + mock_get_connection.return_value.__exit__ = Mock(return_value=False) + + mock_email = MagicMock() + mock_email_class.return_value = mock_email + + user_infos = { + 'email': 'newuser@test.com', + 'username': 'newuser', + 'first_name': 'New', + 'last_name': 'User' + } + + send_welcome_mail(user_infos) + + mock_email_class.assert_called_once() + mock_email.send.assert_called_once_with(fail_silently=False) + + +class TestSubscribeToNewsletter(TestCase): + """Tests for subscribe_to_newsletter using MOCKS""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('newsletteruser', password='testpass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + + @patch('petition.helpers.requests.post') + def test_subscribe_post_method(self, mock_post): + """MOCK: Test newsletter subscription via POST""" + petition = Petition.objects.create( + title="Newsletter Petition", + user=self.pytition_user, + newsletter_subscribe_method="POST", + newsletter_subscribe_http_url="https://newsletter.test/subscribe", + newsletter_subscribe_http_mailfield="email" + ) + + subscribe_to_newsletter(petition, "test@example.com") + + mock_post.assert_called_once() + call_args = mock_post.call_args + self.assertEqual(call_args[0][0], "https://newsletter.test/subscribe") + + @patch('petition.helpers.requests.get') + def test_subscribe_get_method(self, mock_get): + """MOCK: Test newsletter subscription via GET""" + petition = Petition.objects.create( + title="Newsletter GET Petition", + user=self.pytition_user, + newsletter_subscribe_method="GET", + newsletter_subscribe_http_url="https://newsletter.test/subscribe", + newsletter_subscribe_http_mailfield="email" + ) + + subscribe_to_newsletter(petition, "test@example.com") + + mock_get.assert_called_once() + + def test_subscribe_empty_url(self): + """Test subscription with empty URL does nothing""" + petition = Petition.objects.create( + title="Empty URL Petition", + user=self.pytition_user, + newsletter_subscribe_method="POST", + newsletter_subscribe_http_url="" + ) + + # Should not raise any exception + subscribe_to_newsletter(petition, "test@example.com") + + +# ============================================================================= +# TESTS FOR models.py +# ============================================================================= + +class TestOrganizationIsLastAdmin(TestCase): + """Tests for Organization.is_last_admin method""" + + def setUp(self): + User = get_user_model() + self.user1 = User.objects.create_user('admin1', password='pass') + self.user2 = User.objects.create_user('admin2', password='pass') + self.pu1 = PytitionUser.objects.get(user=self.user1) + self.pu2 = PytitionUser.objects.get(user=self.user2) + self.org = Organization.objects.create(name="AdminTestOrg") + + def test_single_admin_is_last(self): + """Test single admin is identified as last admin""" + self.org.members.add(self.pu1) + perm = Permission.objects.get(organization=self.org, user=self.pu1) + perm.can_modify_permissions = True + perm.save() + + self.assertTrue(self.org.is_last_admin(self.pu1)) + + def test_multiple_admins_not_last(self): + """Test user is not last admin when there are multiple admins""" + self.org.members.add(self.pu1) + self.org.members.add(self.pu2) + + perm1 = Permission.objects.get(organization=self.org, user=self.pu1) + perm1.can_modify_permissions = True + perm1.save() + + perm2 = Permission.objects.get(organization=self.org, user=self.pu2) + perm2.can_modify_permissions = True + perm2.save() + + self.assertFalse(self.org.is_last_admin(self.pu1)) + + def test_user_not_admin(self): + """Test user without admin rights is not last admin""" + self.org.members.add(self.pu1) + self.org.members.add(self.pu2) + + perm1 = Permission.objects.get(organization=self.org, user=self.pu1) + perm1.can_modify_permissions = True + perm1.save() + + # pu2 is not an admin + self.assertFalse(self.org.is_last_admin(self.pu2)) + + +class TestOrganizationIsAllowedTo(TestCase): + """Tests for Organization.is_allowed_to method""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('permuser', password='pass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + self.org = Organization.objects.create(name="PermTestOrg") + + def test_user_has_permission(self): + """Test user with specific permission""" + self.org.members.add(self.pytition_user) + perm = Permission.objects.get(organization=self.org, user=self.pytition_user) + perm.can_create_petitions = True + perm.save() + + self.assertTrue(self.org.is_allowed_to(self.pytition_user, 'can_create_petitions')) + + def test_user_lacks_permission(self): + """Test user without specific permission""" + self.org.members.add(self.pytition_user) + perm = Permission.objects.get(organization=self.org, user=self.pytition_user) + perm.can_delete_petitions = False + perm.save() + + self.assertFalse(self.org.is_allowed_to(self.pytition_user, 'can_delete_petitions')) + + def test_user_not_member(self): + """Test non-member has no permissions""" + self.assertFalse(self.org.is_allowed_to(self.pytition_user, 'can_create_petitions')) + + +class TestPetitionTransferTo(TestCase): + """Tests for Petition.transfer_to method""" + + def setUp(self): + User = get_user_model() + self.user1 = User.objects.create_user('transferuser1', password='pass') + self.user2 = User.objects.create_user('transferuser2', password='pass') + self.pu1 = PytitionUser.objects.get(user=self.user1) + self.pu2 = PytitionUser.objects.get(user=self.user2) + self.org = Organization.objects.create(name="TransferOrg") + self.petition = Petition.objects.create(title="Transfer Petition", user=self.pu1) + + def test_transfer_to_user(self): + """Test transferring petition to another user""" + self.petition.transfer_to(user=self.pu2) + self.petition.refresh_from_db() + + self.assertEqual(self.petition.user, self.pu2) + self.assertIsNone(self.petition.org) + + def test_transfer_to_org(self): + """Test transferring petition to organization""" + self.petition.transfer_to(org=self.org) + self.petition.refresh_from_db() + + self.assertEqual(self.petition.org, self.org) + self.assertIsNone(self.petition.user) + + def test_transfer_to_none_raises(self): + """Test transfer with no target raises ValueError""" + with self.assertRaises(ValueError): + self.petition.transfer_to() + + def test_transfer_to_both_raises(self): + """Test transfer with both user and org raises ValueError""" + with self.assertRaises(ValueError): + self.petition.transfer_to(user=self.pu2, org=self.org) + + +class TestPetitionPrepopulateFromTemplate(TestCase): + """Tests for Petition.prepopulate_from_template method""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('templateuser', password='pass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + + self.template = PetitionTemplate.objects.create( + name="Test Template", + user=self.pytition_user, + text="Template text content", + twitter_description="Twitter desc from template", + target=1000, + has_newsletter=True + ) + + self.petition = Petition.objects.create( + title="Prepopulate Test", + user=self.pytition_user + ) + + def test_prepopulate_copies_fields(self): + """Test that fields are copied from template""" + self.petition.prepopulate_from_template(self.template, exclude_fields=[]) + + self.assertEqual(self.petition.text, "Template text content") + self.assertEqual(self.petition.twitter_description, "Twitter desc from template") + self.assertEqual(self.petition.target, 1000) + self.assertTrue(self.petition.has_newsletter) + + def test_prepopulate_with_exclude(self): + """Test prepopulation with excluded fields""" + self.petition.prepopulate_from_template( + self.template, + fields=['text', 'target', 'has_newsletter'], + exclude_fields=['target'] + ) + + self.assertEqual(self.petition.text, "Template text content") + self.assertNotEqual(self.petition.target, 1000) # Should not be copied + + +class TestPetitionPublishUnpublish(TestCase): + """Tests for Petition.publish and unpublish methods""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('publishuser', password='pass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + self.petition = Petition.objects.create( + title="Publish Test", + user=self.pytition_user, + published=False + ) + + def test_publish_sets_date(self): + """Test publish sets publication_date""" + self.petition.publish() + self.petition.refresh_from_db() + + self.assertTrue(self.petition.published) + self.assertIsNotNone(self.petition.publication_date) + + def test_unpublish_clears_date(self): + """Test unpublish clears publication_date""" + self.petition.publish() + self.petition.unpublish() + self.petition.refresh_from_db() + + self.assertFalse(self.petition.published) + self.assertIsNone(self.petition.publication_date) + + +class TestSignatureConfirm(TestCase): + """Tests for Signature.confirm method""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('siguser', password='pass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + self.petition = Petition.objects.create( + title="Signature Test", + user=self.pytition_user + ) + + def test_confirm_signature(self): + """Test signature confirmation""" + signature = Signature.objects.create( + first_name="Test", + last_name="Signer", + email="signer@test.com", + petition=self.petition, + confirmed=False + ) + + signature.confirm() + self.assertTrue(signature.confirmed) + + +class TestPytitionUserModerate(TestCase): + """Tests for PytitionUser.moderate method""" + + def setUp(self): + User = get_user_model() + self.user = User.objects.create_user('moduser', password='pass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + + def test_moderate_user(self): + """Test moderating a user""" + self.pytition_user.moderate(True) + self.pytition_user.refresh_from_db() + self.assertTrue(self.pytition_user.moderated) + + def test_unmoderate_user(self): + """Test unmoderating a user""" + self.pytition_user.moderated = True + self.pytition_user.save() + + self.pytition_user.moderate(False) + self.pytition_user.refresh_from_db() + self.assertFalse(self.pytition_user.moderated) + + +# ============================================================================= +# TESTS FOR views.py (using RequestFactory with MOCKS) +# ============================================================================= + +class TestIndexView(TestCase): + """Tests for index view using MOCKS and STUBS""" + + def setUp(self): + self.factory = RequestFactory() + User = get_user_model() + self.user = User.objects.create_user('indexuser', password='pass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + + @patch.object(settings, 'INDEX_PAGE', 'ALL_PETITIONS') + @patch.object(settings, 'PAGINATOR_COUNT', 10) + def test_index_all_petitions(self): + """STUB: Test index with ALL_PETITIONS setting""" + from petition.views import index + + # Create some petitions + Petition.objects.create(title="Public Petition 1", user=self.pytition_user, published=True) + Petition.objects.create(title="Public Petition 2", user=self.pytition_user, published=True) + + request = self.factory.get('/') + request.user = Mock() + request.user.is_authenticated = False + + response = index(request) + self.assertEqual(response.status_code, 200) + + +class TestSearchView(TestCase): + """Tests for search view""" + + def setUp(self): + self.factory = RequestFactory() + User = get_user_model() + self.user = User.objects.create_user('searchuser', password='pass') + self.pytition_user = PytitionUser.objects.get(user=self.user) + + Petition.objects.create( + title="Climate Change Petition", + text="Save the environment", + user=self.pytition_user, + published=True + ) + + def test_search_with_query(self): + """Test search with valid query""" + from petition.views import search + + request = self.factory.get('/search/', {'q': 'Climate'}) + request.user = Mock() + request.user.is_authenticated = False + + response = search(request) + self.assertEqual(response.status_code, 200) + self.assertIn(b'Climate', response.content) diff --git a/pytition/petition/urls.py b/pytition/petition/urls.py index 42480dfc..3136675d 100644 --- a/pytition/petition/urls.py +++ b/pytition/petition/urls.py @@ -61,8 +61,11 @@ path('wizard/org//new_petition/from_template/', PetitionCreationWizard.as_view(views.WizardForms), name='org_petition_wizard_from_template'), path('wizard/user/new_petition', PetitionCreationWizard.as_view(views.WizardForms), name='user_petition_wizard'), path('wizard/user/new_petition/from_template/', PetitionCreationWizard.as_view(views.WizardForms), name='user_petition_wizard_from_template'), - # Authentication - Custom login view that redirects authenticated users + # Authentication + # Custom login view that redirects authenticated users path('login/', PytitionLoginView.as_view(), name='login'), + # Custom logout view that accepts GET + path('logout/', views.user_logout, name='logout'), path('', include('django.contrib.auth.urls')), path('account_settings', views.account_settings, name="account_settings"), # Misc diff --git a/pytition/petition/views.py b/pytition/petition/views.py index 6dc17be2..5ba4104f 100644 --- a/pytition/petition/views.py +++ b/pytition/petition/views.py @@ -14,6 +14,7 @@ from django.contrib.messages import get_messages from django.utils.html import format_html from django.db.models import Q +from django.contrib.auth import logout as auth_logout from django.contrib.auth.decorators import login_required from django.db import transaction, IntegrityError from django.contrib.auth.hashers import make_password @@ -1838,6 +1839,13 @@ def get_redirect_url(self): return reverse('index') return super().get_redirect_url() +# Logout view - accepts both GET and POST +def user_logout(request): + auth_logout(request) + messages.success(request, _("You have been logged out successfully.")) + next_url = request.GET.get('next', 'index') + return redirect(next_url) + # //report/ # Report a petition to moderation diff --git a/pytition/pytition/settings/base.py b/pytition/pytition/settings/base.py index 415e4bae..a5e70874 100644 --- a/pytition/pytition/settings/base.py +++ b/pytition/pytition/settings/base.py @@ -155,6 +155,7 @@ STATIC_ROOT = os.environ.get('STATIC_ROOT') LOGIN_URL = '/petition/login/' + TINYMCE_DEFAULT_CONFIG = { 'plugins': 'print preview fullpage searchreplace autolink directionality visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists textcolor wordcount imagetools contextmenu colorpicker textpattern help', 'cleanup_on_startup': True, diff --git a/pytition/pytition/settings/test.py b/pytition/pytition/settings/test.py new file mode 100644 index 00000000..35bcfe58 --- /dev/null +++ b/pytition/pytition/settings/test.py @@ -0,0 +1,13 @@ +from .base import * +import os + +SECRET_KEY = "test-secret-key-for-unit-tests" + +DATABASES = { + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": os.path.join(BASE_DIR, "testdb.sqlite3"), + } +} + +DEBUG = False diff --git a/pytition/testdb.sqlite3 b/pytition/testdb.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..bdc54e56c607905bfb4e34874089fda1ea4ad88a GIT binary patch literal 413696 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 literal 0 HcmV?d00001