djhtmx 1.3.5__tar.gz → 1.3.6__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 (40) hide show
  1. {djhtmx-1.3.5 → djhtmx-1.3.6}/CHANGELOG.md +5 -0
  2. {djhtmx-1.3.5 → djhtmx-1.3.6}/PKG-INFO +1 -1
  3. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/__init__.py +1 -1
  4. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/templatetags/htmx.py +11 -1
  5. {djhtmx-1.3.5 → djhtmx-1.3.6}/.gitignore +0 -0
  6. {djhtmx-1.3.5 → djhtmx-1.3.6}/LICENSE +0 -0
  7. {djhtmx-1.3.5 → djhtmx-1.3.6}/MANIFEST.in +0 -0
  8. {djhtmx-1.3.5 → djhtmx-1.3.6}/README.md +0 -0
  9. {djhtmx-1.3.5 → djhtmx-1.3.6}/pyproject.toml +0 -0
  10. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/apps.py +0 -0
  11. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/command_queue.py +0 -0
  12. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/commands.py +0 -0
  13. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/component.py +0 -0
  14. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/consumer.py +0 -0
  15. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/context.py +0 -0
  16. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/exceptions.py +0 -0
  17. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/global_events.py +0 -0
  18. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/introspection.py +0 -0
  19. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/json.py +0 -0
  20. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/management/commands/htmx.py +0 -0
  21. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/middleware.py +0 -0
  22. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/query.py +0 -0
  23. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/repo.py +0 -0
  24. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/settings.py +0 -0
  25. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/static/htmx/2.0.4/ext/idiomorph-ext.min.js +0 -0
  26. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/static/htmx/2.0.4/ext/ws.js +0 -0
  27. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/static/htmx/2.0.4/htmx.amd.js +0 -0
  28. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/static/htmx/2.0.4/htmx.cjs.js +0 -0
  29. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/static/htmx/2.0.4/htmx.esm.d.ts +0 -0
  30. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/static/htmx/2.0.4/htmx.esm.js +0 -0
  31. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/static/htmx/2.0.4/htmx.js +0 -0
  32. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/static/htmx/2.0.4/htmx.min.js +0 -0
  33. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/static/htmx/django.js +0 -0
  34. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/templates/htmx/headers.html +0 -0
  35. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/templates/htmx/lazy.html +0 -0
  36. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/templatetags/__init__.py +0 -0
  37. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/testing.py +0 -0
  38. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/tracing.py +0 -0
  39. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/urls.py +0 -0
  40. {djhtmx-1.3.5 → djhtmx-1.3.6}/src/djhtmx/utils.py +0 -0
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.3.6] - 2026-02-03
11
+
12
+ ### Fixed
13
+ - **Class Template Tag**: Boolean expression evaluation now uses the yesno filter behavior, where string values "True" and "False" (case-insensitive) are properly converted to boolean values before evaluation
14
+
10
15
  ## [1.3.5] - 2026-02-02
11
16
 
12
17
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: djhtmx
3
- Version: 1.3.5
3
+ Version: 1.3.6
4
4
  Summary: Interactive UI Components for Django using HTMX
5
5
  Project-URL: Homepage, https://github.com/edelvalle/djhtmx
6
6
  Project-URL: Documentation, https://github.com/edelvalle/djhtmx#readme
@@ -1,4 +1,4 @@
1
1
  from .middleware import middleware
2
2
 
3
- __version__ = "1.3.5"
3
+ __version__ = "1.3.6"
4
4
  __all__ = ("middleware",)
@@ -290,6 +290,16 @@ class ClassNode(Node):
290
290
  class_names = [
291
291
  class_name.resolve(cast(Mapping[str, Any], context))
292
292
  for condition, class_name in self.condition_and_classes
293
- if condition.eval(context) # type: ignore
293
+ if self._eval_bool(condition.eval(context)) # type: ignore
294
294
  ]
295
295
  return format_html_attrs({"class": " ".join(filter(None, class_names)) or None})
296
+
297
+ @staticmethod
298
+ def _eval_bool(value) -> bool | str:
299
+ # Convert string boolean representations to actual booleans (yesno filter behavior)
300
+ if isinstance(value, str):
301
+ if value == "True":
302
+ return True
303
+ elif value in ("False", "None"):
304
+ return False
305
+ return value
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes