class_docstr: Data aggregation functionality for ``go.Figures``.
class_docstr_tok: ["Data","aggregation","functionality","for","``","go.Figures","``","."]
docstr: Get the number of rows and columns of the figure's grid.
  
  Returns
  -------
  Tuple[int, int]
      The number of rows and columns of the figure's grid, respectively.
docstr_tok: ["Get","the","number","of","rows","and","columns","of","the","figure","'s","grid",".","Returns","--","--","--","-","Tuple","[","int",",","int","]","The","number","of","rows","and","columns","of","the","figure","'s","grid",",","respectively","."]
code: def _get_subplot_rows_and_cols_from_grid(self) -> Tuple[int, int]:
      """Get the number of rows and columns of the figure's grid.
  
      Returns
      -------
      Tuple[int, int]
          The number of rows and columns of the figure's grid, respectively.
      """
      if self._grid_ref is None:  # case: go.Figure (no subplots)
          return (1, 1)
      # TODO: not 100% sure whether this is correct
      return (len(self._grid_ref), len(self._grid_ref[0]))
  
imports: from __future__ import annotations
  import os
  import warnings
  from pathlib import Path
  from typing import List, Optional, Tuple
  import dash
  import plotly.graph_objects
  from plotly.basedatatypes import BaseFigure
  from ..aggregation import AbstractAggregator, AbstractGapHandler, MedDiffGapHandler, MinMaxLTTB
  from .figure_resampler_interface import AbstractFigureAggregator
  from .utils import is_figure, is_fr
label_desc: Use image node_id 2 for calling the FigureResampler obj's underlying member method code with example usage: obj._get_subplot_rows_and_cols_from_grid() and returns: len,  len, int,  int