itables 2.4.1__tar.gz → 2.4.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. {itables-2.4.1 → itables-2.4.2}/PKG-INFO +4 -1
  2. {itables-2.4.1 → itables-2.4.2}/README.md +1 -0
  3. {itables-2.4.1 → itables-2.4.2}/itables/datatables_format.py +19 -11
  4. {itables-2.4.1 → itables-2.4.2}/itables/downsample.py +8 -4
  5. {itables-2.4.1 → itables-2.4.2}/itables/javascript.py +27 -14
  6. {itables-2.4.1 → itables-2.4.2}/itables/options.py +2 -1
  7. {itables-2.4.1 → itables-2.4.2}/itables/sample_dfs.py +23 -16
  8. {itables-2.4.1 → itables-2.4.2}/itables/shiny.py +1 -1
  9. {itables-2.4.1 → itables-2.4.2}/itables/streamlit.py +2 -1
  10. {itables-2.4.1 → itables-2.4.2}/itables/typing.py +2 -1
  11. {itables-2.4.1 → itables-2.4.2}/itables/utils.py +2 -2
  12. {itables-2.4.1 → itables-2.4.2}/itables/version.py +1 -1
  13. {itables-2.4.1 → itables-2.4.2}/itables/widget/__init__.py +3 -3
  14. {itables-2.4.1 → itables-2.4.2}/itables_for_dash/__init__.py +2 -2
  15. {itables-2.4.1 → itables-2.4.2}/itables_for_dash/itables_for_dash.min.js +1 -1
  16. {itables-2.4.1 → itables-2.4.2}/itables_for_dash/itables_for_dash.min.js.map +1 -1
  17. {itables-2.4.1 → itables-2.4.2}/itables_for_dash/properties.py +4 -12
  18. {itables-2.4.1 → itables-2.4.2}/pyproject.toml +14 -2
  19. {itables-2.4.1 → itables-2.4.2}/.gitignore +0 -0
  20. {itables-2.4.1 → itables-2.4.2}/LICENSE +0 -0
  21. {itables-2.4.1 → itables-2.4.2}/itables/__init__.py +0 -0
  22. {itables-2.4.1 → itables-2.4.2}/itables/dash.py +0 -0
  23. {itables-2.4.1 → itables-2.4.2}/itables/html/datatables_template.html +0 -0
  24. {itables-2.4.1 → itables-2.4.2}/itables/html/dt_bundle.css +0 -0
  25. {itables-2.4.1 → itables-2.4.2}/itables/html/dt_bundle.js +0 -0
  26. {itables-2.4.1 → itables-2.4.2}/itables/html/init_datatables.html +0 -0
  27. {itables-2.4.1 → itables-2.4.2}/itables/interactive.py +0 -0
  28. {itables-2.4.1 → itables-2.4.2}/itables/itables_for_streamlit/asset-manifest.json +0 -0
  29. {itables-2.4.1 → itables-2.4.2}/itables/itables_for_streamlit/index.html +0 -0
  30. {itables-2.4.1 → itables-2.4.2}/itables/itables_for_streamlit/static/css/main.691d312a.css +0 -0
  31. {itables-2.4.1 → itables-2.4.2}/itables/itables_for_streamlit/static/css/main.691d312a.css.map +0 -0
  32. {itables-2.4.1 → itables-2.4.2}/itables/itables_for_streamlit/static/js/main.e0eadfc1.js +0 -0
  33. {itables-2.4.1 → itables-2.4.2}/itables/itables_for_streamlit/static/js/main.e0eadfc1.js.LICENSE.txt +0 -0
  34. {itables-2.4.1 → itables-2.4.2}/itables/itables_for_streamlit/static/js/main.e0eadfc1.js.map +0 -0
  35. {itables-2.4.1 → itables-2.4.2}/itables/logo/loading.svg +0 -0
  36. {itables-2.4.1 → itables-2.4.2}/itables/logo/logo.svg +0 -0
  37. {itables-2.4.1 → itables-2.4.2}/itables/logo/text.svg +0 -0
  38. {itables-2.4.1 → itables-2.4.2}/itables/logo/wide.svg +0 -0
  39. {itables-2.4.1 → itables-2.4.2}/itables/logo/with_text.svg +0 -0
  40. {itables-2.4.1 → itables-2.4.2}/itables/py.typed +0 -0
  41. {itables-2.4.1 → itables-2.4.2}/itables/samples/countries.csv +0 -0
  42. {itables-2.4.1 → itables-2.4.2}/itables/samples/indicators.csv +0 -0
  43. {itables-2.4.1 → itables-2.4.2}/itables/samples/population.csv +0 -0
  44. {itables-2.4.1 → itables-2.4.2}/itables/widget/static/widget.css +0 -0
  45. {itables-2.4.1 → itables-2.4.2}/itables/widget/static/widget.js +0 -0
  46. {itables-2.4.1 → itables-2.4.2}/itables_for_dash/ITable.py +0 -0
  47. {itables-2.4.1 → itables-2.4.2}/itables_for_dash/_imports_.py +0 -0
  48. {itables-2.4.1 → itables-2.4.2}/itables_for_dash/async-ITable.js +0 -0
  49. {itables-2.4.1 → itables-2.4.2}/itables_for_dash/async-ITable.js.LICENSE.txt +0 -0
  50. {itables-2.4.1 → itables-2.4.2}/itables_for_dash/async-ITable.js.map +0 -0
  51. {itables-2.4.1 → itables-2.4.2}/itables_for_dash/metadata.json +0 -0
  52. {itables-2.4.1 → itables-2.4.2}/itables_for_dash/package-info.json +0 -0
  53. {itables-2.4.1 → itables-2.4.2}/itables_for_dash/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: itables
3
- Version: 2.4.1
3
+ Version: 2.4.2
4
4
  Summary: Pandas and Polar DataFrames as interactive DataTables
5
5
  Project-URL: Homepage, https://mwouts.github.io/itables/
6
6
  Project-URL: Documentation, https://mwouts.github.io/itables
@@ -33,6 +33,7 @@ License: MIT License
33
33
  License-File: LICENSE
34
34
  Keywords: DataTables,Interactive,Javascript,Pandas,Polars
35
35
  Classifier: Development Status :: 5 - Production/Stable
36
+ Classifier: Framework :: Dash
36
37
  Classifier: Framework :: Jupyter
37
38
  Classifier: Intended Audience :: Developers
38
39
  Classifier: Intended Audience :: Science/Research
@@ -44,6 +45,7 @@ Classifier: Programming Language :: Python :: 3.10
44
45
  Classifier: Programming Language :: Python :: 3.11
45
46
  Classifier: Programming Language :: Python :: 3.12
46
47
  Classifier: Programming Language :: Python :: 3.13
48
+ Classifier: Typing :: Typed
47
49
  Requires-Python: >=3.9
48
50
  Requires-Dist: ipython
49
51
  Requires-Dist: numpy
@@ -133,6 +135,7 @@ Description-Content-Type: text/markdown
133
135
  [![Pypi](https://img.shields.io/pypi/v/itables.svg)](https://pypi.python.org/pypi/itables)
134
136
  [![Conda Version](https://img.shields.io/conda/vn/conda-forge/itables.svg)](https://anaconda.org/conda-forge/itables)
135
137
  [![pyversions](https://img.shields.io/pypi/pyversions/itables.svg)](https://pypi.python.org/pypi/itables)
138
+ ![PyPI - Types](https://img.shields.io/pypi/types/itables)
136
139
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
137
140
  [![Jupyter Widget](https://img.shields.io/badge/Jupyter-Widget-F37626.svg?style=flat&logo=Jupyter)](https://mwouts.github.io/itables/apps/widget.html)
138
141
  [![Dash Component](https://img.shields.io/badge/Dash-Plotly-1098F7.svg?style=flat&logo=Plotly)](https://mwouts.github.io/itables/apps/dash.html)
@@ -6,6 +6,7 @@
6
6
  [![Pypi](https://img.shields.io/pypi/v/itables.svg)](https://pypi.python.org/pypi/itables)
7
7
  [![Conda Version](https://img.shields.io/conda/vn/conda-forge/itables.svg)](https://anaconda.org/conda-forge/itables)
8
8
  [![pyversions](https://img.shields.io/pypi/pyversions/itables.svg)](https://pypi.python.org/pypi/itables)
9
+ ![PyPI - Types](https://img.shields.io/pypi/types/itables)
9
10
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
10
11
  [![Jupyter Widget](https://img.shields.io/badge/Jupyter-Widget-F37626.svg?style=flat&logo=Jupyter)](https://mwouts.github.io/itables/apps/widget.html)
11
12
  [![Dash Component](https://img.shields.io/badge/Dash-Plotly-1098F7.svg?style=flat&logo=Plotly)](https://mwouts.github.io/itables/apps/dash.html)
@@ -1,18 +1,22 @@
1
1
  import json
2
2
  import warnings
3
- from typing import Optional
3
+ from typing import Any, Optional, Sequence, Union
4
4
 
5
5
  import numpy as np
6
6
  import pandas as pd
7
7
  import pandas.io.formats.format as fmt
8
8
 
9
+ from .typing import DataFrameOrSeries
10
+
9
11
  try:
10
12
  import polars as pl
11
13
  except ImportError:
12
14
  pl = None
13
15
 
14
16
 
15
- def _format_column(x, escape_html: bool):
17
+ def _format_column(
18
+ x: "pd.Series[Any]", escape_html: bool
19
+ ) -> "Union[pd.Series[Any],Sequence[Any]]":
16
20
  dtype_kind = x.dtype.kind
17
21
  if dtype_kind in ["b", "i"]:
18
22
  return x
@@ -28,21 +32,23 @@ def _format_column(x, escape_html: bool):
28
32
  # Older versions of Pandas don't have 'leading_space'
29
33
  x = fmt.format_array(x._values, None, justify="all") # type: ignore
30
34
 
35
+ y: "Union[pd.Series[Any], Sequence[Any]]" = x
31
36
  if dtype_kind == "f":
32
37
  try:
33
- x = np.array(x).astype(float)
38
+ z = np.array(x).astype(float)
34
39
  except ValueError:
40
+ z = x
35
41
  pass
36
42
 
37
- x = [escape_non_finite_float(f) for f in x]
43
+ y = [escape_non_finite_float(f) for f in z]
38
44
 
39
45
  if escape_html:
40
- return [escape_html_chars(i) for i in x]
46
+ return [escape_html_chars(i) for i in y]
41
47
 
42
- return x
48
+ return y
43
49
 
44
50
 
45
- def escape_non_finite_float(value):
51
+ def escape_non_finite_float(value: Any) -> Any:
46
52
  """Encode non-finite float values to strings that will be parsed by parseJSON"""
47
53
  if not isinstance(value, float):
48
54
  return value
@@ -55,7 +61,7 @@ def escape_non_finite_float(value):
55
61
  return value
56
62
 
57
63
 
58
- def escape_html_chars(value):
64
+ def escape_html_chars(value: Any) -> Any:
59
65
  """Escape HTML special characters"""
60
66
  if isinstance(value, str):
61
67
  from pandas.io.formats.printing import pprint_thing # type: ignore
@@ -66,7 +72,9 @@ def escape_html_chars(value):
66
72
  return value
67
73
 
68
74
 
69
- def generate_encoder(warn_on_unexpected_types=True):
75
+ def generate_encoder(warn_on_unexpected_types: bool = True) -> Any:
76
+ """Generate a JSON encoder that can handle special types like numpy"""
77
+
70
78
  class TableValuesEncoder(json.JSONEncoder):
71
79
  def default(self, o):
72
80
  if isinstance(o, (bool, int, float, str)):
@@ -97,11 +105,11 @@ def generate_encoder(warn_on_unexpected_types=True):
97
105
 
98
106
 
99
107
  def datatables_rows(
100
- df,
108
+ df: DataFrameOrSeries,
101
109
  column_count: Optional[int] = None,
102
110
  warn_on_unexpected_types: bool = False,
103
111
  escape_html: bool = True,
104
- ):
112
+ ) -> str:
105
113
  """Format the values in the table and return the data, row by row, as requested by DataTables"""
106
114
  # We iterate over columns using an index rather than the column name
107
115
  # to avoid an issue in case of duplicated column names #89
@@ -33,8 +33,11 @@ def as_nbytes(mem: Union[int, float, str]) -> int:
33
33
 
34
34
 
35
35
  def downsample(
36
- df, max_rows: int = 0, max_columns: int = 0, max_bytes: Union[int, str] = 0
37
- ):
36
+ df: DataFrameOrSeries,
37
+ max_rows: int = 0,
38
+ max_columns: int = 0,
39
+ max_bytes: Union[int, str] = 0,
40
+ ) -> tuple[DataFrameOrSeries, str]:
38
41
  """Return a subset of the dataframe that fits the limits"""
39
42
  org_rows, org_columns, org_bytes = len(df), len(df.columns), nbytes(df)
40
43
  max_bytes_numeric = as_nbytes(max_bytes)
@@ -67,8 +70,9 @@ def downsample(
67
70
 
68
71
 
69
72
  def shrink_towards_target_aspect_ratio(
70
- rows, columns, shrink_factor, target_aspect_ratio
71
- ):
73
+ rows: int, columns: int, shrink_factor: float, target_aspect_ratio: float
74
+ ) -> tuple[int, int]:
75
+ """Return the number of rows and columns of the shrinked dataframe"""
72
76
  # current and target aspect ratio
73
77
  aspect_ratio = rows / float(columns)
74
78
 
@@ -135,7 +135,7 @@ def init_notebook_mode(
135
135
  all_interactive: bool = True,
136
136
  connected: bool = GOOGLE_COLAB,
137
137
  dt_bundle: Optional[Union[Path, str]] = None,
138
- ):
138
+ ) -> None:
139
139
  """Load the DataTables library and the corresponding css (if connected=False),
140
140
  and (if all_interactive=True), activate the DataTables representation for all the Pandas DataFrames and Series.
141
141
 
@@ -189,7 +189,8 @@ def init_notebook_mode(
189
189
  display(HTML(generate_init_offline_itables_html(dt_bundle)))
190
190
 
191
191
 
192
- def get_animated_logo(display_logo_when_loading):
192
+ def get_animated_logo(display_logo_when_loading: bool) -> str:
193
+ """Return the HTML for the loading logo of ITables"""
193
194
  if not display_logo_when_loading:
194
195
  return ""
195
196
  return f"<a href=https://mwouts.github.io/itables/>{read_package_file('logo/loading.svg')}</a>"
@@ -265,7 +266,7 @@ def _flat_header(df, show_index):
265
266
  return header
266
267
 
267
268
 
268
- def _tfoot_from_thead(thead):
269
+ def _tfoot_from_thead(thead: str) -> str:
269
270
  header_rows = thead.split("</tr>")
270
271
  last_row = header_rows[-1]
271
272
  assert not last_row.strip(), last_row
@@ -273,7 +274,7 @@ def _tfoot_from_thead(thead):
273
274
  return "".join(row + "</tr>" for row in header_rows[::-1] if "<tr" in row) + "\n"
274
275
 
275
276
 
276
- def get_keys_to_be_evaluated(data) -> list[list[Union[int, str]]]:
277
+ def get_keys_to_be_evaluated(data: Any) -> list[list[Union[int, str]]]:
277
278
  """
278
279
  This function returns the keys that need to be evaluated
279
280
  in the ITable arguments
@@ -296,7 +297,7 @@ def get_keys_to_be_evaluated(data) -> list[list[Union[int, str]]]:
296
297
  return keys_to_be_evaluated
297
298
 
298
299
 
299
- def replace_value(template, pattern, value):
300
+ def replace_value(template: str, pattern: str, value: str) -> str:
300
301
  """Set the given pattern to the desired value in the template,
301
302
  after making sure that the pattern is found exactly once."""
302
303
  count = template.count(pattern)
@@ -311,7 +312,7 @@ def replace_value(template, pattern, value):
311
312
  return template.replace(pattern, value)
312
313
 
313
314
 
314
- def _datatables_repr_(df):
315
+ def _datatables_repr_(df: DataFrameOrSeries) -> str:
315
316
  return to_html_datatable(df, connected=_CONNECTED)
316
317
 
317
318
 
@@ -319,7 +320,7 @@ def to_html_datatable(
319
320
  df: DataFrameOrSeries,
320
321
  caption: Optional[str] = None,
321
322
  **kwargs: Unpack[ITableOptions],
322
- ):
323
+ ) -> str:
323
324
  """
324
325
  Return the HTML representation of the given
325
326
  dataframe as an interactive datatable
@@ -548,8 +549,14 @@ def get_itables_extension_arguments(
548
549
 
549
550
 
550
551
  def warn_if_selected_rows_are_not_visible(
551
- selected_rows, full_row_count, data_row_count, warn_on_selected_rows_not_rendered
552
- ):
552
+ selected_rows: Optional[Sequence[int]],
553
+ full_row_count: int,
554
+ data_row_count: int,
555
+ warn_on_selected_rows_not_rendered: bool,
556
+ ) -> Sequence[int]:
557
+ """
558
+ Issue a warning if the selected rows are not within the range of rendered rows.
559
+ """
553
560
  if selected_rows is None:
554
561
  return []
555
562
 
@@ -589,7 +596,11 @@ def warn_if_selected_rows_are_not_visible(
589
596
  return [i for i in selected_rows if i < bottom_limit or i >= top_limit]
590
597
 
591
598
 
592
- def check_table_id(table_id: Optional[str], kwargs, df=None) -> str:
599
+ def check_table_id(
600
+ table_id: Optional[str],
601
+ kwargs: Union[ITableOptions, DTForITablesOptions],
602
+ df: Optional[DataFrameOrSeries] = None,
603
+ ) -> str:
593
604
  """Make sure that the table_id is a valid HTML id.
594
605
 
595
606
  See also https://stackoverflow.com/questions/70579/html-valid-id-attribute-values
@@ -614,7 +625,9 @@ def check_table_id(table_id: Optional[str], kwargs, df=None) -> str:
614
625
  return table_id
615
626
 
616
627
 
617
- def set_default_options(kwargs: ITableOptions, *, use_to_html: bool, app_mode: bool):
628
+ def set_default_options(
629
+ kwargs: ITableOptions, *, use_to_html: bool, app_mode: bool
630
+ ) -> None:
618
631
  if not app_mode:
619
632
  kwargs["connected"] = kwargs.get(
620
633
  "connected", ("dt_url" in kwargs) or _CONNECTED
@@ -681,7 +694,7 @@ def html_table_from_template(
681
694
  connected: bool,
682
695
  display_logo_when_loading: bool,
683
696
  kwargs: DTForITablesOptions,
684
- ):
697
+ ) -> str:
685
698
  if "css" in kwargs:
686
699
  raise TypeError(
687
700
  "The 'css' argument has been deprecated, see the new "
@@ -800,7 +813,7 @@ def _filter_control(control, downsampling_warning):
800
813
  return None
801
814
 
802
815
 
803
- def safe_reset_index(df):
816
+ def safe_reset_index(df: pd.DataFrame) -> pd.DataFrame:
804
817
  try:
805
818
  return df.reset_index()
806
819
  except ValueError:
@@ -825,6 +838,6 @@ def show(
825
838
  df: DataFrameOrSeries,
826
839
  caption: Optional[str] = None,
827
840
  **kwargs: Unpack[ITableOptions],
828
- ):
841
+ ) -> None:
829
842
  """Render the given dataframe as an interactive datatable"""
830
843
  display(HTML(to_html_datatable(df, caption, **kwargs)))
@@ -107,6 +107,7 @@ lengthMenu: Optional[
107
107
  Sequence[Sequence[Union[int, str]]],
108
108
  ]
109
109
  ]
110
+ pageLength: Optional[int]
110
111
  columnDefs: Optional[Sequence[Mapping[str, Any]]]
111
112
  paging: Optional[bool]
112
113
  autoWidth: Optional[bool]
@@ -138,7 +139,7 @@ if warn_on_undocumented_option:
138
139
  )
139
140
 
140
141
  """Check that options have correct types"""
141
- warn_on_unexpected_option_type = (
142
+ warn_on_unexpected_option_type: bool = (
142
143
  warn_on_undocumented_option and typing.is_typeguard_available()
143
144
  )
144
145
  if warn_on_unexpected_option_type:
@@ -3,7 +3,7 @@ import string
3
3
  from datetime import datetime, timedelta
4
4
  from functools import lru_cache
5
5
  from itertools import cycle
6
- from typing import Any, cast
6
+ from typing import Any, Sequence, cast
7
7
 
8
8
  import numpy as np
9
9
  import pandas as pd
@@ -28,9 +28,9 @@ COLUMN_TYPES = [
28
28
  "timedelta",
29
29
  ]
30
30
 
31
- PANDAS_VERSION_MAJOR, PANDAS_VERSION_MINOR, _ = pd.__version__.split(".", 2)
32
- PANDAS_VERSION_MAJOR = int(PANDAS_VERSION_MAJOR)
33
- PANDAS_VERSION_MINOR = int(PANDAS_VERSION_MINOR)
31
+ _pd_version_major, _pd_version_minor, _ = pd.__version__.split(".", 2)
32
+ PANDAS_VERSION_MAJOR = int(_pd_version_major)
33
+ PANDAS_VERSION_MINOR = int(_pd_version_minor)
34
34
  if PANDAS_VERSION_MAJOR == 0:
35
35
  COLUMN_TYPES = [type for type in COLUMN_TYPES if type != "boolean"]
36
36
  if PANDAS_VERSION_MAJOR == 2 and PANDAS_VERSION_MINOR == 1:
@@ -84,19 +84,20 @@ def get_countries(html: bool = True, climate_zone: bool = False) -> pd.DataFrame
84
84
  return df
85
85
 
86
86
 
87
- def get_population():
87
+ def get_population() -> "pd.Series[float]":
88
88
  """A Pandas Series with the world population (from the world bank data)"""
89
89
  return pd.read_csv(find_package_file("samples/population.csv")).set_index(
90
90
  "Country"
91
91
  )["SP.POP.TOTL"]
92
92
 
93
93
 
94
- def get_indicators():
94
+ def get_indicators() -> pd.DataFrame:
95
95
  """A Pandas DataFrame with a subset of the world bank indicators"""
96
96
  return pd.read_csv(find_package_file("samples/indicators.csv"))
97
97
 
98
98
 
99
- def get_df_complex_index():
99
+ def get_df_complex_index() -> pd.DataFrame:
100
+ """A Pandas DataFrame with a complex index"""
100
101
  df = get_countries()
101
102
  df = df.reset_index().set_index(["region", "country"])
102
103
  df.columns = pd.MultiIndex.from_arrays(
@@ -116,7 +117,7 @@ def get_df_complex_index():
116
117
  return df
117
118
 
118
119
 
119
- def get_dict_of_test_dfs(N=100, M=100) -> dict[str, pd.DataFrame]:
120
+ def get_dict_of_test_dfs(N: int = 100, M: int = 100) -> dict[str, pd.DataFrame]:
120
121
  NM_values = np.reshape(np.linspace(start=0.0, stop=1.0, num=N * M), (N, M))
121
122
 
122
123
  return {
@@ -281,7 +282,7 @@ def get_dict_of_test_dfs(N=100, M=100) -> dict[str, pd.DataFrame]:
281
282
  }
282
283
 
283
284
 
284
- def get_dict_of_polars_test_dfs(N=100, M=100) -> dict[str, Any]:
285
+ def get_dict_of_polars_test_dfs(N: int = 100, M: int = 100) -> dict[str, Any]:
285
286
  import polars as pl
286
287
  import pyarrow as pa
287
288
 
@@ -300,7 +301,8 @@ def get_dict_of_polars_test_dfs(N=100, M=100) -> dict[str, Any]:
300
301
  return polars_dfs
301
302
 
302
303
 
303
- def get_dict_of_test_series():
304
+ def get_dict_of_test_series() -> dict[str, Any]:
305
+ """A dictionary of Pandas Series"""
304
306
  series = {}
305
307
  for df_name, df in get_dict_of_test_dfs().items():
306
308
  if len(df.columns) > 6:
@@ -313,7 +315,8 @@ def get_dict_of_test_series():
313
315
  return series
314
316
 
315
317
 
316
- def get_dict_of_polars_test_series():
318
+ def get_dict_of_polars_test_series() -> dict[str, Any]:
319
+ """A dictionary of Polars Series"""
317
320
  import polars as pl
318
321
  import pyarrow as pa
319
322
 
@@ -342,7 +345,8 @@ def generate_date_series():
342
345
  return pd.Series(pd.date_range("1677-09-23", "2262-04-10", freq="D"))
343
346
 
344
347
 
345
- def generate_random_series(rows, type):
348
+ def generate_random_series(rows: int, type: str) -> Any:
349
+ """Generate a random Pandas Series of the given type and number of rows"""
346
350
  if type == "bool":
347
351
  return pd.Series(np.random.binomial(n=1, p=0.5, size=rows), dtype=bool)
348
352
  if type == "boolean":
@@ -382,15 +386,18 @@ def generate_random_series(rows, type):
382
386
  raise NotImplementedError(type)
383
387
 
384
388
 
385
- def generate_random_df(rows, columns, column_types=COLUMN_TYPES):
389
+ def generate_random_df(
390
+ rows: int, columns: int, column_types: Sequence[str] = COLUMN_TYPES
391
+ ) -> pd.DataFrame:
386
392
  rows = int(rows)
387
393
  types = np.random.choice(column_types, size=columns)
388
- columns = [
394
+ columns_names = [
389
395
  "Column{}OfType{}".format(col, type.title()) for col, type in enumerate(types)
390
396
  ]
391
397
 
392
398
  series = {
393
- col: generate_random_series(rows, type) for col, type in zip(columns, types)
399
+ col: generate_random_series(rows, type)
400
+ for col, type in zip(columns_names, types)
394
401
  }
395
402
  index = pd.Index(range(rows))
396
403
  for x in series.values():
@@ -399,7 +406,7 @@ def generate_random_df(rows, columns, column_types=COLUMN_TYPES):
399
406
  return pd.DataFrame(series)
400
407
 
401
408
 
402
- def get_pandas_styler():
409
+ def get_pandas_styler() -> Any:
403
410
  """This function returns a Pandas Styler object
404
411
 
405
412
  Cf. https://pandas.pydata.org/docs/user_guide/style.html
@@ -41,7 +41,7 @@ def DT(
41
41
  df: DataFrameOrSeries,
42
42
  caption: Optional[str] = None,
43
43
  **kwargs: Unpack[ITableOptions],
44
- ):
44
+ ) -> str:
45
45
  """This is a version of 'to_html_datatable' that works in Shiny applications."""
46
46
  kwargs["connected"] = kwargs.get("connected", _CONNECTED)
47
47
  html = to_html_datatable(
@@ -1,6 +1,7 @@
1
1
  from typing import Optional
2
2
 
3
3
  import streamlit.components.v1 as components
4
+ from streamlit.components.v1.custom_component import CustomComponent
4
5
  from typing_extensions import Unpack
5
6
 
6
7
  from .javascript import get_itables_extension_arguments
@@ -17,7 +18,7 @@ def interactive_table(
17
18
  key: Optional[str] = None,
18
19
  caption: Optional[str] = None,
19
20
  **kwargs: Unpack[ITableOptions],
20
- ):
21
+ ) -> CustomComponent:
21
22
  """Render the DataFrame as an interactive datatable in Streamlit applications"""
22
23
  dt_args, other_args = get_itables_extension_arguments(df, caption, **kwargs)
23
24
  return _streamlit_component_func(key=key, dt_args=dt_args, other_args=other_args)
@@ -54,6 +54,7 @@ class DataTableOptions(TypedDict):
54
54
  Sequence[Sequence[Union[int, str]]],
55
55
  ]
56
56
  ]
57
+ pageLength: NotRequired[int]
57
58
  order: NotRequired[
58
59
  Union[Sequence[Sequence[Union[int, str]]], Mapping[str, Union[int, str]]]
59
60
  ]
@@ -150,7 +151,7 @@ class DTForITablesOptions(DataTableOptions):
150
151
  display_logo_when_loading: NotRequired[bool]
151
152
 
152
153
 
153
- def is_typeguard_available():
154
+ def is_typeguard_available() -> bool:
154
155
  """Check if typeguard is available"""
155
156
  try:
156
157
  typeguard_version = version("typeguard")
@@ -7,13 +7,13 @@ UNPKG_DT_BUNDLE_URL_NO_VERSION = "https://www.unpkg.com/dt_for_itables/dt_bundle
7
7
  UNPKG_DT_BUNDLE_CSS_NO_VERSION = "https://www.unpkg.com/dt_for_itables/dt_bundle.css"
8
8
 
9
9
 
10
- def find_package_file(*path):
10
+ def find_package_file(*path: str) -> Path:
11
11
  """Return the full path to a file from the itables package"""
12
12
  current_path = Path(__file__).parent
13
13
  return Path(current_path, *path)
14
14
 
15
15
 
16
- def read_package_file(*path):
16
+ def read_package_file(*path: str) -> str:
17
17
  """Return the content of a file from the itables package"""
18
18
  with open(find_package_file(*path), encoding="utf-8") as fp:
19
19
  return fp.read()
@@ -1,3 +1,3 @@
1
1
  """ITables' version number"""
2
2
 
3
- __version__ = "2.4.1"
3
+ __version__ = "2.4.2"
@@ -53,7 +53,7 @@ class ITable(anywidget.AnyWidget):
53
53
  df: Optional[DataFrameOrSeries] = None,
54
54
  caption: Optional[str] = None,
55
55
  **kwargs: Unpack[ITableOptions],
56
- ):
56
+ ) -> None:
57
57
  """
58
58
  Update either the table data, attributes, or the arguments passed
59
59
  to DataTable. Arguments that are not mentioned
@@ -69,7 +69,7 @@ class ITable(anywidget.AnyWidget):
69
69
  if df is None:
70
70
  df = self._df
71
71
  if "selected_rows" not in kwargs:
72
- kwargs["selected_rows"] = self.selected_rows
72
+ kwargs["selected_rows"] = self.selected_rows or []
73
73
  if caption is None and self.caption is not None:
74
74
  caption = self.caption
75
75
  if "classes" not in kwargs:
@@ -108,7 +108,7 @@ class ITable(anywidget.AnyWidget):
108
108
  return self._df
109
109
 
110
110
  @df.setter
111
- def df(self, df: Optional[DataFrameOrSeries]):
111
+ def df(self, df: Optional[DataFrameOrSeries]) -> None:
112
112
  self.update(df)
113
113
 
114
114
  @property
@@ -48,12 +48,12 @@ class ITable(ITableComponent):
48
48
  **kwargs : dict
49
49
  Additional keyword arguments for the component.
50
50
  """
51
- if not isinstance(id, str):
51
+ if not isinstance(id, str): # pyright: ignore[reportUnnecessaryIsInstance]
52
52
  raise ValueError("The id must be a string.")
53
53
  if not id:
54
54
  raise ValueError("The id cannot be an empty string.")
55
55
 
56
- return super().__init__(
56
+ return super().__init__( # pyright: ignore[reportUnknownMemberType]
57
57
  id=id, **get_itable_component_kwargs(df, caption, **kwargs)
58
58
  )
59
59
 
@@ -1,2 +1,2 @@
1
- (()=>{"use strict";var e,r,t={188:(e,r,t)=>{t.d(r,{Ay:()=>l,Gs:()=>u,tu:()=>p});var n=t(609),o=t.n(n);const i=window.PropTypes;var a=t.n(i),s=React.lazy((function(){return t.e(741).then(t.bind(t,109))})),c=function(e){return o().createElement(o().Suspense,{fallback:null},o().createElement(s,e))};c.defaultProps={},c.propTypes={id:a().string.isRequired,caption:a().string,selected_rows:a().array.isRequired,style:a().object.isRequired,classes:a().string.isRequired,dt_args:a().object.isRequired,setProps:a().func};const l=c;var u=c.defaultProps,p=c.propTypes},609:e=>{e.exports=window.React}},n={};function o(e){var r=n[e];if(void 0!==r)return r.exports;var i=n[e]={id:e,exports:{}};return t[e].call(i.exports,i,i.exports,o),i.exports}o.m=t,o.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return o.d(r,{a:r}),r},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>"async-ITable.js",o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="itables_for_dash:",o.l=(t,n,i,a)=>{if(e[t])e[t].push(n);else{var s,c;if(void 0!==i)for(var l=document.getElementsByTagName("script"),u=0;u<l.length;u++){var p=l[u];if(p.getAttribute("src")==t||p.getAttribute("data-webpack")==r+i){s=p;break}}s||(c=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,o.nc&&s.setAttribute("nonce",o.nc),s.setAttribute("data-webpack",r+i),s.src=t),e[t]=[n];var d=(r,n)=>{s.onerror=s.onload=null,clearTimeout(f);var o=e[t];if(delete e[t],s.parentNode&&s.parentNode.removeChild(s),o&&o.forEach((e=>e(n))),r)return r(n)},f=setTimeout(d.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=d.bind(null,s.onerror),s.onload=d.bind(null,s.onload),c&&document.head.appendChild(s)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var r=o.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})();var i,a=function(){var e=document.currentScript;if(!e){for(var r=document.getElementsByTagName("script"),t=[],n=0;n<r.length;n++)t.push(r[n]);e=(t=t.filter((function(e){return!e.async&&!e.text&&!e.textContent}))).slice(-1)[0]}return e};if(Object.defineProperty(o,"p",{get:(i=a().src.split("/").slice(0,-1).join("/")+"/",function(){return i})}),"undefined"!=typeof jsonpScriptSrc){var s=jsonpScriptSrc;jsonpScriptSrc=function(e){var r,t=(r=a(),/\/_dash-component-suites\//.test(r.src)),n=s(e);if(!t)return n;var o=n.split("/"),i=o.slice(-1)[0].split(".");return i.splice(1,0,"v0_2_0m1749590612"),o.splice(-1,1,i.join(".")),o.join("/")}}(()=>{o.b=document.baseURI||self.location.href;var e={792:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var i=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=i);var a=o.p+o.u(r),s=new Error;o.l(a,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var i=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;s.message="Loading chunk "+r+" failed.\n("+i+": "+a+")",s.name="ChunkLoadError",s.type=i,s.request=a,n[1](s)}}),"chunk-"+r,r)}};var r=(r,t)=>{var n,i,[a,s,c]=t,l=0;if(a.some((r=>0!==e[r]))){for(n in s)o.o(s,n)&&(o.m[n]=s[n]);c&&c(o)}for(r&&r(t);l<a.length;l++)i=a[l],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0},t=self.webpackChunkitables_for_dash=self.webpackChunkitables_for_dash||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),o.nc=void 0;var c={};o.r(c),o.d(c,{ITable:()=>l.Ay});var l=o(188);window.itables_for_dash=c})();
1
+ (()=>{"use strict";var e,r,t={188:(e,r,t)=>{t.d(r,{Ay:()=>l,Gs:()=>u,tu:()=>p});var n=t(609),o=t.n(n);const i=window.PropTypes;var a=t.n(i),s=React.lazy((function(){return t.e(741).then(t.bind(t,109))})),c=function(e){return o().createElement(o().Suspense,{fallback:null},o().createElement(s,e))};c.defaultProps={},c.propTypes={id:a().string.isRequired,caption:a().string,selected_rows:a().array.isRequired,style:a().object.isRequired,classes:a().string.isRequired,dt_args:a().object.isRequired,setProps:a().func};const l=c;var u=c.defaultProps,p=c.propTypes},609:e=>{e.exports=window.React}},n={};function o(e){var r=n[e];if(void 0!==r)return r.exports;var i=n[e]={id:e,exports:{}};return t[e].call(i.exports,i,i.exports,o),i.exports}o.m=t,o.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return o.d(r,{a:r}),r},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>"async-ITable.js",o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="itables_for_dash:",o.l=(t,n,i,a)=>{if(e[t])e[t].push(n);else{var s,c;if(void 0!==i)for(var l=document.getElementsByTagName("script"),u=0;u<l.length;u++){var p=l[u];if(p.getAttribute("src")==t||p.getAttribute("data-webpack")==r+i){s=p;break}}s||(c=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,o.nc&&s.setAttribute("nonce",o.nc),s.setAttribute("data-webpack",r+i),s.src=t),e[t]=[n];var d=(r,n)=>{s.onerror=s.onload=null,clearTimeout(f);var o=e[t];if(delete e[t],s.parentNode&&s.parentNode.removeChild(s),o&&o.forEach((e=>e(n))),r)return r(n)},f=setTimeout(d.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=d.bind(null,s.onerror),s.onload=d.bind(null,s.onload),c&&document.head.appendChild(s)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var r=o.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})();var i,a=function(){var e=document.currentScript;if(!e){for(var r=document.getElementsByTagName("script"),t=[],n=0;n<r.length;n++)t.push(r[n]);e=(t=t.filter((function(e){return!e.async&&!e.text&&!e.textContent}))).slice(-1)[0]}return e};if(Object.defineProperty(o,"p",{get:(i=a().src.split("/").slice(0,-1).join("/")+"/",function(){return i})}),"undefined"!=typeof jsonpScriptSrc){var s=jsonpScriptSrc;jsonpScriptSrc=function(e){var r,t=(r=a(),/\/_dash-component-suites\//.test(r.src)),n=s(e);if(!t)return n;var o=n.split("/"),i=o.slice(-1)[0].split(".");return i.splice(1,0,"v0_2_0m1749679400"),o.splice(-1,1,i.join(".")),o.join("/")}}(()=>{o.b=document.baseURI||self.location.href;var e={792:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var i=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=i);var a=o.p+o.u(r),s=new Error;o.l(a,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var i=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;s.message="Loading chunk "+r+" failed.\n("+i+": "+a+")",s.name="ChunkLoadError",s.type=i,s.request=a,n[1](s)}}),"chunk-"+r,r)}};var r=(r,t)=>{var n,i,[a,s,c]=t,l=0;if(a.some((r=>0!==e[r]))){for(n in s)o.o(s,n)&&(o.m[n]=s[n]);c&&c(o)}for(r&&r(t);l<a.length;l++)i=a[l],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0},t=self.webpackChunkitables_for_dash=self.webpackChunkitables_for_dash||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),o.nc=void 0;var c={};o.r(c),o.d(c,{ITable:()=>l.Ay});var l=o(188);window.itables_for_dash=c})();
2
2
  //# sourceMappingURL=itables_for_dash.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"itables_for_dash.min.js","mappings":"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","sources":["webpack:///webpack/runtime/load script","webpack:///external window \"PropTypes\"","webpack:///./src/lib/LazyLoader.js","webpack:///./src/lib/components/ITable.react.js","webpack:///external window \"React\"","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/compat","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/runtime/nonce"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"itables_for_dash:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"PropTypes\"];","export const ITable = React.lazy(() => import(/* webpackChunkName: \"ITable\" */ './fragments/ITable.react'));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { ITable as RealComponent } from '../LazyLoader';\n\n/**\n * ITable is a dash component for ITables\n */\nconst ITable = (props) => {\n return (\n <React.Suspense fallback={null}>\n <RealComponent {...props} />\n </React.Suspense>\n );\n};\n\nITable.defaultProps = {};\n\nITable.propTypes = {\n /**\n * The ID used to identify this component in Dash callbacks.\n */\n id: PropTypes.string.isRequired,\n\n /**\n * The table caption\n */\n caption: PropTypes.string,\n\n /**\n * The index of the selected rows (pass select=True to allow selection)\n */\n selected_rows: PropTypes.array.isRequired,\n\n /**\n * The table style\n */\n style: PropTypes.object.isRequired,\n\n /**\n * The table classes\n */\n classes: PropTypes.string.isRequired,\n\n /**\n * The arguments for DataTable e.g. select, buttons, layout etc.\n */\n dt_args: PropTypes.object.isRequired,\n\n /**\n * Dash-assigned callback that should be called to report property changes\n * to Dash, to make them available for callbacks.\n */\n setProps: PropTypes.func\n};\n\nexport default ITable;\nexport const defaultProps = ITable.defaultProps;\nexport const propTypes = ITable.propTypes;\n","module.exports = window[\"React\"];","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + \"async-ITable\" + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","var getCurrentScript = function() {\n var script = document.currentScript;\n if (!script) {\n /* Shim for IE11 and below */\n /* Do not take into account async scripts and inline scripts */\n\n var doc_scripts = document.getElementsByTagName('script');\n var scripts = [];\n\n for (var i = 0; i < doc_scripts.length; i++) {\n scripts.push(doc_scripts[i]);\n }\n\n scripts = scripts.filter(function(s) { return !s.async && !s.text && !s.textContent; });\n script = scripts.slice(-1)[0];\n }\n\n return script;\n};\n\nvar isLocalScript = function(script) {\n return /\\/_dash-component-suites\\//.test(script.src);\n};\n\nObject.defineProperty(__webpack_require__, 'p', {\n get: (function () {\n var script = getCurrentScript();\n\n var url = script.src.split('/').slice(0, -1).join('/') + '/';\n\n return function() {\n return url;\n };\n })()\n});\n\nif (typeof jsonpScriptSrc !== 'undefined') {\n var __jsonpScriptSrc__ = jsonpScriptSrc;\n jsonpScriptSrc = function(chunkId) {\n var script = getCurrentScript();\n var isLocal = isLocalScript(script);\n\n var src = __jsonpScriptSrc__(chunkId);\n\n if(!isLocal) {\n return src;\n }\n\n var srcFragments = src.split('/');\n var fileFragments = srcFragments.slice(-1)[0].split('.');\n\n fileFragments.splice(1, 0, \"v0_2_0m1749590612\");\n srcFragments.splice(-1, 1, fileFragments.join('.'))\n\n return srcFragments.join('/');\n };\n}\n","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkitables_for_dash\"] = self[\"webpackChunkitables_for_dash\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;"],"names":["inProgress","dataWebpackPrefix","window","ITable","React","lazy","props","fallback","RealComponent","defaultProps","propTypes","id","PropTypes","isRequired","caption","selected_rows","style","classes","dt_args","setProps","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call","m","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","f","e","chunkId","Promise","all","keys","reduce","promises","u","g","globalThis","this","Function","obj","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","i","length","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","fn","setTimeout","bind","type","target","head","appendChild","r","Symbol","toStringTag","value","scriptUrl","importScripts","location","currentScript","tagName","toUpperCase","test","Error","replace","p","getCurrentScript","doc_scripts","filter","async","text","textContent","slice","split","join","jsonpScriptSrc","__jsonpScriptSrc__","isLocal","srcFragments","fileFragments","splice","b","baseURI","self","href","installedChunks","j","installedChunkData","promise","resolve","reject","error","errorType","realSrc","message","name","request","webpackJsonpCallback","parentChunkLoadingFunction","data","chunkIds","moreModules","runtime","some","chunkLoadingGlobal"],"sourceRoot":""}
1
+ {"version":3,"file":"itables_for_dash.min.js","mappings":"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","sources":["webpack:///webpack/runtime/load script","webpack:///external window \"PropTypes\"","webpack:///./src/lib/LazyLoader.js","webpack:///./src/lib/components/ITable.react.js","webpack:///external window \"React\"","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/compat","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/runtime/nonce"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"itables_for_dash:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"PropTypes\"];","export const ITable = React.lazy(() => import(/* webpackChunkName: \"ITable\" */ './fragments/ITable.react'));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { ITable as RealComponent } from '../LazyLoader';\n\n/**\n * ITable is a dash component for ITables\n */\nconst ITable = (props) => {\n return (\n <React.Suspense fallback={null}>\n <RealComponent {...props} />\n </React.Suspense>\n );\n};\n\nITable.defaultProps = {};\n\nITable.propTypes = {\n /**\n * The ID used to identify this component in Dash callbacks.\n */\n id: PropTypes.string.isRequired,\n\n /**\n * The table caption\n */\n caption: PropTypes.string,\n\n /**\n * The index of the selected rows (pass select=True to allow selection)\n */\n selected_rows: PropTypes.array.isRequired,\n\n /**\n * The table style\n */\n style: PropTypes.object.isRequired,\n\n /**\n * The table classes\n */\n classes: PropTypes.string.isRequired,\n\n /**\n * The arguments for DataTable e.g. select, buttons, layout etc.\n */\n dt_args: PropTypes.object.isRequired,\n\n /**\n * Dash-assigned callback that should be called to report property changes\n * to Dash, to make them available for callbacks.\n */\n setProps: PropTypes.func\n};\n\nexport default ITable;\nexport const defaultProps = ITable.defaultProps;\nexport const propTypes = ITable.propTypes;\n","module.exports = window[\"React\"];","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + \"async-ITable\" + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","var getCurrentScript = function() {\n var script = document.currentScript;\n if (!script) {\n /* Shim for IE11 and below */\n /* Do not take into account async scripts and inline scripts */\n\n var doc_scripts = document.getElementsByTagName('script');\n var scripts = [];\n\n for (var i = 0; i < doc_scripts.length; i++) {\n scripts.push(doc_scripts[i]);\n }\n\n scripts = scripts.filter(function(s) { return !s.async && !s.text && !s.textContent; });\n script = scripts.slice(-1)[0];\n }\n\n return script;\n};\n\nvar isLocalScript = function(script) {\n return /\\/_dash-component-suites\\//.test(script.src);\n};\n\nObject.defineProperty(__webpack_require__, 'p', {\n get: (function () {\n var script = getCurrentScript();\n\n var url = script.src.split('/').slice(0, -1).join('/') + '/';\n\n return function() {\n return url;\n };\n })()\n});\n\nif (typeof jsonpScriptSrc !== 'undefined') {\n var __jsonpScriptSrc__ = jsonpScriptSrc;\n jsonpScriptSrc = function(chunkId) {\n var script = getCurrentScript();\n var isLocal = isLocalScript(script);\n\n var src = __jsonpScriptSrc__(chunkId);\n\n if(!isLocal) {\n return src;\n }\n\n var srcFragments = src.split('/');\n var fileFragments = srcFragments.slice(-1)[0].split('.');\n\n fileFragments.splice(1, 0, \"v0_2_0m1749679400\");\n srcFragments.splice(-1, 1, fileFragments.join('.'))\n\n return srcFragments.join('/');\n };\n}\n","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkitables_for_dash\"] = self[\"webpackChunkitables_for_dash\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;"],"names":["inProgress","dataWebpackPrefix","window","ITable","React","lazy","props","fallback","RealComponent","defaultProps","propTypes","id","PropTypes","isRequired","caption","selected_rows","style","classes","dt_args","setProps","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call","m","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","f","e","chunkId","Promise","all","keys","reduce","promises","u","g","globalThis","this","Function","obj","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","i","length","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","fn","setTimeout","bind","type","target","head","appendChild","r","Symbol","toStringTag","value","scriptUrl","importScripts","location","currentScript","tagName","toUpperCase","test","Error","replace","p","getCurrentScript","doc_scripts","filter","async","text","textContent","slice","split","join","jsonpScriptSrc","__jsonpScriptSrc__","isLocal","srcFragments","fileFragments","splice","b","baseURI","self","href","installedChunks","j","installedChunkData","promise","resolve","reject","error","errorType","realSrc","message","name","request","webpackJsonpCallback","parentChunkLoadingFunction","data","chunkIds","moreModules","runtime","some","chunkLoadingGlobal"],"sourceRoot":""}
@@ -1,17 +1,6 @@
1
- try:
2
- from dash import Output, no_update # type: ignore
3
- except ImportError as e: # type: ignore
4
- import_error = e
5
-
6
- def Output(*args, **kwargs): # type: ignore
7
- raise import_error
8
-
9
- def no_update(*args, **kwargs): # type: ignore
10
- raise import_error
11
-
12
-
13
1
  from typing import Any, Optional, cast
14
2
 
3
+ from dash import Output, no_update
15
4
  from typing_extensions import Unpack
16
5
 
17
6
  from itables.javascript import (
@@ -34,6 +23,9 @@ def get_itable_component_kwargs(
34
23
  caption: Optional[str] = None,
35
24
  **kwargs: Unpack[ITableOptions],
36
25
  ) -> dict[str, Any]:
26
+ """
27
+ A function that prepares the arguments for our Dash component.
28
+ """
37
29
  dt_args, other_args = get_itables_extension_arguments(df, caption, **kwargs)
38
30
 
39
31
  style = get_expanded_style(other_args.pop("style"))
@@ -14,6 +14,7 @@ classifiers = [
14
14
  "Development Status :: 5 - Production/Stable",
15
15
  "License :: OSI Approved :: MIT License",
16
16
  "Framework :: Jupyter",
17
+ "Framework :: Dash",
17
18
  "Intended Audience :: Developers",
18
19
  "Intended Audience :: Science/Research",
19
20
  "Programming Language :: Python",
@@ -23,6 +24,7 @@ classifiers = [
23
24
  "Programming Language :: Python :: 3.11",
24
25
  "Programming Language :: Python :: 3.12",
25
26
  "Programming Language :: Python :: 3.13",
27
+ "Typing :: Typed",
26
28
  ]
27
29
  requires-python = ">= 3.9"
28
30
  dependencies = ["IPython", "pandas", "numpy"]
@@ -126,5 +128,15 @@ artifacts = [
126
128
 
127
129
  [tool.pyright]
128
130
  typeCheckingMode = "standard"
129
- ignore = ["apps/marimo"]
130
- strict = ["docs", "apps"]
131
+ ignore = [
132
+ "apps/marimo",
133
+ "src/itables_for_dash/ITable.py",
134
+ ]
135
+ strict = [
136
+ "docs",
137
+ "apps",
138
+ "src/itables_for_dash",
139
+ "src/itables/__init__.py",
140
+ "src/itables/dash.py",
141
+ "src/itables/streamlit.py",
142
+ ]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes