django-bulk-hooks 0.2.68__tar.gz → 0.2.69__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.

Potentially problematic release.


This version of django-bulk-hooks might be problematic. Click here for more details.

Files changed (27) hide show
  1. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/PKG-INFO +1 -1
  2. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/operations/coordinator.py +12 -0
  3. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/pyproject.toml +1 -1
  4. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/LICENSE +0 -0
  5. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/README.md +0 -0
  6. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/__init__.py +0 -0
  7. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/changeset.py +0 -0
  8. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/conditions.py +0 -0
  9. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/constants.py +0 -0
  10. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/context.py +0 -0
  11. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/decorators.py +0 -0
  12. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/dispatcher.py +0 -0
  13. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/enums.py +0 -0
  14. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/factory.py +0 -0
  15. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/handler.py +0 -0
  16. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/helpers.py +0 -0
  17. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/manager.py +0 -0
  18. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/models.py +0 -0
  19. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/operations/__init__.py +0 -0
  20. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/operations/analyzer.py +0 -0
  21. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/operations/bulk_executor.py +0 -0
  22. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/operations/field_utils.py +0 -0
  23. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/operations/mti_handler.py +0 -0
  24. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/operations/mti_plans.py +0 -0
  25. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/operations/record_classifier.py +0 -0
  26. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/queryset.py +0 -0
  27. {django_bulk_hooks-0.2.68 → django_bulk_hooks-0.2.69}/django_bulk_hooks/registry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: django-bulk-hooks
3
- Version: 0.2.68
3
+ Version: 0.2.69
4
4
  Summary: Hook-style hooks for Django bulk operations like bulk_create and bulk_update.
5
5
  License: MIT
6
6
  Keywords: django,bulk,hooks
@@ -938,6 +938,18 @@ class BulkOperationCoordinator:
938
938
  except Exception as e:
939
939
  logger.warning(f" ❌ Failed to extract @select_related from {handler_cls.__name__}.{method_name}: {e}")
940
940
 
941
+ # AGGRESSIVE APPROACH: Also preload ALL relationship fields on the model
942
+ # This prevents N+1 queries from any relationship access during hook execution
943
+ try:
944
+ for field in self.model_cls._meta.get_fields():
945
+ if field.is_relation and not field.many_to_many and not field.one_to_many:
946
+ # This is a forward foreign key relationship
947
+ field_name = field.name
948
+ logger.info(f" 🔗 AUTO: Adding all relationship fields including {field_name}")
949
+ relationships.add(field_name)
950
+ except Exception as e:
951
+ logger.warning(f" ❌ Failed to extract all relationship fields: {e}")
952
+
941
953
  logger.info(f"🔗 BULK PRELOAD: Total extracted relationships for {self.model_cls.__name__}: {list(relationships)}")
942
954
  return relationships
943
955
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "django-bulk-hooks"
3
- version = "0.2.68"
3
+ version = "0.2.69"
4
4
  description = "Hook-style hooks for Django bulk operations like bulk_create and bulk_update."
5
5
  authors = ["Konrad Beck <konrad.beck@merchantcapital.co.za>"]
6
6
  readme = "README.md"