This repository was archived by the owner on Apr 1, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 67
Expand file tree
/
Copy path__init__.py
More file actions
48 lines (38 loc) · 1.77 KB
/
__init__.py
File metadata and controls
48 lines (38 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Interactive display objects for BigQuery DataFrames."""
from __future__ import annotations
from typing import Any
def __getattr__(name: str) -> Any:
"""Lazily import TableWidget to avoid ZMQ port conflicts.
anywidget and traitlets eagerly initialize kernel communication channels on
import. This can lead to race conditions and ZMQ port conflicts when
multiple Jupyter kernels are started in parallel, such as during notebook
tests. By using __getattr__, we defer the import of TableWidget until it is
explicitly accessed, preventing premature initialization and avoiding port
collisions.
"""
if name == "TableWidget":
try:
import anywidget # noqa
from bigframes.display.anywidget import TableWidget
return TableWidget
except Exception:
raise AttributeError(
f"module '{__name__}' has no attribute '{name}'. "
"TableWidget requires anywidget and traitlets to be installed. "
"Please `pip install anywidget traitlets` or `pip install 'bigframes[anywidget]'`."
)
raise AttributeError(f"module '{__name__}' has no attribute '{name}'")
__all__ = ["TableWidget"]