feat(python): implement runtime connection context manager hooks #3152 - #602
Open
abhibesu2018 wants to merge 1 commit into
Open
feat(python): implement runtime connection context manager hooks #3152#602abhibesu2018 wants to merge 1 commit into
abhibesu2018 wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📋 Overview
This PR addresses Issue #3152 by introducing native Context Manager support (with statements) to the DuckDB Python client.Currently, resource lifecycle management (such as registering/unregistering dataframes or view relations) requires manual tracking via tedious try...finally blocks. This update brings a much more idiomatic "Pythonic" approach to managing connections, database cursor states, and view registrations, reducing boilerplate code and preventing resource leaks.
🚀 Changes Made
DuckDBPyConnection.enter & exit: Added standard context manager hooks to automatically close connections/cursors or commit/rollback open transactions cleanly when exiting the scope.DuckDBPyConnection.register context support: Modified the relationship/view registration system so that invoking a registration inside a context manager automatically calls unregister() upon exit.Type Stubs Updated: Added matching method signatures to the target .pyi files to preserve flawless IDE autocompletion and static type checking.