diff --git a/poetry.lock b/poetry.lock index 67446d80..94fda94f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. [[package]] name = "amqp" version = "5.2.0" description = "Low-level AMQP client for Python (fork of amqplib)." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -19,7 +18,6 @@ vine = ">=5.0.0,<6.0.0" name = "asgiref" version = "3.7.2" description = "ASGI specs, helper code, and adapters" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -37,7 +35,6 @@ tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] name = "asttokens" version = "2.4.1" description = "Annotate AST trees with source code positions" -category = "dev" optional = false python-versions = "*" files = [ @@ -56,7 +53,6 @@ test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] name = "async-timeout" version = "4.0.3" description = "Timeout context manager for asyncio programs" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -68,7 +64,6 @@ files = [ name = "atomicwrites" version = "1.4.1" description = "Atomic file writes." -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -79,7 +74,6 @@ files = [ name = "attrs" version = "23.1.0" description = "Classes Without Boilerplate" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -98,7 +92,6 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte name = "autobahn" version = "23.6.2" description = "WebSocket client & server library, WAMP real-time framework" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -127,7 +120,6 @@ xbr = ["base58 (>=2.1.0)", "bitarray (>=2.7.5)", "cbor2 (>=5.2.0)", "click (>=8. name = "automat" version = "22.10.0" description = "Self-service finite-state machines for the programmer on the go." -category = "main" optional = false python-versions = "*" files = [ @@ -146,7 +138,6 @@ visualize = ["Twisted (>=16.1.1)", "graphviz (>0.5.1)"] name = "beautifulsoup4" version = "4.12.2" description = "Screen-scraping library" -category = "main" optional = false python-versions = ">=3.6.0" files = [ @@ -165,7 +156,6 @@ lxml = ["lxml"] name = "billiard" version = "4.2.0" description = "Python multiprocessing fork with improvements and bugfixes" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -177,7 +167,6 @@ files = [ name = "black" version = "22.12.0" description = "The uncompromising code formatter." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -213,7 +202,6 @@ uvloop = ["uvloop (>=0.15.2)"] name = "cachetools" version = "5.3.2" description = "Extensible memoizing collections and decorators" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -225,7 +213,6 @@ files = [ name = "celery" version = "5.3.6" description = "Distributed Task Queue." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -281,7 +268,6 @@ zstd = ["zstandard (==0.22.0)"] name = "certifi" version = "2023.11.17" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -293,7 +279,6 @@ files = [ name = "cffi" version = "1.16.0" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -358,7 +343,6 @@ pycparser = "*" name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -370,7 +354,6 @@ files = [ name = "channels" version = "4.0.0" description = "Brings async, event-driven capabilities to Django 3.2 and up." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -391,7 +374,6 @@ tests = ["async-timeout", "coverage (>=4.5,<5.0)", "pytest", "pytest-asyncio", " name = "channels-redis" version = "4.1.0" description = "Redis-backed ASGI channel layer implementation" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -413,7 +395,6 @@ tests = ["async-timeout", "cryptography (>=1.3.0)", "pytest", "pytest-asyncio", name = "chardet" version = "5.2.0" description = "Universal encoding detector for Python 3" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -425,7 +406,6 @@ files = [ name = "charset-normalizer" version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -525,7 +505,6 @@ files = [ name = "click" version = "8.1.7" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -540,7 +519,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "click-didyoumean" version = "0.3.0" description = "Enables git-like *did-you-mean* feature in click" -category = "main" optional = false python-versions = ">=3.6.2,<4.0.0" files = [ @@ -555,7 +533,6 @@ click = ">=7" name = "click-plugins" version = "1.1.1" description = "An extension module for click to enable registering CLI commands via setuptools entry-points." -category = "main" optional = false python-versions = "*" files = [ @@ -573,7 +550,6 @@ dev = ["coveralls", "pytest (>=3.6)", "pytest-cov", "wheel"] name = "click-repl" version = "0.3.0" description = "REPL plugin for Click" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -592,7 +568,6 @@ testing = ["pytest (>=7.2.1)", "pytest-cov (>=4.0.0)", "tox (>=4.4.3)"] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -604,7 +579,6 @@ files = [ name = "constantly" version = "23.10.4" description = "Symbolic constants in Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -616,7 +590,6 @@ files = [ name = "coverage" version = "7.3.2" description = "Code coverage measurement for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -684,7 +657,6 @@ toml = ["tomli"] name = "cryptography" version = "41.0.7" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -730,7 +702,6 @@ test-randomorder = ["pytest-randomly"] name = "cssselect" version = "1.2.0" description = "cssselect parses CSS3 Selectors and translates them to XPath 1.0" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -742,7 +713,6 @@ files = [ name = "daphne" version = "4.0.0" description = "Django ASGI (HTTP/WebSocket) server" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -762,7 +732,6 @@ tests = ["django", "hypothesis", "pytest", "pytest-asyncio"] name = "decorator" version = "5.1.1" description = "Decorators for Humans" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -774,7 +743,6 @@ files = [ name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -786,7 +754,6 @@ files = [ name = "diff-match-patch" version = "20230430" description = "Diff Match and Patch" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -801,7 +768,6 @@ dev = ["attribution (==1.6.2)", "black (==23.3.0)", "flit (==3.8.0)", "mypy (==1 name = "distlib" version = "0.3.7" description = "Distribution utilities" -category = "dev" optional = false python-versions = "*" files = [ @@ -813,7 +779,6 @@ files = [ name = "django" version = "3.2.23" description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -834,7 +799,6 @@ bcrypt = ["bcrypt"] name = "django-admin-extra-buttons" version = "1.5.7" description = "Django mixin to easily add buttons to any ModelAdmin" -category = "main" optional = false python-versions = "*" files = [ @@ -850,7 +814,6 @@ test = ["coverage", "django_webtest", "factory-boy", "pdbpp", "pyquery", "pytest name = "django-admin-ordering" version = "0.17.0" description = "Orderable change lists and inlines done right^Wsimple" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -868,7 +831,6 @@ tests = ["coverage"] name = "django-admin-sync" version = "0.7.1" description = "" -category = "main" optional = false python-versions = "*" files = [ @@ -889,7 +851,6 @@ test = ["black", "django-concurrency", "django-constance", "django-picklefield", name = "django-adminactions" version = "2.3.0" description = "Collections of useful actions to use with django.contrib.admin.ModelAdmin" -category = "main" optional = false python-versions = "*" files = [ @@ -910,7 +871,6 @@ test = ["black", "celery", "check-manifest", "django-admin-extra-urls", "django- name = "django-adminfilters" version = "2.3.0" description = "Extra filters for django admin site" -category = "main" optional = false python-versions = "*" files = [ @@ -921,11 +881,31 @@ files = [ dev = ["black", "check-manifest", "check-manifest", "django", "django-environ", "factory-boy", "flake8", "flake8", "isort", "pdbpp", "pre-commit", "psycopg2-binary", "pytest", "pytest (<7)", "pytest-cov", "pytest-django", "pytest-echo", "pytest-selenium (<4)", "selenium (==4.9.1)", "sphinx", "sphinx_rtd_theme", "sphinxcontrib.video", "tox"] test = ["check-manifest", "django-environ", "factory-boy", "flake8", "isort", "pdbpp", "psycopg2-binary", "pytest (<7)", "pytest-cov", "pytest-django", "pytest-echo", "pytest-selenium (<4)", "selenium (==4.9.1)", "tox"] +[[package]] +name = "django-anymail" +version = "10.2" +description = "Django email backends and webhooks for Amazon SES, Brevo (Sendinblue), MailerSend, Mailgun, Mailjet, Mandrill, Postal, Postmark, Resend, SendGrid, and SparkPost" +optional = false +python-versions = ">=3.7" +files = [ + {file = "django_anymail-10.2-py3-none-any.whl", hash = "sha256:ca273abbc04b5ce06d1f3b3e5f28e2d79331519198fa6d6b5ba1b5aa5eea02f7"}, + {file = "django_anymail-10.2.tar.gz", hash = "sha256:1f3006d3b16874aaa32976078da6cdc9baa7f5274cf80e3fc51a288887617aaf"}, +] + +[package.dependencies] +django = ">=2.0" +requests = ">=2.4.3" +urllib3 = ">=1.25.0" + +[package.extras] +amazon-ses = ["boto3"] +postal = ["cryptography"] +resend = ["svix"] + [[package]] name = "django-appconf" version = "1.0.6" description = "A helper class for handling configuration defaults of packaged apps gracefully." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -940,7 +920,6 @@ django = "*" name = "django-bitfield" version = "2.2.0" description = "BitField in Django" -category = "main" optional = false python-versions = "*" files = [ @@ -958,7 +937,6 @@ tests = ["flake8", "mysqlclient", "psycopg2 (>=2.3)", "pytest-django"] name = "django-click" version = "2.3.0" description = "Build Django management commands using the click CLI package." -category = "main" optional = false python-versions = "*" files = [ @@ -977,7 +955,6 @@ test = ["coverage (<5)", "pytest", "pytest-cov", "pytest-django", "pytest-flake8 name = "django-concurrency" version = "2.5" description = "Optimistic lock implementation for Django. Prevents users from doing concurrent editing." -category = "main" optional = false python-versions = "*" files = [ @@ -988,7 +965,6 @@ files = [ name = "django-constance" version = "2.9.1" description = "Django live settings with pluggable backends, including Redis." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1004,7 +980,6 @@ redis = ["redis"] name = "django-cors-headers" version = "3.14.0" description = "django-cors-headers is a Django application for handling the server headers required for Cross-Origin Resource Sharing (CORS)." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1019,7 +994,6 @@ Django = ">=3.2" name = "django-csp" version = "3.7" description = "Django Content Security Policy support." -category = "main" optional = false python-versions = "*" files = [ @@ -1038,7 +1012,6 @@ tests = ["jinja2 (>=2.9.6)", "mock (==1.0.1)", "pep8 (==1.4.6)", "pytest (<4.0)" name = "django-debug-toolbar" version = "3.8.1" description = "A configurable set of panels that display various debug information about the current request/response." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1054,7 +1027,6 @@ sqlparse = ">=0.2" name = "django-environ" version = "0.9.0" description = "A package that allows you to utilize 12factor inspired environment variables to configure your Django application." -category = "main" optional = false python-versions = ">=3.4,<4" files = [ @@ -1063,15 +1035,14 @@ files = [ ] [package.extras] -develop = ["coverage[toml] (>=5.0a4)", "furo (>=2021.8.17b43,<2021.9.0)", "pytest (>=4.6.11)", "sphinx (>=3.5.0)", "sphinx-notfound-page"] -docs = ["furo (>=2021.8.17b43,<2021.9.0)", "sphinx (>=3.5.0)", "sphinx-notfound-page"] +develop = ["coverage[toml] (>=5.0a4)", "furo (>=2021.8.17b43,<2021.9.dev0)", "pytest (>=4.6.11)", "sphinx (>=3.5.0)", "sphinx-notfound-page"] +docs = ["furo (>=2021.8.17b43,<2021.9.dev0)", "sphinx (>=3.5.0)", "sphinx-notfound-page"] testing = ["coverage[toml] (>=5.0a4)", "pytest (>=4.6.11)"] [[package]] name = "django-filter" version = "22.1" description = "Django-filter is a reusable Django application for allowing users to filter querysets dynamically." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1086,7 +1057,6 @@ Django = ">=3.2" name = "django-flags" version = "5.0.13" description = "Feature flags for Django projects" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1105,7 +1075,6 @@ testing = ["coverage (>=3.7.0)", "django-debug-toolbar (>=3.2,<4)", "jinja2"] name = "django-front-door" version = "0.10.0" description = "" -category = "main" optional = false python-versions = "*" files = [ @@ -1127,7 +1096,6 @@ ua = ["user_agents"] name = "django-hijack" version = "3.4.2" description = "django-hijack allows superusers to hijack (=login as) and work on behalf of another user." -category = "main" optional = false python-versions = "*" files = [ @@ -1145,7 +1113,6 @@ test = ["pytest", "pytest-cov", "pytest-django"] name = "django-import-export" version = "3.3.3" description = "Django application and library for importing and exporting data with included admin integration." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1162,7 +1129,6 @@ tablib = {version = "3.5.0", extras = ["html", "ods", "xls", "xlsx", "yaml"]} name = "django-js-asset" version = "2.1.0" description = "script tag with additional attributes for django.forms.Media" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1180,7 +1146,6 @@ tests = ["coverage"] name = "django-jsoneditor" version = "0.2.4" description = "Django JSON Editor" -category = "main" optional = false python-versions = "*" files = [ @@ -1195,7 +1160,6 @@ packaging = "*" name = "django-mdeditor" version = "0.1.20" description = "A simple Django app to edit markdown text." -category = "main" optional = false python-versions = "*" files = [ @@ -1206,7 +1170,6 @@ files = [ name = "django-mptt" version = "0.14.0" description = "Utilities for implementing Modified Preorder Tree Traversal with your Django Models and working with trees of Model instances." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1224,7 +1187,6 @@ tests = ["coverage", "mock-django"] name = "django-picklefield" version = "3.1" description = "Pickled object field for Django" -category = "main" optional = false python-versions = ">=3" files = [ @@ -1242,7 +1204,6 @@ tests = ["tox"] name = "django-pwa" version = "1.1.0" description = "A Django app to include a manifest.json and Service Worker instance to enable progressive web app behavior" -category = "main" optional = false python-versions = "*" files = [ @@ -1257,7 +1218,6 @@ django = ">=2.0" name = "django-ranged-response" version = "0.2.0" description = "Modified Django FileResponse that adds Content-Range headers." -category = "main" optional = false python-versions = "*" files = [ @@ -1271,7 +1231,6 @@ django = "*" name = "django-redis" version = "5.4.0" description = "Full featured redis cache backend for Django." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1290,7 +1249,6 @@ hiredis = ["redis[hiredis] (>=3,!=4.0.0,!=4.0.1)"] name = "django-regex" version = "0.5.0" description = "Fields and utilities to work with regular expression in Django" -category = "main" optional = false python-versions = "*" files = [ @@ -1307,7 +1265,6 @@ tests = ["admin-extra-urls", "django-webtest", "factory_boy", "isort", "pdbpp", name = "django-reversion" version = "5.0.8" description = "An extension to the Django web framework that provides version control for model instances." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1322,7 +1279,6 @@ django = ">=3.2" name = "django-reversion-compare" version = "0.15.0" description = "history compare for django-reversion" -category = "main" optional = false python-versions = ">=3.7,<4.0.0" files = [ @@ -1338,7 +1294,6 @@ django-reversion = "*" name = "django-simple-captcha" version = "0.5.20" description = "A very simple, yet powerful, Django captcha application" -category = "main" optional = false python-versions = "*" files = [ @@ -1358,7 +1313,6 @@ test = ["testfixtures"] name = "django-simple-math-captcha" version = "2.0.1" description = "An easy-to-use math field/widget captcha for Django forms." -category = "main" optional = false python-versions = "*" files = [ @@ -1370,7 +1324,6 @@ files = [ name = "django-smart-admin" version = "2.6.0" description = "" -category = "main" optional = false python-versions = "==3.*,>=3.8" files = [ @@ -1390,7 +1343,6 @@ dev = ["bump2version", "django-constance", "django-environ", "django-picklefield name = "django-strategy-field" version = "3.1.0" description = "" -category = "main" optional = false python-versions = "*" files = [ @@ -1408,7 +1360,6 @@ test = ["coverage", "django-webtest", "django_dynamic_fixture", "factory-boy", " name = "django-stubs" version = "1.16.0" description = "Mypy stubs for Django" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1435,7 +1386,6 @@ compatible-mypy = ["mypy (>=1.1.1,<1.2)"] name = "django-stubs-ext" version = "4.2.5" description = "Monkey-patching and extensions for django-stubs" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1451,7 +1401,6 @@ typing-extensions = "*" name = "django-sysinfo" version = "2.6.2" description = "Simple django app to expose system infos: libraries version, databae server infos..." -category = "main" optional = false python-versions = ">=3.9,<4.0" files = [ @@ -1468,7 +1417,6 @@ pytz = "*" name = "django-tinymce" version = "3.6.1" description = "A Django application that contains a widget to render a form field as a TinyMCE editor." -category = "main" optional = false python-versions = "*" files = [ @@ -1480,7 +1428,6 @@ files = [ name = "django-webtest" version = "1.9.11" description = "Instant integration of Ian Bicking's WebTest (http://docs.pylonsproject.org/projects/webtest/) with Django's testing framework." -category = "dev" optional = false python-versions = "*" files = [ @@ -1495,7 +1442,6 @@ webtest = ">=1.3.3" name = "djangorestframework" version = "3.14.0" description = "Web APIs for Django, made easy." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1511,7 +1457,6 @@ pytz = "*" name = "djangorestframework-datatables" version = "0.7.0" description = "Seamless integration between Django REST framework and Datatables (https://datatables.net)" -category = "main" optional = false python-versions = "*" files = [ @@ -1527,7 +1472,6 @@ pytz = "*" name = "et-xmlfile" version = "1.1.0" description = "An implementation of lxml.xmlfile for the standard library" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1539,7 +1483,6 @@ files = [ name = "exceptiongroup" version = "1.2.0" description = "Backport of PEP 654 (exception groups)" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1554,7 +1497,6 @@ test = ["pytest (>=6)"] name = "executing" version = "2.0.1" description = "Get the currently executing AST node of a frame, and other information" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1569,7 +1511,6 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth name = "factory-boy" version = "3.3.0" description = "A versatile test fixtures replacement based on thoughtbot's factory_bot for Ruby." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1588,7 +1529,6 @@ doc = ["Sphinx", "sphinx-rtd-theme", "sphinxcontrib-spelling"] name = "faker" version = "14.2.1" description = "Faker is a Python package that generates fake data for you." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1603,7 +1543,6 @@ python-dateutil = ">=2.4" name = "fancycompleter" version = "0.9.1" description = "colorful TAB completion for Python prompt" -category = "dev" optional = false python-versions = "*" files = [ @@ -1619,7 +1558,6 @@ pyrepl = ">=0.8.2" name = "filelock" version = "3.13.1" description = "A platform independent file lock." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1636,7 +1574,6 @@ typing = ["typing-extensions (>=4.8)"] name = "flake8" version = "6.1.0" description = "the modular source code checker: pep8 pyflakes and co" -category = "dev" optional = false python-versions = ">=3.8.1" files = [ @@ -1653,7 +1590,6 @@ pyflakes = ">=3.1.0,<3.2.0" name = "freezegun" version = "1.2.2" description = "Let your Python tests travel through time" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1668,7 +1604,6 @@ python-dateutil = ">=2.7" name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1680,7 +1615,6 @@ files = [ name = "html-json-forms" version = "1.1.1" description = "Implementation of the HTML JSON Forms spec for use with the Django REST Framework." -category = "main" optional = false python-versions = "*" files = [ @@ -1692,7 +1626,6 @@ files = [ name = "htmlmin" version = "0.1.12" description = "An HTML Minifier" -category = "main" optional = false python-versions = "*" files = [ @@ -1703,7 +1636,6 @@ files = [ name = "hyperlink" version = "21.0.0" description = "A featureful, immutable, and correct URL for Python." -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1718,7 +1650,6 @@ idna = ">=2.5" name = "identify" version = "2.5.32" description = "File identification library for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1733,7 +1664,6 @@ license = ["ukkonen"] name = "idna" version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1745,7 +1675,6 @@ files = [ name = "importlib-metadata" version = "6.8.0" description = "Read metadata from Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1765,7 +1694,6 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs name = "incremental" version = "22.10.0" description = "\"A small library that versions your Python projects.\"" -category = "main" optional = false python-versions = "*" files = [ @@ -1781,7 +1709,6 @@ scripts = ["click (>=6.0)", "twisted (>=16.4.0)"] name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1793,7 +1720,6 @@ files = [ name = "ipython" version = "8.18.1" description = "IPython: Productive Interactive Computing" -category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1831,7 +1757,6 @@ test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.22)", "pa name = "isort" version = "5.12.0" description = "A Python utility / library to sort Python imports." -category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -1849,7 +1774,6 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "jedi" version = "0.19.1" description = "An autocompletion tool for Python that can be used for text editors." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1869,7 +1793,6 @@ testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] name = "jmespath" version = "1.0.1" description = "JSON Matching Expressions" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1881,7 +1804,6 @@ files = [ name = "jsonpickle" version = "2.2.0" description = "Python library for serializing any arbitrary object graph into JSON" -category = "main" optional = false python-versions = ">=2.7" files = [ @@ -1898,7 +1820,6 @@ testing-libs = ["simplejson", "ujson", "yajl"] name = "kombu" version = "5.3.4" description = "Messaging library for Python." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1932,7 +1853,6 @@ zookeeper = ["kazoo (>=2.8.0)"] name = "lxml" version = "4.9.3" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" files = [ @@ -2040,7 +1960,6 @@ source = ["Cython (>=0.29.35)"] name = "markdown" version = "3.5.1" description = "Python implementation of John Gruber's Markdown." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2059,7 +1978,6 @@ testing = ["coverage", "pyyaml"] name = "markuppy" version = "1.14" description = "An HTML/XML generator" -category = "main" optional = false python-versions = "*" files = [ @@ -2070,7 +1988,6 @@ files = [ name = "matplotlib-inline" version = "0.1.6" description = "Inline Matplotlib backend for Jupyter" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -2085,7 +2002,6 @@ traitlets = "*" name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2097,7 +2013,6 @@ files = [ name = "msgpack" version = "1.0.7" description = "MessagePack serializer" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2163,7 +2078,6 @@ files = [ name = "mypy" version = "1.1.1" description = "Optional static typing for Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2210,7 +2124,6 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -2222,7 +2135,6 @@ files = [ name = "natural-keys" version = "2.1.0" description = "Enhanced support for natural keys in Django and Django REST Framework." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2237,7 +2149,6 @@ html-json-forms = ">=1.0.0" name = "nodeenv" version = "1.8.0" description = "Node.js virtual environment builder" -category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" files = [ @@ -2252,7 +2163,6 @@ setuptools = "*" name = "oauthlib" version = "3.2.2" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2269,7 +2179,6 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] name = "odfpy" version = "1.4.1" description = "Python API and tools to manipulate OpenDocument files" -category = "main" optional = false python-versions = "*" files = [ @@ -2283,7 +2192,6 @@ defusedxml = "*" name = "openpyxl" version = "3.1.2" description = "A Python library to read/write Excel 2010 xlsx/xlsm files" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2298,7 +2206,6 @@ et-xmlfile = "*" name = "outcome" version = "1.3.0.post0" description = "Capture the outcome of Python function calls." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2313,7 +2220,6 @@ attrs = ">=19.2.0" name = "packaging" version = "23.2" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2325,7 +2231,6 @@ files = [ name = "parso" version = "0.8.3" description = "A Python Parser" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2341,7 +2246,6 @@ testing = ["docopt", "pytest (<6.0.0)"] name = "pathspec" version = "0.11.2" description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2353,7 +2257,6 @@ files = [ name = "pdbpp" version = "0.10.3" description = "pdb++, a drop-in replacement for pdb" -category = "dev" optional = false python-versions = "*" files = [ @@ -2374,7 +2277,6 @@ testing = ["funcsigs", "pytest"] name = "pexpect" version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." -category = "dev" optional = false python-versions = "*" files = [ @@ -2389,7 +2291,6 @@ ptyprocess = ">=0.5" name = "pillow" version = "9.5.0" description = "Python Imaging Library (Fork)" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2469,7 +2370,6 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa name = "platformdirs" version = "4.0.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2485,7 +2385,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co name = "pluggy" version = "1.3.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2501,7 +2400,6 @@ testing = ["pytest", "pytest-benchmark"] name = "pre-commit" version = "3.5.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2520,7 +2418,6 @@ virtualenv = ">=20.10.0" name = "prompt-toolkit" version = "3.0.41" description = "Library for building powerful interactive command lines in Python" -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -2535,7 +2432,6 @@ wcwidth = "*" name = "psutil" version = "5.9.6" description = "Cross-platform lib for process and system monitoring in Python." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -2564,7 +2460,6 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] name = "psycopg2-binary" version = "2.9.9" description = "psycopg2 - Python-PostgreSQL Database Adapter" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2646,7 +2541,6 @@ files = [ name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" -category = "dev" optional = false python-versions = "*" files = [ @@ -2658,7 +2552,6 @@ files = [ name = "pure-eval" version = "0.2.2" description = "Safely evaluate AST nodes without side effects" -category = "dev" optional = false python-versions = "*" files = [ @@ -2673,7 +2566,6 @@ tests = ["pytest"] name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -2685,7 +2577,6 @@ files = [ name = "py-mini-racer" version = "0.6.0" description = "Minimal, modern embedded V8 for Python." -category = "main" optional = false python-versions = "*" files = [ @@ -2699,7 +2590,6 @@ files = [ name = "pyasn1" version = "0.5.1" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -2711,7 +2601,6 @@ files = [ name = "pyasn1-modules" version = "0.3.0" description = "A collection of ASN.1-based protocols modules" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -2726,7 +2615,6 @@ pyasn1 = ">=0.4.6,<0.6.0" name = "pycodestyle" version = "2.11.1" description = "Python style guide checker" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2738,7 +2626,6 @@ files = [ name = "pycparser" version = "2.21" description = "C parser in Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2750,7 +2637,6 @@ files = [ name = "pycryptodome" version = "3.19.0" description = "Cryptographic library for Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -2792,7 +2678,6 @@ files = [ name = "pyflakes" version = "3.1.0" description = "passive checker of Python programs" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2804,7 +2689,6 @@ files = [ name = "pygments" version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2820,7 +2704,6 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pyjwt" version = "2.8.0" description = "JSON Web Token implementation in Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2838,7 +2721,6 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] name = "pyopenssl" version = "23.3.0" description = "Python wrapper module around the OpenSSL library" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2857,7 +2739,6 @@ test = ["flaky", "pretend", "pytest (>=3.0.1)"] name = "pypng" version = "0.20220715.0" description = "Pure Python library for saving and loading PNG images" -category = "main" optional = false python-versions = "*" files = [ @@ -2869,7 +2750,6 @@ files = [ name = "pyproject-api" version = "1.6.1" description = "API to interact with the python pyproject.toml based projects" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2889,7 +2769,6 @@ testing = ["covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytes name = "pyquery" version = "2.0.0" description = "A jquery-like library for python" -category = "main" optional = false python-versions = "*" files = [ @@ -2908,7 +2787,6 @@ test = ["pytest", "pytest-cov", "requests", "webob", "webtest"] name = "pyreadline" version = "2.1" description = "A python implmementation of GNU readline." -category = "dev" optional = false python-versions = "*" files = [ @@ -2919,7 +2797,6 @@ files = [ name = "pyrepl" version = "0.9.0" description = "A library for building flexible command line interfaces" -category = "dev" optional = false python-versions = "*" files = [ @@ -2930,7 +2807,6 @@ files = [ name = "pysocks" version = "1.7.1" description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information." -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2943,7 +2819,6 @@ files = [ name = "pytest" version = "6.2.5" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2968,7 +2843,6 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm name = "pytest-asyncio" version = "0.20.3" description = "Pytest support for asyncio" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2987,7 +2861,6 @@ testing = ["coverage (>=6.2)", "flaky (>=3.5.0)", "hypothesis (>=5.7.1)", "mypy name = "pytest-base-url" version = "2.0.0" description = "pytest plugin for URL based testing" -category = "dev" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -3003,7 +2876,6 @@ requests = ">=2.9" name = "pytest-cov" version = "4.1.0" description = "Pytest plugin for measuring coverage." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3022,7 +2894,6 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale name = "pytest-cover" version = "3.0.0" description = "Pytest plugin for measuring coverage. Forked from `pytest-cov`." -category = "dev" optional = false python-versions = "*" files = [ @@ -3037,7 +2908,6 @@ pytest-cov = ">=2.0" name = "pytest-coverage" version = "0.0" description = "Pytest plugin for measuring coverage. Forked from `pytest-cov`." -category = "dev" optional = false python-versions = "*" files = [ @@ -3052,7 +2922,6 @@ pytest-cover = "*" name = "pytest-django" version = "4.5.2" description = "A Django plugin for pytest." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -3071,7 +2940,6 @@ testing = ["Django", "django-configurations (>=2.0)"] name = "pytest-echo" version = "1.7.1" description = "pytest plugin with mechanisms for echoing environment variables, package version and generic attributes" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -3085,7 +2953,6 @@ pytest = ">=2.2" name = "pytest-html" version = "3.2.0" description = "pytest plugin for generating HTML reports" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -3102,7 +2969,6 @@ pytest-metadata = "*" name = "pytest-metadata" version = "2.0.4" description = "pytest plugin for test session metadata" -category = "dev" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -3117,7 +2983,6 @@ pytest = ">=3.0.0,<8.0.0" name = "pytest-pythonpath" version = "0.7.4" description = "pytest plugin for adding to the PYTHONPATH from command line or configs." -category = "dev" optional = false python-versions = ">=2.6, <4" files = [ @@ -3132,7 +2997,6 @@ pytest = ">=2.5.2,<7" name = "pytest-selenium" version = "2.0.1" description = "pytest plugin for Selenium" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -3156,7 +3020,6 @@ appium = ["appium-python-client (>=0.44)"] name = "pytest-variables" version = "2.0.0" description = "pytest plugin for providing variables to tests/fixtures" -category = "dev" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -3176,7 +3039,6 @@ yaml = ["PyYAML"] name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -3191,7 +3053,6 @@ six = ">=1.5" name = "python3-openid" version = "3.2.0" description = "OpenID support for modern servers and consumers." -category = "main" optional = false python-versions = "*" files = [ @@ -3210,7 +3071,6 @@ postgresql = ["psycopg2"] name = "pytz" version = "2023.3.post1" description = "World timezone definitions, modern and historical" -category = "main" optional = false python-versions = "*" files = [ @@ -3222,7 +3082,6 @@ files = [ name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3231,6 +3090,7 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -3238,8 +3098,15 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -3256,6 +3123,7 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -3263,6 +3131,7 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -3272,7 +3141,6 @@ files = [ name = "qrcode" version = "7.4.2" description = "QR Code image generator" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3296,7 +3164,6 @@ test = ["coverage", "pytest"] name = "redis" version = "5.0.1" description = "Python client for Redis database and key-value store" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3315,7 +3182,6 @@ ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)" name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3337,7 +3203,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-oauthlib" version = "1.3.1" description = "OAuthlib authentication support for Requests." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3356,7 +3221,6 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] name = "selenium" version = "4.15.2" description = "" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3374,7 +3238,6 @@ urllib3 = {version = ">=1.26,<3", extras = ["socks"]} name = "sentry-sdk" version = "1.37.1" description = "Python client for Sentry (https://sentry.io)" -category = "main" optional = false python-versions = "*" files = [ @@ -3420,7 +3283,6 @@ tornado = ["tornado (>=5)"] name = "service-identity" version = "23.1.0" description = "Service identity verification for pyOpenSSL & cryptography." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3445,7 +3307,6 @@ tests = ["coverage[toml] (>=5.0.2)", "pytest"] name = "setuptools" version = "65.7.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3462,7 +3323,6 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs ( name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3474,7 +3334,6 @@ files = [ name = "sniffio" version = "1.3.0" description = "Sniff out which async library your code is running under" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3486,7 +3345,6 @@ files = [ name = "social-auth-app-django" version = "5.4.0" description = "Python Social Authentication, Django integration." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3502,7 +3360,6 @@ social-auth-core = ">=4.4.1" name = "social-auth-core" version = "4.5.0" description = "Python social authentication made simple." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3529,7 +3386,6 @@ saml = ["python3-saml (>=1.5.0)"] name = "sortedcontainers" version = "2.4.0" description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" -category = "dev" optional = false python-versions = "*" files = [ @@ -3541,7 +3397,6 @@ files = [ name = "soupsieve" version = "2.5" description = "A modern CSS selector implementation for Beautiful Soup." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3553,7 +3408,6 @@ files = [ name = "sqlparse" version = "0.4.4" description = "A non-validating SQL parser." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -3570,7 +3424,6 @@ test = ["pytest", "pytest-cov"] name = "stack-data" version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" -category = "dev" optional = false python-versions = "*" files = [ @@ -3590,7 +3443,6 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] name = "tablib" version = "3.5.0" description = "Format agnostic tabular data library (XLS, JSON, YAML, CSV, etc.)" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3620,7 +3472,6 @@ yaml = ["pyyaml"] name = "tenacity" version = "6.3.1" description = "Retry code until it succeeds" -category = "dev" optional = false python-versions = "*" files = [ @@ -3638,7 +3489,6 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"] name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3650,7 +3500,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3662,7 +3511,6 @@ files = [ name = "tox" version = "4.11.4" description = "tox is a generic virtualenv management and test command line tool" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3690,7 +3538,6 @@ testing = ["build[virtualenv] (>=0.10)", "covdefaults (>=2.3)", "detect-test-pol name = "traitlets" version = "5.14.0" description = "Traitlets Python configuration system" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3706,7 +3553,6 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, name = "trio" version = "0.23.1" description = "A friendly Python library for async concurrency and I/O" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3727,7 +3573,6 @@ sortedcontainers = "*" name = "trio-websocket" version = "0.11.1" description = "WebSocket library for Trio" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3744,7 +3589,6 @@ wsproto = ">=0.14" name = "twisted" version = "23.10.0" description = "An asynchronous networking framework written in Python" -category = "main" optional = false python-versions = ">=3.8.0" files = [ @@ -3784,7 +3628,6 @@ windows-platform = ["pywin32 (!=226)", "pywin32 (!=226)", "twisted[all-non-platf name = "twisted-iocpsupport" version = "1.0.4" description = "An extension for use in the twisted I/O Completion Ports reactor." -category = "main" optional = false python-versions = "*" files = [ @@ -3813,7 +3656,6 @@ files = [ name = "txaio" version = "23.1.1" description = "Compatibility API between asyncio/Twisted/Trollius" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3830,7 +3672,6 @@ twisted = ["twisted (>=20.3.0)", "zope.interface (>=5.2.0)"] name = "types-pytz" version = "2023.3.1.1" description = "Typing stubs for pytz" -category = "dev" optional = false python-versions = "*" files = [ @@ -3842,7 +3683,6 @@ files = [ name = "types-pyyaml" version = "6.0.12.12" description = "Typing stubs for PyYAML" -category = "dev" optional = false python-versions = "*" files = [ @@ -3854,7 +3694,6 @@ files = [ name = "typing-extensions" version = "4.8.0" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3866,7 +3705,6 @@ files = [ name = "tzdata" version = "2023.3" description = "Provider of IANA time zone data" -category = "main" optional = false python-versions = ">=2" files = [ @@ -3878,7 +3716,6 @@ files = [ name = "urllib3" version = "2.1.0" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3898,7 +3735,6 @@ zstd = ["zstandard (>=0.18.0)"] name = "vine" version = "5.1.0" description = "Python promises." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3910,7 +3746,6 @@ files = [ name = "virtualenv" version = "20.24.7" description = "Virtual Python Environment builder" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3931,7 +3766,6 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "waitress" version = "2.1.2" description = "Waitress WSGI server" -category = "dev" optional = false python-versions = ">=3.7.0" files = [ @@ -3947,7 +3781,6 @@ testing = ["coverage (>=5.0)", "pytest", "pytest-cover"] name = "watchdog" version = "2.3.1" description = "Filesystem events monitoring" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -3988,7 +3821,6 @@ watchmedo = ["PyYAML (>=3.10)"] name = "wcwidth" version = "0.2.12" description = "Measures the displayed width of unicode strings in a terminal" -category = "main" optional = false python-versions = "*" files = [ @@ -4000,7 +3832,6 @@ files = [ name = "webob" version = "1.8.7" description = "WSGI request and response object" -category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*" files = [ @@ -4016,7 +3847,6 @@ testing = ["coverage", "pytest (>=3.1.0)", "pytest-cov", "pytest-xdist"] name = "webtest" version = "3.0.0" description = "Helper to test WSGI applications" -category = "dev" optional = false python-versions = ">=3.6, <4" files = [ @@ -4037,7 +3867,6 @@ tests = ["PasteDeploy", "WSGIProxy2", "coverage", "pyquery", "pytest", "pytest-c name = "wmctrl" version = "0.5" description = "A tool to programmatically control windows inside X" -category = "dev" optional = false python-versions = ">=2.7" files = [ @@ -4055,7 +3884,6 @@ test = ["pytest"] name = "wsproto" version = "1.2.0" description = "WebSockets state-machine based protocol implementation" -category = "dev" optional = false python-versions = ">=3.7.0" files = [ @@ -4070,7 +3898,6 @@ h11 = ">=0.9.0,<1" name = "xlrd" version = "2.0.1" description = "Library for developers to extract data from Microsoft Excel (tm) .xls spreadsheet files" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -4087,7 +3914,6 @@ test = ["pytest", "pytest-cov"] name = "xlwt" version = "1.3.0" description = "Library to create spreadsheet files compatible with MS Excel 97/2000/XP/2003 XLS files, on any platform, with Python 2.6, 2.7, 3.3+" -category = "main" optional = false python-versions = "*" files = [ @@ -4099,7 +3925,6 @@ files = [ name = "zipp" version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -4115,7 +3940,6 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p name = "zope-interface" version = "6.1" description = "Interfaces for Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4168,4 +3992,4 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "089e4d0a93fec87d955b513ca9153a50bfbd44be335d3822fa082346d1b05855" +content-hash = "b5af96a61810ff103537cdd4d83f49885ef3c0a53e7fef617cb20edb8cb9c7e2" diff --git a/pyproject.toml b/pyproject.toml index a0dab0a4..d793107e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,6 +71,7 @@ pygments = "^2.14.0" soupsieve = "^2.4" pyquery = "^2.0.0" beautifulsoup4 = "^4.12.0" +django-anymail = {extras = ["mailjet"], version = "^10.2"} [tool.poetry.dev-dependencies] black = "^22.1.0" diff --git a/src/aurora/config/__init__.py b/src/aurora/config/__init__.py index 86e243f9..1b815d25 100644 --- a/src/aurora/config/__init__.py +++ b/src/aurora/config/__init__.py @@ -54,11 +54,9 @@ def parse_emails(value): "DEBUG": (bool, False), "DEBUG_PROPAGATE_EXCEPTIONS": (bool, False), "DJANGO_ADMIN_TITLE": (str, "Aurora"), - "EMAIL_BACKEND": (str, "django.core.mail.backends.smtp.EmailBackend"), - # "EMAIL_FROM_EMAIL": (str, ""), - # "EMAIL_HOST": (str, ""), - # "EMAIL_HOST_PASSWORD": (str, ""), - # "EMAIL_HOST_USER": (str, ""), + "EMAIL_BACKEND": (str, "anymail.backends.mailjet.EmailBackend"), + "MAILJET_API_KEY": (str, ""), + "MAILJET_SECRET_KEY": (str, ""), "EMAIL_PORT": (int, 587), # "EMAIL_SUBJECT_PREFIX": (str, "[Aurora]"), "EMAIL_TIMEOUT": (int, 30), diff --git a/src/aurora/config/settings.py b/src/aurora/config/settings.py index c2a27776..be647cb1 100644 --- a/src/aurora/config/settings.py +++ b/src/aurora/config/settings.py @@ -78,6 +78,7 @@ "simplemathcaptcha", "dbtemplates", "admin_sync", + "anymail", # --- "aurora.apps.Config", "aurora.flatpages.apps.Config", @@ -847,3 +848,7 @@ def show_ddt(request): # pragma: no-cover MATOMO_SITE = env("MATOMO_SITE", default="https://unisitetracker.unicef.io/") MATOMO_ID = env("MATOMO_ID", default="N/A") +ANYMAIL = { + "MAILJET_API_KEY": env("MAILJET_API_KEY"), + "MAILJET_SECRET_KEY": env("MAILJET_SECRET_KEY") +}