django-debug-toolbar 6.0.0__tar.gz → 6.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/.editorconfig +3 -0
  2. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/.github/PULL_REQUEST_TEMPLATE.md +3 -0
  3. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/.github/dependabot.yml +2 -0
  4. django_debug_toolbar-6.2.0/.github/release.yml +6 -0
  5. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/.github/workflows/coverage.yml +2 -2
  6. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/.github/workflows/release.yml +15 -11
  7. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/.github/workflows/test.yml +118 -24
  8. django_debug_toolbar-6.2.0/.github/workflows/zizmor.yml +26 -0
  9. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/.gitignore +2 -1
  10. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/.pre-commit-config.yaml +6 -6
  11. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/PKG-INFO +5 -5
  12. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/README.rst +1 -1
  13. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/biome.json +4 -1
  14. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/__init__.py +1 -1
  15. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/_compat.py +10 -0
  16. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/_stubs.py +7 -2
  17. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/apps.py +29 -0
  18. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/forms.py +2 -1
  19. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/en/LC_MESSAGES/django.po +101 -43
  20. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/middleware.py +18 -10
  21. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/__init__.py +3 -2
  22. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/cache.py +22 -13
  23. django_debug_toolbar-6.2.0/debug_toolbar/panels/community.py +13 -0
  24. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/history/__init__.py +1 -1
  25. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/history/panel.py +16 -14
  26. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/history/views.py +11 -7
  27. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/redirects.py +12 -0
  28. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/settings.py +10 -2
  29. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/sql/tracking.py +16 -7
  30. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/templates/panel.py +1 -1
  31. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/timer.py +2 -0
  32. django_debug_toolbar-6.2.0/debug_toolbar/sanitize.py +12 -0
  33. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/settings.py +7 -5
  34. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/static/debug_toolbar/css/toolbar.css +41 -0
  35. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/store.py +1 -5
  36. django_debug_toolbar-6.2.0/debug_toolbar/templates/debug_toolbar/panels/community.html +48 -0
  37. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/settings.html +1 -1
  38. django_debug_toolbar-6.2.0/debug_toolbar/templates/debug_toolbar/redirect.html +75 -0
  39. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/toolbar.py +52 -31
  40. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/utils.py +15 -1
  41. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/views.py +8 -5
  42. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/docs/architecture.rst +3 -1
  43. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/docs/changes.rst +46 -0
  44. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/docs/conf.py +1 -1
  45. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/docs/configuration.rst +16 -4
  46. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/docs/contributing.rst +72 -1
  47. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/docs/installation.rst +5 -3
  48. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/docs/panels.rst +16 -0
  49. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/docs/spelling_wordlist.txt +2 -0
  50. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/settings.py +1 -1
  51. django_debug_toolbar-6.2.0/example/templates/cache.html +11 -0
  52. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/templates/index.html +1 -0
  53. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/urls.py +2 -0
  54. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/views.py +8 -0
  55. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/pyproject.toml +5 -4
  56. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/base.py +1 -2
  57. django_debug_toolbar-6.2.0/tests/panels/__init__.py +0 -0
  58. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/panels/test_cache.py +4 -0
  59. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/panels/test_history.py +4 -0
  60. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/panels/test_redirects.py +18 -0
  61. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/panels/test_settings.py +21 -2
  62. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/panels/test_sql.py +120 -1
  63. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/settings.py +4 -0
  64. django_debug_toolbar-6.2.0/tests/test_apps.py +47 -0
  65. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/test_csp_rendering.py +32 -10
  66. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/test_integration_async.py +24 -0
  67. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/test_middleware.py +8 -3
  68. django_debug_toolbar-6.2.0/tests/test_sanitize.py +18 -0
  69. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/test_store.py +9 -0
  70. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/views.py +3 -1
  71. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tox.ini +11 -10
  72. django_debug_toolbar-6.0.0/debug_toolbar/templates/debug_toolbar/redirect.html +0 -15
  73. /django_debug_toolbar-6.0.0/debug_toolbar/management/__init__.py → /django_debug_toolbar-6.2.0/.git-blame-ignore-revs +0 -0
  74. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/.readthedocs.yaml +0 -0
  75. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/.tx/config +0 -0
  76. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/CODE_OF_CONDUCT.md +0 -0
  77. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/CONTRIBUTING.md +0 -0
  78. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/LICENSE +0 -0
  79. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/Makefile +0 -0
  80. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/SECURITY.md +0 -0
  81. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/decorators.py +0 -0
  82. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/bg/LC_MESSAGES/django.mo +0 -0
  83. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/bg/LC_MESSAGES/django.po +0 -0
  84. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/ca/LC_MESSAGES/django.mo +0 -0
  85. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/ca/LC_MESSAGES/django.po +0 -0
  86. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/cs/LC_MESSAGES/django.mo +0 -0
  87. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/cs/LC_MESSAGES/django.po +0 -0
  88. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/de/LC_MESSAGES/django.mo +0 -0
  89. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/de/LC_MESSAGES/django.po +0 -0
  90. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/en/LC_MESSAGES/django.mo +0 -0
  91. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/es/LC_MESSAGES/django.mo +0 -0
  92. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/es/LC_MESSAGES/django.po +0 -0
  93. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/fa/LC_MESSAGES/django.mo +0 -0
  94. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/fa/LC_MESSAGES/django.po +0 -0
  95. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/fi/LC_MESSAGES/django.mo +0 -0
  96. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/fi/LC_MESSAGES/django.po +0 -0
  97. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/fr/LC_MESSAGES/django.mo +0 -0
  98. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/fr/LC_MESSAGES/django.po +0 -0
  99. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/he/LC_MESSAGES/django.mo +0 -0
  100. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/he/LC_MESSAGES/django.po +0 -0
  101. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/id/LC_MESSAGES/django.mo +0 -0
  102. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/id/LC_MESSAGES/django.po +0 -0
  103. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/it/LC_MESSAGES/django.mo +0 -0
  104. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/it/LC_MESSAGES/django.po +0 -0
  105. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/ja/LC_MESSAGES/django.mo +0 -0
  106. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/ja/LC_MESSAGES/django.po +0 -0
  107. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/ko/LC_MESSAGES/django.mo +0 -0
  108. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/ko/LC_MESSAGES/django.po +0 -0
  109. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/nl/LC_MESSAGES/django.mo +0 -0
  110. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/nl/LC_MESSAGES/django.po +0 -0
  111. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/pl/LC_MESSAGES/django.mo +0 -0
  112. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/pl/LC_MESSAGES/django.po +0 -0
  113. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/pt/LC_MESSAGES/django.mo +0 -0
  114. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/pt/LC_MESSAGES/django.po +0 -0
  115. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  116. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/pt_BR/LC_MESSAGES/django.po +0 -0
  117. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/ru/LC_MESSAGES/django.mo +0 -0
  118. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/ru/LC_MESSAGES/django.po +0 -0
  119. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/sk/LC_MESSAGES/django.mo +0 -0
  120. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/sk/LC_MESSAGES/django.po +0 -0
  121. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.mo +0 -0
  122. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/sv_SE/LC_MESSAGES/django.po +0 -0
  123. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/uk/LC_MESSAGES/django.mo +0 -0
  124. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/uk/LC_MESSAGES/django.po +0 -0
  125. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.mo +0 -0
  126. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/locale/zh_CN/LC_MESSAGES/django.po +0 -0
  127. {django_debug_toolbar-6.0.0/debug_toolbar/management/commands → django_debug_toolbar-6.2.0/debug_toolbar/management}/__init__.py +0 -0
  128. {django_debug_toolbar-6.0.0/debug_toolbar/migrations → django_debug_toolbar-6.2.0/debug_toolbar/management/commands}/__init__.py +0 -0
  129. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/management/commands/debugsqlshell.py +0 -0
  130. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/migrations/0001_initial.py +0 -0
  131. {django_debug_toolbar-6.0.0/debug_toolbar/templatetags → django_debug_toolbar-6.2.0/debug_toolbar/migrations}/__init__.py +0 -0
  132. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/models.py +0 -0
  133. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/alerts.py +0 -0
  134. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/headers.py +0 -0
  135. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/history/forms.py +0 -0
  136. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/profiling.py +0 -0
  137. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/request.py +0 -0
  138. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/signals.py +0 -0
  139. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/sql/__init__.py +0 -0
  140. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/sql/forms.py +0 -0
  141. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/sql/panel.py +0 -0
  142. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/sql/utils.py +0 -0
  143. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/sql/views.py +0 -0
  144. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/staticfiles.py +0 -0
  145. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/templates/__init__.py +0 -0
  146. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/templates/jinja2.py +0 -0
  147. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/templates/views.py +0 -0
  148. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/panels/versions.py +0 -0
  149. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/static/debug_toolbar/css/print.css +0 -0
  150. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/static/debug_toolbar/js/history.js +0 -0
  151. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/static/debug_toolbar/js/redirect.js +0 -0
  152. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/static/debug_toolbar/js/timer.js +0 -0
  153. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/static/debug_toolbar/js/toolbar.js +0 -0
  154. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/static/debug_toolbar/js/utils.js +0 -0
  155. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/base.html +0 -0
  156. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/includes/panel_button.html +0 -0
  157. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/includes/panel_content.html +0 -0
  158. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/includes/theme_selector.html +0 -0
  159. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/alerts.html +0 -0
  160. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/cache.html +0 -0
  161. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/headers.html +0 -0
  162. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/history.html +0 -0
  163. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/history_tr.html +0 -0
  164. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/profiling.html +0 -0
  165. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/request.html +0 -0
  166. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/request_variables.html +0 -0
  167. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/signals.html +0 -0
  168. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/sql.html +0 -0
  169. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/sql_explain.html +0 -0
  170. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/sql_profile.html +0 -0
  171. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/sql_select.html +0 -0
  172. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/staticfiles.html +0 -0
  173. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/template_source.html +0 -0
  174. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/templates.html +0 -0
  175. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/timer.html +0 -0
  176. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/templates/debug_toolbar/panels/versions.html +0 -0
  177. {django_debug_toolbar-6.0.0/example → django_debug_toolbar-6.2.0/debug_toolbar/templatetags}/__init__.py +0 -0
  178. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/debug_toolbar/urls.py +0 -0
  179. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/docs/Makefile +0 -0
  180. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/docs/checks.rst +0 -0
  181. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/docs/commands.rst +0 -0
  182. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/docs/index.rst +0 -0
  183. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/docs/make.bat +0 -0
  184. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/docs/resources.rst +0 -0
  185. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/docs/tips.rst +0 -0
  186. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/README.rst +0 -0
  187. {django_debug_toolbar-6.0.0/example/async_ → django_debug_toolbar-6.2.0/example}/__init__.py +0 -0
  188. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/asgi.py +0 -0
  189. {django_debug_toolbar-6.0.0/tests → django_debug_toolbar-6.2.0/example/async_}/__init__.py +0 -0
  190. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/async_/settings.py +0 -0
  191. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/async_/urls.py +0 -0
  192. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/async_/views.py +0 -0
  193. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/django-debug-toolbar.png +0 -0
  194. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/example.db +0 -0
  195. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/manage.py +0 -0
  196. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/screenshot.py +0 -0
  197. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/static/test.css +0 -0
  198. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/templates/async_db.html +0 -0
  199. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/templates/bad_form.html +0 -0
  200. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/templates/htmx/boost.html +0 -0
  201. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/templates/jinja2/index.jinja +0 -0
  202. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/templates/jquery/index.html +0 -0
  203. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/templates/mootools/index.html +0 -0
  204. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/templates/prototype/index.html +0 -0
  205. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/templates/turbo/index.html +0 -0
  206. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/test_views.py +0 -0
  207. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/example/wsgi.py +0 -0
  208. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/requirements_dev.txt +0 -0
  209. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/setup.py +0 -0
  210. {django_debug_toolbar-6.0.0/tests/commands → django_debug_toolbar-6.2.0/tests}/__init__.py +0 -0
  211. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/additional_static/base.css +0 -0
  212. {django_debug_toolbar-6.0.0/tests/panels → django_debug_toolbar-6.2.0/tests/commands}/__init__.py +0 -0
  213. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/commands/test_debugsqlshell.py +0 -0
  214. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/context_processors.py +0 -0
  215. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/forms.py +0 -0
  216. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/loaders.py +0 -0
  217. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/middleware.py +0 -0
  218. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/models.py +0 -0
  219. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/panels/test_alerts.py +0 -0
  220. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/panels/test_async_panel_compatibility.py +0 -0
  221. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/panels/test_custom.py +0 -0
  222. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/panels/test_profiling.py +0 -0
  223. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/panels/test_request.py +0 -0
  224. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/panels/test_staticfiles.py +0 -0
  225. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/panels/test_template.py +0 -0
  226. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/panels/test_versions.py +0 -0
  227. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/sync.py +0 -0
  228. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/templates/ajax/ajax.html +0 -0
  229. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/templates/base.html +0 -0
  230. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/templates/basic.html +0 -0
  231. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/templates/jinja2/base.html +0 -0
  232. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/templates/jinja2/basic.jinja +0 -0
  233. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/templates/registration/login.html +0 -0
  234. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/templates/sql/flat.html +0 -0
  235. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/templates/sql/included.html +0 -0
  236. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/templates/sql/nested.html +0 -0
  237. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/templates/staticfiles/async_static.html +0 -0
  238. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/templates/staticfiles/path.html +0 -0
  239. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/test_checks.py +0 -0
  240. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/test_decorators.py +0 -0
  241. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/test_forms.py +0 -0
  242. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/test_integration.py +0 -0
  243. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/test_login_not_required.py +0 -0
  244. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/test_models.py +0 -0
  245. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/test_settings.py +0 -0
  246. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/test_toolbar.py +0 -0
  247. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/test_utils.py +0 -0
  248. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/urls.py +0 -0
  249. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/urls_invalid.py +0 -0
  250. {django_debug_toolbar-6.0.0 → django_debug_toolbar-6.2.0}/tests/urls_use_package_urls.py +0 -0
@@ -18,3 +18,6 @@ indent_style = tab
18
18
 
19
19
  [*.bat]
20
20
  indent_style = tab
21
+
22
+ [*.yml]
23
+ indent_size = 2
@@ -10,3 +10,6 @@ Fixes # (issue)
10
10
 
11
11
  - [ ] I have added the relevant tests for this change.
12
12
  - [ ] I have added an item to the Pending section of ``docs/changes.rst``.
13
+
14
+ #### AI/LLM Usage
15
+ - [ ] This PR includes code generated with the help of an AI/LLM
@@ -11,3 +11,5 @@ updates:
11
11
  - "*" # Group all Actions updates into a single larger pull request
12
12
  schedule:
13
13
  interval: weekly
14
+ cooldown:
15
+ default-days: 7
@@ -0,0 +1,6 @@
1
+ ---
2
+ changelog:
3
+ exclude:
4
+ authors:
5
+ - dependabot[bot]
6
+ - pre-commit-ci[bot]
@@ -2,7 +2,7 @@
2
2
  name: Post coverage comment
3
3
 
4
4
  on:
5
- workflow_run:
5
+ workflow_run: # zizmor: ignore[dangerous-triggers] - This follows GitHub's recommended pattern for posting PR comments from untrusted forks
6
6
  workflows: ["Test"]
7
7
  types:
8
8
  - completed
@@ -27,7 +27,7 @@ jobs:
27
27
  # DO NOT run actions/checkout here, for security reasons
28
28
  # For details, refer to https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
29
29
  - name: Post comment
30
- uses: py-cov-action/python-coverage-comment-action@v3
30
+ uses: py-cov-action/python-coverage-comment-action@e623398c19eb3853a5572d4a516e10b15b5cefbc # v3.39
31
31
  with:
32
32
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
33
33
  GITHUB_PR_RUN_ID: ${{ github.event.workflow_run.id }}
@@ -2,6 +2,8 @@ name: Publish Python 🐍 distribution 📦 to PyPI and TestPyPI
2
2
 
3
3
  on: push
4
4
 
5
+ permissions: {}
6
+
5
7
  env:
6
8
  PYPI_URL: https://pypi.org/p/django-debug-toolbar
7
9
  PYPI_TEST_URL: https://test.pypi.org/p/django-debug-toolbar
@@ -13,9 +15,11 @@ jobs:
13
15
  runs-on: ubuntu-latest
14
16
 
15
17
  steps:
16
- - uses: actions/checkout@v4
18
+ - uses: actions/checkout@v5
19
+ with:
20
+ persist-credentials: false
17
21
  - name: Set up Python
18
- uses: actions/setup-python@v5
22
+ uses: actions/setup-python@v6
19
23
  with:
20
24
  python-version: "3.x"
21
25
  - name: Install pypa/build
@@ -24,7 +28,7 @@ jobs:
24
28
  - name: Build a binary wheel and a source tarball
25
29
  run: python3 -m build
26
30
  - name: Store the distribution packages
27
- uses: actions/upload-artifact@v4
31
+ uses: actions/upload-artifact@v5
28
32
  with:
29
33
  name: python-package-distributions
30
34
  path: dist/
@@ -43,12 +47,12 @@ jobs:
43
47
  id-token: write # IMPORTANT: mandatory for trusted publishing
44
48
  steps:
45
49
  - name: Download all the dists
46
- uses: actions/download-artifact@v4
50
+ uses: actions/download-artifact@v6
47
51
  with:
48
52
  name: python-package-distributions
49
53
  path: dist/
50
54
  - name: Publish distribution 📦 to PyPI
51
- uses: pypa/gh-action-pypi-publish@release/v1.12
55
+ uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # release/v1.13
52
56
 
53
57
  github-release:
54
58
  name: >-
@@ -64,12 +68,12 @@ jobs:
64
68
 
65
69
  steps:
66
70
  - name: Download all the dists
67
- uses: actions/download-artifact@v4
71
+ uses: actions/download-artifact@v6
68
72
  with:
69
73
  name: python-package-distributions
70
74
  path: dist/
71
75
  - name: Sign the dists with Sigstore
72
- uses: sigstore/gh-action-sigstore-python@v3.0.1
76
+ uses: sigstore/gh-action-sigstore-python@f832326173235dcb00dd5d92cd3f353de3188e6c # v3.1.0
73
77
  with:
74
78
  inputs: >-
75
79
  ./dist/*.tar.gz
@@ -79,7 +83,7 @@ jobs:
79
83
  GITHUB_TOKEN: ${{ github.token }}
80
84
  run: >-
81
85
  gh release create
82
- '${{ github.ref_name }}'
86
+ "${GITHUB_REF_NAME}"
83
87
  --repo '${{ github.repository }}'
84
88
  --notes ""
85
89
  - name: Upload artifact signatures to GitHub Release
@@ -90,7 +94,7 @@ jobs:
90
94
  # sigstore-produced signatures and certificates.
91
95
  run: >-
92
96
  gh release upload
93
- '${{ github.ref_name }}' dist/**
97
+ "${GITHUB_REF_NAME}" dist/**
94
98
  --repo '${{ github.repository }}'
95
99
 
96
100
  publish-to-testpypi:
@@ -109,12 +113,12 @@ jobs:
109
113
 
110
114
  steps:
111
115
  - name: Download all the dists
112
- uses: actions/download-artifact@v4
116
+ uses: actions/download-artifact@v6
113
117
  with:
114
118
  name: python-package-distributions
115
119
  path: dist/
116
120
  - name: Publish distribution 📦 to TestPyPI
117
- uses: pypa/gh-action-pypi-publish@release/v1.12
121
+ uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # release/v1.13
118
122
  with:
119
123
  repository-url: https://test.pypi.org/legacy/
120
124
  skip-existing: true
@@ -2,11 +2,22 @@ name: Test
2
2
 
3
3
  on:
4
4
  push:
5
+ branches:
6
+ - main
7
+ tags:
8
+ - '**'
5
9
  pull_request:
6
10
  schedule:
7
11
  # Run weekly on Saturday
8
12
  - cron: '37 3 * * SAT'
9
13
 
14
+ concurrency:
15
+ group: ${{ github.workflow }}-${{ github.ref }}
16
+ cancel-in-progress: true
17
+
18
+ permissions:
19
+ contents: read
20
+
10
21
  jobs:
11
22
  mysql:
12
23
  runs-on: ubuntu-latest
@@ -14,11 +25,11 @@ jobs:
14
25
  fail-fast: false
15
26
  max-parallel: 5
16
27
  matrix:
17
- python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
28
+ python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
18
29
 
19
30
  services:
20
31
  mariadb:
21
- image: mariadb
32
+ image: mariadb:11.8
22
33
  env:
23
34
  MARIADB_ROOT_PASSWORD: debug_toolbar
24
35
  options: >-
@@ -30,10 +41,12 @@ jobs:
30
41
  - 3306:3306
31
42
 
32
43
  steps:
33
- - uses: actions/checkout@v4
44
+ - uses: actions/checkout@v5
45
+ with:
46
+ persist-credentials: false
34
47
 
35
48
  - name: Set up Python ${{ matrix.python-version }}
36
- uses: actions/setup-python@v5
49
+ uses: actions/setup-python@v6
37
50
  with:
38
51
  python-version: ${{ matrix.python-version }}
39
52
  allow-prereleases: true
@@ -51,6 +64,7 @@ jobs:
51
64
  ${{ matrix.python-version }}-v1-${{ hashFiles('**/pyproject.toml') }}-${{ hashFiles('**/tox.ini') }}
52
65
  restore-keys: |
53
66
  ${{ matrix.python-version }}-v1-
67
+ lookup-only: true
54
68
 
55
69
  - name: Install dependencies
56
70
  run: |
@@ -65,6 +79,14 @@ jobs:
65
79
  DB_PASSWORD: debug_toolbar
66
80
  DB_HOST: 127.0.0.1
67
81
  DB_PORT: 3306
82
+ COVERAGE_FILE: ".coverage.mysql.${{ matrix.python-version }}"
83
+
84
+ - name: Store coverage file
85
+ uses: actions/upload-artifact@v5
86
+ with:
87
+ name: coverage-mysql-${{ matrix.python-version }}
88
+ path: .coverage.mysql.${{ matrix.python-version }}*
89
+ include-hidden-files: true
68
90
 
69
91
 
70
92
  postgres:
@@ -73,25 +95,35 @@ jobs:
73
95
  fail-fast: false
74
96
  max-parallel: 5
75
97
  matrix:
76
- # Skip 3.13 here, it needs the psycopg3 / postgis3 database
77
- python-version: ['3.9', '3.10', '3.11', '3.12']
78
- database: [postgresql, postgis]
79
- # Add psycopg3 to our matrix for modern python versions
98
+ python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
99
+ database: [postgresql, postgis, psycopg3]
100
+ exclude:
101
+ - python-version: '3.13'
102
+ database: postgis
103
+ - python-version: '3.13'
104
+ database: postgresql
105
+ - python-version: '3.14'
106
+ database: postgis
107
+ - python-version: '3.14'
108
+ database: postgresql
109
+ # Add postgis3 to our matrix for modern Python versions
80
110
  include:
81
- - python-version: '3.10'
82
- database: psycopg3
83
- - python-version: '3.11'
84
- database: psycopg3
85
- - python-version: '3.12'
86
- database: psycopg3
87
111
  - python-version: '3.13'
88
- database: psycopg3
112
+ database: postgis3
89
113
  - python-version: '3.13'
114
+ database: psycopg3
115
+ env:
116
+ DJANGO_SELENIUM_TESTS=true
117
+ - python-version: '3.14'
90
118
  database: postgis3
119
+ - python-version: '3.14'
120
+ database: psycopg3
121
+ env:
122
+ DJANGO_SELENIUM_TESTS=true
91
123
 
92
124
  services:
93
125
  postgres:
94
- image: postgis/postgis:14-3.1
126
+ image: postgis/postgis:17-3.5
95
127
  env:
96
128
  POSTGRES_DB: debug_toolbar
97
129
  POSTGRES_USER: debug_toolbar
@@ -105,10 +137,12 @@ jobs:
105
137
  --health-retries 5
106
138
 
107
139
  steps:
108
- - uses: actions/checkout@v4
140
+ - uses: actions/checkout@v5
141
+ with:
142
+ persist-credentials: false
109
143
 
110
144
  - name: Set up Python ${{ matrix.python-version }}
111
- uses: actions/setup-python@v5
145
+ uses: actions/setup-python@v6
112
146
  with:
113
147
  python-version: ${{ matrix.python-version }}
114
148
  allow-prereleases: true
@@ -126,6 +160,7 @@ jobs:
126
160
  ${{ matrix.python-version }}-v1-${{ hashFiles('**/pyproject.toml') }}-${{ hashFiles('**/tox.ini') }}
127
161
  restore-keys: |
128
162
  ${{ matrix.python-version }}-v1-
163
+ lookup-only: true
129
164
 
130
165
  - name: Install gdal-bin (for postgis)
131
166
  run: |
@@ -143,6 +178,15 @@ jobs:
143
178
  DB_BACKEND: ${{ matrix.database }}
144
179
  DB_HOST: localhost
145
180
  DB_PORT: 5432
181
+ DJANGO_SELENIUM_TESTS: ${{ matrix.env.DJANGO_SELENIUM_TESTS }}
182
+ COVERAGE_FILE: ".coverage.${{ matrix.database }}.${{ matrix.python-version }}"
183
+
184
+ - name: Store coverage file
185
+ uses: actions/upload-artifact@v5
186
+ with:
187
+ name: coverage-${{ matrix.database }}-${{ matrix.python-version }}
188
+ path: .coverage.${{ matrix.database }}.${{ matrix.python-version }}*
189
+ include-hidden-files: true
146
190
 
147
191
  sqlite:
148
192
  runs-on: ubuntu-latest
@@ -150,13 +194,15 @@ jobs:
150
194
  fail-fast: false
151
195
  max-parallel: 5
152
196
  matrix:
153
- python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
197
+ python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
154
198
 
155
199
  steps:
156
- - uses: actions/checkout@v4
200
+ - uses: actions/checkout@v5
201
+ with:
202
+ persist-credentials: false
157
203
 
158
204
  - name: Set up Python ${{ matrix.python-version }}
159
- uses: actions/setup-python@v5
205
+ uses: actions/setup-python@v6
160
206
  with:
161
207
  python-version: ${{ matrix.python-version }}
162
208
  allow-prereleases: true
@@ -174,6 +220,7 @@ jobs:
174
220
  ${{ matrix.python-version }}-v1-${{ hashFiles('**/pyproject.toml') }}-${{ hashFiles('**/tox.ini') }}
175
221
  restore-keys: |
176
222
  ${{ matrix.python-version }}-v1-
223
+ lookup-only: true
177
224
 
178
225
  - name: Install dependencies
179
226
  run: |
@@ -185,6 +232,14 @@ jobs:
185
232
  env:
186
233
  DB_BACKEND: sqlite3
187
234
  DB_NAME: ":memory:"
235
+ COVERAGE_FILE: ".coverage.sqlite.${{ matrix.python-version }}"
236
+
237
+ - name: Store coverage file
238
+ uses: actions/upload-artifact@v5
239
+ with:
240
+ name: coverage-sqlite-${{ matrix.python-version }}
241
+ path: .coverage.sqlite.${{ matrix.python-version }}*
242
+ include-hidden-files: true
188
243
 
189
244
  lint:
190
245
  runs-on: ubuntu-latest
@@ -192,12 +247,14 @@ jobs:
192
247
  fail-fast: false
193
248
 
194
249
  steps:
195
- - uses: actions/checkout@v4
250
+ - uses: actions/checkout@v5
251
+ with:
252
+ persist-credentials: false
196
253
 
197
254
  - name: Set up Python ${{ matrix.python-version }}
198
- uses: actions/setup-python@v5
255
+ uses: actions/setup-python@v6
199
256
  with:
200
- python-version: 3.9
257
+ python-version: '3.10'
201
258
 
202
259
  - name: Get pip cache dir
203
260
  id: pip-cache
@@ -212,6 +269,7 @@ jobs:
212
269
  ${{ matrix.python-version }}-v1-${{ hashFiles('**/pyproject.toml') }}-${{ hashFiles('**/tox.ini') }}
213
270
  restore-keys: |
214
271
  ${{ matrix.python-version }}-v1-
272
+ lookup-only: true
215
273
 
216
274
  - name: Install dependencies
217
275
  run: |
@@ -220,3 +278,39 @@ jobs:
220
278
 
221
279
  - name: Test with tox
222
280
  run: tox -e docs,packaging
281
+
282
+ coverage:
283
+ name: Coverage
284
+ runs-on: ubuntu-latest
285
+ needs:
286
+ - mysql
287
+ - postgres
288
+ - sqlite
289
+ permissions:
290
+ pull-requests: write
291
+ contents: write
292
+ steps:
293
+ - uses: actions/checkout@v4
294
+ with:
295
+ # Persist the credentials because coverage_comment needs them too.
296
+ persist-credentials: true
297
+
298
+ - uses: actions/download-artifact@v6
299
+ id: download
300
+ with:
301
+ pattern: coverage-*
302
+ merge-multiple: true
303
+
304
+ - name: Coverage comment
305
+ id: coverage_comment
306
+ uses: py-cov-action/python-coverage-comment-action@e623398c19eb3853a5572d4a516e10b15b5cefbc # v3.39
307
+ with:
308
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
309
+ MERGE_COVERAGE_FILES: true
310
+
311
+ - name: Store Pull Request comment to be posted
312
+ uses: actions/upload-artifact@v5
313
+ if: steps.coverage_comment.outputs.COMMENT_FILE_WRITTEN == 'true'
314
+ with:
315
+ name: python-coverage-comment-action
316
+ path: python-coverage-comment-action.txt
@@ -0,0 +1,26 @@
1
+ name: GitHub Actions Security Analysis with zizmor 🌈
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ pull_request:
7
+ branches: ["**"]
8
+
9
+ permissions: {}
10
+
11
+ jobs:
12
+ zizmor:
13
+ name: Run zizmor 🌈
14
+ runs-on: ubuntu-latest
15
+ permissions:
16
+ security-events: write
17
+ contents: read # only needed for private repos
18
+ actions: read # only needed for private repos
19
+ steps:
20
+ - name: Checkout repository
21
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
22
+ with:
23
+ persist-credentials: false
24
+
25
+ - name: Run zizmor 🌈
26
+ uses: zizmorcore/zizmor-action@e639db99335bc9038abc0e066dfcd72e23d26fb4 # v0.3.0
@@ -15,4 +15,5 @@ coverage.xml
15
15
  venv
16
16
  .direnv/
17
17
  .envrc
18
- venv
18
+ .venv
19
+ .vscode
@@ -1,6 +1,6 @@
1
1
  repos:
2
2
  - repo: https://github.com/pre-commit/pre-commit-hooks
3
- rev: v5.0.0
3
+ rev: v6.0.0
4
4
  hooks:
5
5
  - id: check-toml
6
6
  - id: check-yaml
@@ -14,12 +14,12 @@ repos:
14
14
  hooks:
15
15
  - id: doc8
16
16
  - repo: https://github.com/adamchainz/django-upgrade
17
- rev: 1.25.0
17
+ rev: 1.29.1
18
18
  hooks:
19
19
  - id: django-upgrade
20
20
  args: [--target-version, "4.2"]
21
21
  - repo: https://github.com/adamchainz/djade-pre-commit
22
- rev: "1.4.0"
22
+ rev: "1.7.0"
23
23
  hooks:
24
24
  - id: djade
25
25
  args: [--target-version, "4.2"]
@@ -29,18 +29,18 @@ repos:
29
29
  - id: rst-backticks
30
30
  - id: rst-directive-colons
31
31
  - repo: https://github.com/biomejs/pre-commit
32
- rev: v2.1.2
32
+ rev: v2.3.10
33
33
  hooks:
34
34
  - id: biome-check
35
35
  verbose: true
36
36
  - repo: https://github.com/astral-sh/ruff-pre-commit
37
- rev: 'v0.12.4'
37
+ rev: 'v0.14.11'
38
38
  hooks:
39
39
  - id: ruff
40
40
  args: [--fix, --exit-non-zero-on-fix]
41
41
  - id: ruff-format
42
42
  - repo: https://github.com/tox-dev/pyproject-fmt
43
- rev: v2.6.0
43
+ rev: v2.11.1
44
44
  hooks:
45
45
  - id: pyproject-fmt
46
46
  - repo: https://github.com/abravalheri/validate-pyproject
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-debug-toolbar
3
- Version: 6.0.0
3
+ Version: 6.2.0
4
4
  Summary: A configurable set of panels that display various debug information about the current request/response.
5
5
  Project-URL: Changelog, https://django-debug-toolbar.readthedocs.io/en/latest/changes.html
6
6
  Project-URL: Documentation, https://django-debug-toolbar.readthedocs.io/
@@ -15,21 +15,21 @@ Classifier: Development Status :: 5 - Production/Stable
15
15
  Classifier: Environment :: Web Environment
16
16
  Classifier: Framework :: Django
17
17
  Classifier: Framework :: Django :: 4.2
18
- Classifier: Framework :: Django :: 5.0
19
18
  Classifier: Framework :: Django :: 5.1
20
19
  Classifier: Framework :: Django :: 5.2
20
+ Classifier: Framework :: Django :: 6.0
21
21
  Classifier: Intended Audience :: Developers
22
22
  Classifier: License :: OSI Approved :: BSD License
23
23
  Classifier: Operating System :: OS Independent
24
24
  Classifier: Programming Language :: Python
25
25
  Classifier: Programming Language :: Python :: 3 :: Only
26
- Classifier: Programming Language :: Python :: 3.9
27
26
  Classifier: Programming Language :: Python :: 3.10
28
27
  Classifier: Programming Language :: Python :: 3.11
29
28
  Classifier: Programming Language :: Python :: 3.12
30
29
  Classifier: Programming Language :: Python :: 3.13
30
+ Classifier: Programming Language :: Python :: 3.14
31
31
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
32
- Requires-Python: >=3.9
32
+ Requires-Python: >=3.10
33
33
  Requires-Dist: django>=4.2.9
34
34
  Requires-Dist: sqlparse>=0.2
35
35
  Description-Content-Type: text/x-rst
@@ -76,7 +76,7 @@ Here's a screenshot of the toolbar in action:
76
76
  In addition to the built-in panels, a number of third-party panels are
77
77
  contributed by the community.
78
78
 
79
- The current stable version of the Debug Toolbar is 6.0.0. It works on
79
+ The current stable version of the Debug Toolbar is 6.2.0. It works on
80
80
  Django ≥ 4.2.0.
81
81
 
82
82
  The Debug Toolbar has experimental support for `Django's asynchronous views
@@ -40,7 +40,7 @@ Here's a screenshot of the toolbar in action:
40
40
  In addition to the built-in panels, a number of third-party panels are
41
41
  contributed by the community.
42
42
 
43
- The current stable version of the Debug Toolbar is 6.0.0. It works on
43
+ The current stable version of the Debug Toolbar is 6.2.0. It works on
44
44
  Django ≥ 4.2.0.
45
45
 
46
46
  The Debug Toolbar has experimental support for `Django's asynchronous views
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://biomejs.dev/schemas/2.0.6/schema.json",
2
+ "$schema": "https://biomejs.dev/schemas/2.3.7/schema.json",
3
3
  "formatter": {
4
4
  "enabled": true,
5
5
  "useEditorconfig": true
@@ -15,6 +15,9 @@
15
15
  "enabled": true,
16
16
  "rules": {
17
17
  "recommended": true,
18
+ "complexity": {
19
+ "noImportantStyles": "off"
20
+ },
18
21
  "correctness": {
19
22
  "noUndeclaredVariables": "error"
20
23
  },
@@ -4,7 +4,7 @@ APP_NAME = "djdt"
4
4
 
5
5
  # Do not use pkg_resources to find the version but set it here directly!
6
6
  # see issue #1446
7
- VERSION = "6.0.0"
7
+ VERSION = "6.2.0"
8
8
 
9
9
  # Code that discovers files or modules in INSTALLED_APPS imports this module.
10
10
  urls = "debug_toolbar.urls", APP_NAME
@@ -1,3 +1,5 @@
1
+ import django
2
+
1
3
  try:
2
4
  from django.contrib.auth.decorators import login_not_required
3
5
  except ImportError:
@@ -8,3 +10,11 @@ except ImportError:
8
10
  """
9
11
  view_func.login_required = False
10
12
  return view_func
13
+
14
+
15
+ if django.VERSION >= (6, 0):
16
+ from django.middleware.csp import get_nonce
17
+ else:
18
+ # For Django < 6.0, there is no native CSP support, hence no CSP nonces.
19
+ def get_nonce(request):
20
+ return None
@@ -1,8 +1,9 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Any, NamedTuple, Optional
3
+ from typing import Any, NamedTuple, Protocol
4
4
 
5
5
  from django import template as dj_template
6
+ from django.http import HttpRequest, HttpResponse
6
7
 
7
8
 
8
9
  class InspectStack(NamedTuple):
@@ -14,7 +15,7 @@ class InspectStack(NamedTuple):
14
15
  index: int
15
16
 
16
17
 
17
- TidyStackTrace = list[tuple[str, int, str, str, Optional[Any]]]
18
+ TidyStackTrace = list[tuple[str, int, str, str, Any | None]]
18
19
 
19
20
 
20
21
  class RenderContext(dj_template.context.RenderContext):
@@ -24,3 +25,7 @@ class RenderContext(dj_template.context.RenderContext):
24
25
  class RequestContext(dj_template.RequestContext):
25
26
  template: dj_template.Template
26
27
  render_context: RenderContext
28
+
29
+
30
+ class GetResponse(Protocol):
31
+ def __call__(self, request: HttpRequest) -> HttpResponse: ...
@@ -24,6 +24,35 @@ class DebugToolbarConfig(AppConfig):
24
24
  # allows panels like CachePanel to enable their instrumentation immediately.
25
25
  for cls in DebugToolbar.get_panel_classes():
26
26
  cls.ready()
27
+ _manage_migrations_visibility(self.name)
28
+
29
+ def import_models(self):
30
+ """
31
+ Override import models to avoid allowing users to dynamically fetch a model
32
+ that doesn't have a table behind it unless they are using the DatabaseStore.
33
+ This also prevents the command `migrate --run-syncdb` from creating tables
34
+ for the models.
35
+ """
36
+ dt_config = dt_settings.get_config()
37
+ if dt_config["TOOLBAR_STORE_CLASS"] == "debug_toolbar.store.DatabaseStore":
38
+ return super().import_models()
39
+ # Not using the database store, don't import the models
40
+ self.models = {}
41
+
42
+
43
+ def _manage_migrations_visibility(app_name):
44
+ """
45
+ Adjust the toolbar's migration visibility by manipulating the
46
+ project's settings.
47
+
48
+ This is a hack since it's manipulating settings.
49
+ """
50
+ if (
51
+ dt_settings.get_config()["TOOLBAR_STORE_CLASS"]
52
+ != "debug_toolbar.store.DatabaseStore"
53
+ ):
54
+ # This effectively hides the migrations by telling Django they don't exist.
55
+ settings.MIGRATION_MODULES.setdefault(app_name, None)
27
56
 
28
57
 
29
58
  def check_template_config(config):
@@ -3,7 +3,8 @@ import json
3
3
  from django import forms
4
4
  from django.core import signing
5
5
  from django.core.exceptions import ValidationError
6
- from django.utils.encoding import force_str
6
+
7
+ from debug_toolbar.sanitize import force_str
7
8
 
8
9
 
9
10
  class SignedDataForm(forms.Form):