diff --git a/.gitignore b/.gitignore index 725454b..d89a554 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ Pipfile Pipfile.lock .coverage .tox/ +.env diff --git a/CHANGELOG.md b/CHANGELOG.md index 1011377..dde407c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -* 4.0.5 Updates panel to work with upcoming `serializable` branch. +* 4.1 + - Updates panel to work with upcoming `serializable` branch. (Thanks @tim-schilling for the heads up on this.) + - Adds async support (Thanks @dchukhin) + - Increases font-size now that screens are larger and adds subtle depth back to UI. + + * 4.0.4 Patches issue with missing alternatives attribute in mail object. * 4.0.2 Mail panel is added by default to the debug toolbar. * 4.0.0 Adds support for Django 4.0 diff --git a/README.md b/README.md index 2e42e92..82fd334 100755 --- a/README.md +++ b/README.md @@ -114,11 +114,26 @@ original_outbox = len(mail.outbox) assert(len(mail.outbox) == original_outbox + 1) ``` -Shameless Plugs -======= -Like Django Mail Panel? Be sure to check out and support these other tools for Mac that will improve your workflow: +Contributing +============ + +Install the development dependencies: -**[Kubermagic](https://echodot.com/kubermagic/)** - Automate, and script away tedious kubectl commands with Kubermagic; a UI for developers, QA teams, and those starting to learn the ins-and-outs of Kubernetes. +```bash +poetry install --with dev +``` +Run the tests on your current python: + +```bash +pytest . +``` + + + + +Shameless Plugs +======= +Like Django Mail Panel? Be sure to check out and support this other tool for Mac that will improve your workflow: **[Red](https://echodot.com/red/)** - A visual and interactive Redis client, featuring live updating keys, an interactive console, pub/sub, lua script support and much more. diff --git a/mail_panel/static/debug_toolbar/mail/mail_toolbar.css b/mail_panel/static/debug_toolbar/mail/mail_toolbar.css index 6020139..8b7ead2 100644 --- a/mail_panel/static/debug_toolbar/mail/mail_toolbar.css +++ b/mail_panel/static/debug_toolbar/mail/mail_toolbar.css @@ -15,7 +15,21 @@ border: 0; margin: 0; } +#djDebug .djm-mail-toolbar .t-center{ + text-align: center; + vertical-align: middle; +} +#djDebug .djm-mail-toolbar thead{ + background: linear-gradient( + to bottom, + #fff 0%, + #fcfcfc 20%, + #f9f9f9 80%, + #f5f5f5 100% + ); + +} #djDebug .djm-mail-toolbar tr{ display:table-row; width: 100%; @@ -26,34 +40,42 @@ color: white; } #djDebug .djm-mail-toolbar tbody tr:hover{ - background-color: #f5f5f5; + background-color: #f5f5f5!important; } #djDebug .djm-mail-toolbar thead th{ font-weight:300; - font-size: 12px; border-bottom: 1px solid #d5d6d5; border-left: 1px solid #e5e5e5; + font-size: 12px; + padding: 5px; + text-shadow: 0 1px 0 rgba(255,255,255,.5); } + #djDebug .djm-mail-toolbar thead th:first-child{ border-left: 0px; } -#djDebug .djm-mail-toolbar th,#djDebug .djm-mail-toolbar td{ - display:table-cell; +#djDebug .djm-mail-toolbar th,#djDebug .djm-mail-toolbar tbody td{ + display: table-cell; + font-size: 14px; + padding: 4px; } #djDebug .djm-mail-toolbar .djm-unread-cell{ - width: 18px; + width: 24px; } #djDebug .djm-mail-toolbar .djm-unread{ display:block; background-color: #6cadf0 !important; - height: 8px; - width: 8px; + height: 9px; + width: 9px; margin: 5px 5px 0px 5px; border-radius:10px; - box-shadow: -1px -1px 3px rgba(0,0,0,.25) inset; - + box-shadow: + 1px 1px 2px rgba(255, 255, 255, 0.2), /* Outer highlight for raised effect */ + inset -1px -1px 1px rgba(0, 0, 0, 0.1), /* Inner shadow for bevel */ + inset 1px 1px 1px rgba(255, 255, 255, 0.3); /* Inner highlight for bevel */ } + #djDebug .djm-mail-toolbar .djm-message-list { max-height: 500px; overflow: scroll; @@ -80,6 +102,7 @@ #djDebug .djm-mail-toolbar .djm-date-sent{ float: right; color: #888 !important; + font-size:14px; } #djDebug .djm-mail-toolbar .djm-extra-headers{ border-top: 1px solid #f5f5f5; @@ -101,20 +124,27 @@ cursor:pointer; border: 1px solid #f5f5f5; background: white; - color: #777; + color: #333; float: right; margin-top:-15px; margin-left: 5px; position:relative; z-index:99; + background-image: linear-gradient(179deg, #FFFFFF 5%, #f9f9f9f9 47%, #f0f0f0f0 52%, #F3F3F3 100%); + border: 1px solid #939393; + box-shadow: 0px 1px 0 0 rgba(255,255,255,.35); + border-radius: 5px; + } #djDebug .djm-mail-toolbar span.djm-multipart-tab.djm-multipart-tab-select{ - color: black; + color: white; + background-image: linear-gradient(180deg, #888 5%, #999 40%, #aa9 60%, #ccc 100%); + box-shadow: inset 0px 2px 3px 0 rgba(0,0,0,.15) ; } #djDebug .djm-mail-toolbar #plain_text_message, #djDebug .djm-mail-toolbar #raw_message{ - font-size: 12px; + font-size: 14px; margin: 10px 0px; } #djDebug .djm-mail-toolbar #plain_text_message{ @@ -133,16 +163,20 @@ #djDebug .djm-mail-toolbar span.djm-attachment{ background: url(data:image/png;base64,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); - no-repeat - center; + background-repeat: no-repeat; + background-position: center; background-size: 15px 15px; - border: 2px solid #blue; display:inline-block; width: 15px; height: 15px; margin-right: 5px; } #djDebug .djm-mail-toolbar .table-icon{ - height: 14px; + height: 16px; margin-top: 2px; } + +#djm_message_overview span, #djm_message_overview b , #djm_message_overview div{ + font-size: 14px; +} + diff --git a/mail_panel/templates/mail_panel/message_overview.html b/mail_panel/templates/mail_panel/message_overview.html index c998389..db923e2 100644 --- a/mail_panel/templates/mail_panel/message_overview.html +++ b/mail_panel/templates/mail_panel/message_overview.html @@ -38,4 +38,4 @@

Mail message could not be found

{% endfor %} -{% endif %} \ No newline at end of file +{% endif %} diff --git a/mail_panel/templates/mail_panel/panel.html b/mail_panel/templates/mail_panel/panel.html index 725cf30..82d1ef1 100644 --- a/mail_panel/templates/mail_panel/panel.html +++ b/mail_panel/templates/mail_panel/panel.html @@ -19,8 +19,8 @@ To Subject Date Sent - - + + {% endspaceless %} @@ -32,7 +32,7 @@ {{message.subject}} {{message.date_sent}} {% if message.attachments %}{{message.attachments|length}} items{% endif %} - + {% endfor %} diff --git a/poetry.lock b/poetry.lock index f99e7ef..202f5d0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,72 +1,190 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. + +[[package]] +name = "asgiref" +version = "3.8.1" +description = "ASGI specs, helper code, and adapters" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, + {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""} + +[package.extras] +tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] [[package]] name = "bump2version" version = "1.0.1" description = "Version-bump your software with a single command!" -category = "dev" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "bump2version-1.0.1-py2.py3-none-any.whl", hash = "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410"}, {file = "bump2version-1.0.1.tar.gz", hash = "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6"}, ] +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] +markers = "sys_platform == \"win32\"" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + [[package]] name = "django" -version = "2.2.28" -description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design." -category = "main" +version = "4.2.23" +description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "Django-2.2.28-py3-none-any.whl", hash = "sha256:365429d07c1336eb42ba15aa79f45e1c13a0b04d5c21569e7d596696418a6a45"}, - {file = "Django-2.2.28.tar.gz", hash = "sha256:0200b657afbf1bc08003845ddda053c7641b9b24951e52acd51f6abda33a7413"}, + {file = "django-4.2.23-py3-none-any.whl", hash = "sha256:dafbfaf52c2f289bd65f4ab935791cb4fb9a198f2a5ba9faf35d7338a77e9803"}, + {file = "django-4.2.23.tar.gz", hash = "sha256:42fdeaba6e6449d88d4f66de47871015097dc6f1b87910db00a91946295cfae4"}, ] [package.dependencies] -pytz = "*" -sqlparse = ">=0.2.2" +asgiref = ">=3.6.0,<4" +sqlparse = ">=0.3.1" +tzdata = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] -argon2 = ["argon2-cffi (>=16.1.0)"] +argon2 = ["argon2-cffi (>=19.1.0)"] bcrypt = ["bcrypt"] [[package]] name = "django-debug-toolbar" -version = "1.11.1" +version = "5.2.0" description = "A configurable set of panels that display various debug information about the current request/response." -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "django_debug_toolbar-5.2.0-py3-none-any.whl", hash = "sha256:15627f4c2836a9099d795e271e38e8cf5204ccd79d5dbcd748f8a6c284dcd195"}, + {file = "django_debug_toolbar-5.2.0.tar.gz", hash = "sha256:9e7f0145e1a1b7d78fcc3b53798686170a5b472d9cf085d88121ff823e900821"}, +] + +[package.dependencies] +django = ">=4.2.9" +sqlparse = ">=0.2" + +[[package]] +name = "exceptiongroup" +version = "1.3.0" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +markers = "python_version < \"3.11\"" files = [ - {file = "django-debug-toolbar-1.11.1.tar.gz", hash = "sha256:10f5ef59c97fad34b803b02e5850b6422082e2e44544c2ec03feb4eeee0f9158"}, - {file = "django_debug_toolbar-1.11.1-py2.py3-none-any.whl", hash = "sha256:2d240517dac3b02b7d78c9109ee88546f99171a2ec2a3efa70450771cb55735e"}, + {file = "exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10"}, + {file = "exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88"}, ] [package.dependencies] -Django = ">=1.11" -sqlparse = ">=0.2.0" +typing-extensions = {version = ">=4.6.0", markers = "python_version < \"3.13\""} + +[package.extras] +test = ["pytest (>=6)"] [[package]] -name = "pytz" -version = "2021.1" -description = "World timezone definitions, modern and historical" -category = "main" +name = "iniconfig" +version = "2.1.0" +description = "brain-dead simple config-ini parsing" optional = false -python-versions = "*" +python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "pytz-2021.1-py2.py3-none-any.whl", hash = "sha256:eb10ce3e7736052ed3623d49975ce333bcd712c7bb19a58b9e2089d4057d0798"}, - {file = "pytz-2021.1.tar.gz", hash = "sha256:83a4a90894bf38e243cf052c8b58f381bfe9a7a483f6a9cab140bc7f702ac4da"}, + {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, + {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, ] +[[package]] +name = "packaging" +version = "25.0" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, + {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["coverage", "pytest", "pytest-benchmark"] + +[[package]] +name = "pygments" +version = "2.19.1" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pytest" +version = "8.4.0" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "pytest-8.4.0-py3-none-any.whl", hash = "sha256:f40f825768ad76c0977cbacdf1fd37c6f7a468e460ea6a0636078f8972d4517e"}, + {file = "pytest-8.4.0.tar.gz", hash = "sha256:14d920b48472ea0dbf68e45b96cd1ffda4705f33307dcc86c676c1b5104838a6"}, +] + +[package.dependencies] +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1", markers = "python_version < \"3.11\""} +iniconfig = ">=1" +packaging = ">=20" +pluggy = ">=1.5,<2" +pygments = ">=2.7.2" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] + [[package]] name = "sqlparse" version = "0.4.4" description = "A non-validating SQL parser." -category = "main" optional = false python-versions = ">=3.5" +groups = ["main"] files = [ {file = "sqlparse-0.4.4-py3-none-any.whl", hash = "sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3"}, {file = "sqlparse-0.4.4.tar.gz", hash = "sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c"}, @@ -77,7 +195,76 @@ dev = ["build", "flake8"] doc = ["sphinx"] test = ["pytest", "pytest-cov"] +[[package]] +name = "tomli" +version = "2.2.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +markers = "python_version < \"3.11\"" +files = [ + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, +] + +[[package]] +name = "typing-extensions" +version = "4.14.0" +description = "Backported and Experimental Type Hints for Python 3.9+" +optional = false +python-versions = ">=3.9" +groups = ["main", "dev"] +markers = "python_version < \"3.11\"" +files = [ + {file = "typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af"}, + {file = "typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4"}, +] + +[[package]] +name = "tzdata" +version = "2025.2" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +groups = ["main"] +markers = "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"}, +] + [metadata] -lock-version = "2.0" -python-versions = "^3.5" -content-hash = "6dc3d5a3ae5511cf2c4ad3589a726d797d2394b80b882e17a014c6a02c748039" +lock-version = "2.1" +python-versions = "^3.9" +content-hash = "b64d7fa3cd2e20adb1b5080b069847ea20b1f30e390ffc04dadcc167097dfb91" diff --git a/pyproject.toml b/pyproject.toml index b7ee1e7..65785f7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,13 +16,11 @@ classifiers = [ 'License :: OSI Approved :: Apache Software License', 'Programming Language :: Python', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.13', ] include = [ "LICENSE", @@ -33,11 +31,12 @@ packages = [ ] [tool.poetry.dependencies] -python = "^3.5" -django-debug-toolbar = ">=1.0" +python = "^3.9" +django-debug-toolbar = "5.2.0" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] bump2version = "^1.0.1" +pytest = "^8.4.0" [build-system] requires = ["poetry-core>=1.0.0"] @@ -53,4 +52,4 @@ testpaths = [ source = [ "tests", "mail_panel", -] \ No newline at end of file +]