-
Notifications
You must be signed in to change notification settings - Fork 1.7k
feat: support interactive execution of deferred DataFrames in TableWidget #17486
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
shuoweil
wants to merge
50
commits into
main
Choose a base branch
from
shuowei-angular-deferred-mode
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from all commits
Commits
Show all changes
50 commits
Select commit
Hold shift + click to select a range
88fcf76
feat: set up Angular infrastructure for TableWidget
shuoweil 2393021
feat: implement DOM sanitization in Angular bridge
shuoweil 49b7977
feat: address code review comments and add license headers
shuoweil 2b6a9fb
test: test pre-commit hook after noxfile fix
shuoweil b959885
Merge branch 'main' into shuowei-angular
shuoweil 1e0990f
Alphabetize CSS declarations in app.ts
shuoweil 2e3de3d
Merge branch 'main' into shuowei-angular
shuoweil 3cc2770
chore: clean up angular boilerplate and add copyright headers
shuoweil 65dce43
Merge branch 'main' into shuowei-angular
shuoweil c31f5a5
feat: rewrite TableWidget core in Angular
shuoweil 3b4f7d7
fix(display): cast JSON and nested struct columns to string for anywi…
shuoweil cef1518
format code
shuoweil efe189d
Merge branch 'main' into shuowei-angular-rewrite-core
shuoweil 5282e6d
opt(display): batch df.assign calls for json display serialization
shuoweil b3c5577
format code
shuoweil 8a60c13
Merge branch 'main' into shuowei-angular
shuoweil 609f1a7
Merge branch 'main' into shuowei-angular
shuoweil d984db9
Merge branch 'shuowei-angular' into shuowei-angular-rewrite-core
shuoweil 3c2c0d7
fix(display): update test_html.py unit test for display refactoring
shuoweil 86e9842
refactor(display): rename display function to _process_display_df
shuoweil 205bcab
feat: support deferred execution rendering
shuoweil 00eed75
style: make run button black and white and remove title
shuoweil f8b5728
fix: initialize TableWidget traitlets after super init
shuoweil 7432a18
fix: truth value and cast bugs in deferred execution mode
shuoweil 37829b2
Merge branch 'main' into shuowei-angular-deferred-mode
shuoweil 2ffc540
Fix Angular bootstrap by providing zoneless change detection
shuoweil 4a298f8
fix: use createApplication to bootstrap widget on element
shuoweil 40e6a80
docs: rerun notebook
shuoweil dd828ae
test: add unit test for angular widget bootstrap
shuoweil 1a198e1
test: clean up redundant comments in test
shuoweil e9402b7
Update packages/bigframes/bigframes/display/table_widget_angular/src/…
shuoweil 9fcd378
Update packages/bigframes/bigframes/display/table_widget_angular/src/…
shuoweil 65fb27a
Update packages/bigframes/bigframes/display/table_widget_angular/src/…
shuoweil c64448b
Update packages/bigframes/bigframes/display/table_widget_angular/src/…
shuoweil f11d3d0
fix: address table widget angular code review comments
shuoweil 1deac9a
format
shuoweil e37c383
style: format table widget angular and tests to 80-char limit
shuoweil 2d5cb42
chore: rebuild table_widget_angular.js
shuoweil 8a1bfdf
fix: execute query asynchronously in TableWidget to avoid IPython ker…
shuoweil ad88989
fix: support multiple widget instances by using dynamic attribute sel…
shuoweil 21c29f6
Merge branch 'main' into shuowei-angular-deferred-mode
shuoweil 6be4131
style: fix style guide violations
shuoweil 289ffde
test: add JS unit test for deferred execution mode
shuoweil 2a9c49a
ui: stabilize widget container size to prevent layout shift
shuoweil 13d22a4
ui: implement dynamic height locking from legacy widget
shuoweil a477a4f
fix: resolve unused variable and duplicate test redefinition
shuoweil 97af548
format
shuoweil a3dd2f6
revert: move sqlglot fix to separate branch
shuoweil 38529ed
fix: resolve deferred mode display & thread execution reviews
shuoweil 50179a0
format
shuoweil File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are a few issues in the background execution thread:
self.is_deferred_modeis set toFalsein thefinallyblock. This transitions the widget out of deferred mode prematurely, resulting in an empty table display and a confusing 'Internal Error: DataFrame is missing' message. Instead,self.is_deferred_modeshould only be set toFalseupon successful execution and initialization.self._error_messageis not cleared when starting a new execution, so the old error message will remain visible while the new query is running. We should clearself._error_messageat the start ofrun_execution.except Exception:blocks that silently handle errors without logging. We should log the exception usinglogger.warningto aid in debugging.References
except Exception:blocks that silently returnNone. Instead, log the exception (e.g., usinglogger.warning) to aid in debugging and prevent masking underlying issues.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done. Reset _error_message to None at the start of execution, transitioned is_deferred_mode to False only on successful execution/initialization, and added a logger.warning for background execution exceptions. Also updated test assertions to verify this behavior.