From b96d9e1085252a1c6ce4deb855651abead3d438f Mon Sep 17 00:00:00 2001 From: James Gilmore Date: Fri, 29 Mar 2024 18:55:20 +0000 Subject: [PATCH 1/5] Fix displaying the installed version of Django-Jazzmin in the UI. Since we changed our CD process and now will automatically generate test builds (#550), the version in the `__init__` file now needs to be updated to stop it from being hardcoded. As in development the version is now set to 0.0.0 in the `pyproject.toml` file, we need to get the version dyanmically. We can call the package manager to check which version of `django-jazzmin` was installed. This sadly does vary depending on which version of Python is installed - support for these older versions are soon to be dropped. --- jazzmin/__init__.py | 15 ++++++++++++++- pyproject.toml | 7 +++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/jazzmin/__init__.py b/jazzmin/__init__.py index 60bb152b..b05aa9db 100644 --- a/jazzmin/__init__.py +++ b/jazzmin/__init__.py @@ -1,6 +1,19 @@ import django +import sys + +# We automatically grab the version of `django-jazzmin` from the package manager instead of +# hard coding it. The method for determining the version changed since PY3.8. N.B. For +# development versions of `django-jazzmin`, the version will be 0.0.0 (see pyproject.toml) as it's +# not technically installed. +if sys.version_info >= (3, 8): + from importlib.metadata import version as package_version + + version = package_version("django-jazzmin") +else: + import pkg_resources + + version = pkg_resources.get_distribution("django-jazzmin").version -version = "2.6.1" if django.VERSION < (3, 2): default_app_config = "jazzmin.apps.JazzminConfig" diff --git a/pyproject.toml b/pyproject.toml index 9dde9809..f9b8f3c4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -146,3 +146,10 @@ commands = [build-system] requires = ["poetry>=0.12"] build-backend = "poetry.masonry.api" + + +[[tool.mypy.overrides]] +module = [ + "pkg_resources.*", +] +ignore_missing_imports = true From 6652607e0bdf4f2c72bd8587c9639d0b1ce4ec5e Mon Sep 17 00:00:00 2001 From: James Gilmore Date: Fri, 29 Mar 2024 18:58:52 +0000 Subject: [PATCH 2/5] Upgrade `black` which is broken with later versions of click ``` ImportError: cannot import name '_unicodefun' from 'click' ``` https://stackoverflow.com/a/71674345 --- poetry.lock | 56 ++++++++++++++++++++++++++++---------------------- pyproject.toml | 2 +- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/poetry.lock b/poetry.lock index ec90ca54..35409943 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.1 and should not be changed by hand. [[package]] name = "appnope" @@ -94,32 +94,38 @@ lxml = ["lxml"] [[package]] name = "black" -version = "21.12b0" +version = "22.12.0" description = "The uncompromising code formatter." optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7" files = [ - {file = "black-21.12b0-py3-none-any.whl", hash = "sha256:a615e69ae185e08fdd73e4715e260e2479c861b5740057fde6e8b4e3b7dd589f"}, - {file = "black-21.12b0.tar.gz", hash = "sha256:77b80f693a569e2e527958459634f18df9b0ba2625ba4e0c2d5da5be42e6f2b3"}, + {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, + {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, + {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, + {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, + {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, + {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, + {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, + {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, + {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, + {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, + {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, + {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, ] [package.dependencies] -click = ">=7.1.2" +click = ">=8.0.0" mypy-extensions = ">=0.4.3" -pathspec = ">=0.9.0,<1" +pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = ">=0.2.6,<2.0.0" +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""} -typing-extensions = [ - {version = ">=3.10.0.0,<3.10.0.1 || >3.10.0.1", markers = "python_version >= \"3.10\""}, - {version = ">=3.10.0.0", markers = "python_version < \"3.10\""}, -] +typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] colorama = ["colorama (>=0.4.3)"] d = ["aiohttp (>=3.7.4)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] -python2 = ["typed-ast (>=1.4.3)"] uvloop = ["uvloop (>=0.15.2)"] [[package]] @@ -1122,6 +1128,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"}, @@ -1129,8 +1136,16 @@ 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_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {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"}, @@ -1147,6 +1162,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"}, @@ -1154,6 +1170,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"}, @@ -1383,17 +1400,6 @@ files = [ {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, ] -[[package]] -name = "typing-extensions" -version = "4.10.0" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, - {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, -] - [[package]] name = "urllib3" version = "2.0.7" @@ -1517,4 +1523,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more [metadata] lock-version = "2.0" python-versions = ">=3.7" -content-hash = "a299eef37dc0b48fe8811fc90dcc9c68dfe1a9fcebd4cd3b065be0d782ca3868" +content-hash = "6b202bb41efb2c249a32c76378e1714b019dc9f09f69b9e8358c06867bbf509b" diff --git a/pyproject.toml b/pyproject.toml index f9b8f3c4..fe72bd6f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,7 +65,7 @@ factory-boy = "^3.2.1" # Factory generation mypy = "^0.931" # Type checking click = "^8.0.3" # Framework for building cli's ipdb = "^0.13.9" # ipython breakpoints -black = "^21.12b0" # Code formatting and linting (with pyproject.toml support) +black = "^22.3.0" # Code formatting and linting (with pyproject.toml support) [tool.poetry.urls] "Bug Tracker" = "https://github.com/farridav/django-jazzmin/issues" From 865206d56c42ce1b0101211dae88a57f1aedd88c Mon Sep 17 00:00:00 2001 From: James Gilmore Date: Fri, 29 Mar 2024 19:00:07 +0000 Subject: [PATCH 3/5] Fix poetry dependencies which changed its structure since v1.3 In 1.3 of poetry they implemented dependency groups and so the original "dev" dependency changed from `tool.poetry.dev-dependencies` to `tool.poetry.group.dev.dependencies`. --- pyproject.toml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index fe72bd6f..4e76b3a3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,14 +40,11 @@ exclude = ["tests", "docs"] python = ">=3.7" django = ">=3" -[tool.poetry.group.dev.dependencies] -pytest-cov = "^4.1.0" - [tool.black] line-length = 120 target-version = ['py310'] -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] django-debug-toolbar = "^3.2.4" # unparallelled debugging in django Werkzeug = "^2.0.2" # support for werkzeug debugger in runserver_plus django-extensions = "^3.1.5" # Django Sugar for development From 110f96e8b8e09f38b8d86d226bc0dd7959ac6a07 Mon Sep 17 00:00:00 2001 From: James Gilmore Date: Fri, 29 Mar 2024 19:11:43 +0000 Subject: [PATCH 4/5] Add simple tests to validate that we're able to get the version Add a test to ensure that for every version of Python we support we're able to get the version. Not checking what that version is as that almost defeats the point of the test. --- tests/test_init.py | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 tests/test_init.py diff --git a/tests/test_init.py b/tests/test_init.py new file mode 100644 index 00000000..3c68c4b2 --- /dev/null +++ b/tests/test_init.py @@ -0,0 +1,8 @@ +import jazzmin + + +def test_version(): + """ + Tests getting the version of the installed package in all versions of Python we support. + """ + assert jazzmin.version >= "0.0.0" From ed8d3ba819fd0b950591516302f6b4e2faeb19fe Mon Sep 17 00:00:00 2001 From: James Gilmore Date: Sat, 30 Mar 2024 13:15:25 +0000 Subject: [PATCH 5/5] Add `django-jazzmin` to list of tox dependencies to get version To be able to automatically get the version of the installed package of `django-jazzmin` we need to explicitly install the package as well. --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 4e76b3a3..89b85a30 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -117,6 +117,7 @@ commands = {envpython} -m flake8 jazzmin --max-line-length 120 {envpython} -m pytest deps = + django-jazzmin # Installing self to allow automatic getting of `version` which needs `django-jazzmin` to be install to get information about the package. flake9 pytest pytest-django