class_docstr: Base class to for spaces
  
  A *_space class should track the size taken up by all the objects that
  may fall on that side of the panel. The same name may appear in multiple
  side classes (e.g. legend), but atmost only one of those parameters will
  have a non-zero value.
class_docstr_tok: ["Base","class","to","for","spaces","A","*","_space","class","should","track","the","size","taken","up","by","all","the","objects","that","may","fall","on","that","side","of","the","panel",".","The","same","name","may","appear","in","multiple","side","classes","(","e.g",".","legend",")",",","but","atmost","only","one","of","those","parameters","will","have","a","non-zero","value","."]
code: def __post_init__(self):
      self._calculate()
  
imports: from __future__ import annotations
  import typing
  from abc import ABC
  from dataclasses import dataclass, fields
  from itertools import chain
  from matplotlib._tight_layout import get_subplotspec_list
  from ..facets import facet_grid, facet_null, facet_wrap
  from .patches import SFancyBboxPatch
  from .utils import bbox_in_figure_space, tight_bbox_in_figure_space
label_desc: Use image node_id 1 for calling the _side_spaces obj's underlying member method code with example usage: obj.__post_init__() without return types