Releases: octue/django-gcp
Allow wrapping of execute() by subclasses
Contents (#103)
IMPORTANT: There is 1 breaking change.
New features
- 💥 BREAKING CHANGE: Allow wrapping of execute by subclasses
Upgrade instructions
💥 Allow wrapping of execute by subclasses
This makes a further change to the api of the execute() method following the prior release. Now, the raw result is returned by execute() instead of a result, status tuple. The execute() method now accepts **task_kwargs instead of a raw request body requiring deserialisation. Deserialization and error handling are now managed where they ought to be - in the view.
FIX: Eager execution correctly respects execute method
Contents (#102)
IMPORTANT: There is 1 breaking change.
Fixes
- 💥 BREAKING CHANGE: Eager execution correctly respects execute method
Upgrade instructions
💥 Eager execution correctly respects execute method
When using *Task.enqueue() and *Task.enqueue_later() with GCP_TASKS_EAGER_EXECUTE=True, the returned value will now be the status of the task handler response, rather than the calculated result itself. This allows consistent execution between eager and async tasks in cases where the public execute() method of the *Task class has been overridden
Include static and templates in build package
<!-- PRs into main are released as soon as they are merged. Their descriptions will be used directly to create release notes, so make sure they contain everything! --> <!-- Anything added between the auto-generation marker comments will be replaced on every pushed commit, so make sure to add anything you want to add outside of them. --> <!-- However, any part of the final PR description (i.e. the description at the point of the final commit to the PR) can be changed in release notes after release if required --> <!-- Change "START" to "SKIP" in the autogeneration marker to stop any further automatic changes to the description. ---> <!--- START AUTOGENERATED NOTES ---> <!--- END AUTOGENERATED NOTES --->
Eliminate broken dependency range for google cloud storage
<!-- PRs into main are released as soon as they are merged. Their descriptions will be used directly to create release notes, so make sure they contain everything! --> <!-- Anything added between the auto-generation marker comments will be replaced on every pushed commit, so make sure to add anything you want to add outside of them. --> <!-- However, any part of the final PR description (i.e. the description at the point of the final commit to the PR) can be changed in release notes after release if required --> <!-- Change "START" to "SKIP" in the autogeneration marker to stop any further automatic changes to the description. ---> <!--- START AUTOGENERATED NOTES ---> <!--- END AUTOGENERATED NOTES --->
Cloud Workflows
Contents (#95)
New features
- Add google cloud workflows module
Operations
- Add terraform to precommit
- Allow use of claude code in devcontainer
- Add GCP workflow to test infrastructure
- Skip steps for online precommit to avoid terrform setup in GHA
Update to uv
Contents (#94)
IMPORTANT: There is 1 breaking change.
Operations
- Update to uv
- Consisten uv use in CI action
- Fuck uv lock
- Add pre-commit step to check for uv lock
Dependencies
- 💥 BREAKING CHANGE: Removed support for python 3.9
Upgrade instructions
💥 Removed support for python 3.9
Removed support for python 3.9, update your stack ;)
Allow direct upload from a file-like as well as a local path
Refactoring after Task Emulator work
Allow Task Queue Emulation
Contents (#90)
IMPORTANT: There is 1 breaking change.
Enhancements
- 💥 BREAKING CHANGE: Update tasks to enable use of emulator
Operations
- Version bump
Refactoring
- Remove unused AppEngine functionality
- Update to new cloud scheduler import
Upgrade instructions
💥 Update tasks to enable use of emulator
The Task.enqueue() method no longer attempts to create a queue in the event of a queue NotFound exception. This avoids unintuitive obfuscation of what resources are being created and when. You should explicitly define your queues - either using an IAC tool like terraform (preferable) ormanually in GCP console (not preferable), or if you need dynamic queues (rare) then the suggested approach is to manage that queue creation process explicitly.