@@ -63,8 +63,9 @@ def __init__(self, dataframe: bigframes.dataframe.DataFrame):
6363 "Please `pip install anywidget traitlets` or `pip install 'bigframes[anywidget]'` to use TableWidget."
6464 )
6565
66- super ().__init__ ()
6766 self ._dataframe = dataframe
67+ self ._initializing = True
68+ super ().__init__ ()
6869
6970 # Initialize attributes that might be needed by observers first
7071 self ._table_id = str (uuid .uuid4 ())
@@ -89,12 +90,10 @@ def __init__(self, dataframe: bigframes.dataframe.DataFrame):
8990 # Create pandas batches from the ExecuteResult
9091 self ._batches = execute_result .to_pandas_batches (page_size = initial_page_size )
9192
92- # Set page_size after _batches is available, but avoid triggering observers
93- # by setting the underlying traitlet value directly
94- self ._trait_values ["page_size" ] = initial_page_size
95- self ._trait_notifiers ["page_size" ] = {} # Initialize notifiers if needed
93+ self .page_size = initial_page_size
9694
9795 self ._set_table_html ()
96+ self ._initializing = False
9897
9998 @functools .cached_property
10099 def _esm (self ):
@@ -227,11 +226,15 @@ def _set_table_html(self):
227226 @traitlets .observe ("page" )
228227 def _page_changed (self , _change : Dict [str , Any ]):
229228 """Handler for when the page number is changed from the frontend."""
229+ if self ._initializing :
230+ return
230231 self ._set_table_html ()
231232
232233 @traitlets .observe ("page_size" )
233234 def _page_size_changed (self , _change : Dict [str , Any ]):
234235 """Handler for when the page size is changed from the frontend."""
236+ if self ._initializing :
237+ return
235238 # Reset the page to 0 when page size changes to avoid invalid page states
236239 self .page = 0
237240
0 commit comments