      input_shape, Tuple, optional
          The input shape for the model. Default: ``None``
      """
      def __init__(self,
                   input_shape: T.Optional[T.Tuple[int, int, int]] = None) -> None:
          logger.debug("Initializing: %s (input_shape: %s)", self.__class__.__name__, input_shape)
          self._input_shape = (None, None, 3) if input_shape is None else input_shape
          assert len(self._input_shape) == 3 and self._input_shape[-1] == 3, (
              "Input shape must be in the format (height, width, channels) and the number of "
              f"channels must equal 3. Received: {self._input_shape}")
 
</s> remove     def __init__(self, input_shape: T.Optional[T.Tuple[int, int, int]] = None) -> None:
 </s> add     def __init__(self, input_shape: tuple[int, int, int] | None = None) -> None: </s> remove                  side: Literal["a", "b", "both"],
                 input_shape: T.Tuple[int, int, int],
 </s> add                  side: T.Literal["a", "b", "both"],
                 input_shape: tuple[int, int, int], </s> remove     def __init__(self, input_shape: T.Tuple[int, ...], config: dict) -> None:
 </s> add     def __init__(self, input_shape: tuple[int, ...], config: dict) -> None: </s> remove     def _get_inputs(self) -> T.List[tf.keras.layers.Input]:
 </s> add     def _get_inputs(self) -> list[tf.keras.layers.Input]: </s> remove     def compute_output_shape(self, input_shape: T.Tuple[int, ...]) -> T.Tuple[int, ...]:
 </s> add     def compute_output_shape(self, input_shape: tuple[int, ...]) -> tuple[int, ...]:
                 input_shape: tuple[int, int, int] | None = None) -> None:
      input_shape, Tuple, optional
          The input shape for the model. Default: ``None``
      """
      def __init__(self,
                 input_shape: tuple[int, int, int] | None = None) -> None:
          logger.debug("Initializing: %s (input_shape: %s)", self.__class__.__name__, input_shape)
          self._input_shape = (None, None, 3) if input_shape is None else input_shape
          assert len(self._input_shape) == 3 and self._input_shape[-1] == 3, (
              "Input shape must be in the format (height, width, channels) and the number of "
              f"channels must equal 3. Received: {self._input_shape}")
keep keep keep keep replace keep keep keep keep keep
 Rebase code (#1326)

* Remove tensorflow_probability requirement

* setup.py - fix progress bars

* requirements.txt: Remove pre python 3.9 packages

* update apple requirements.txt

* update INSTALL.md

* Remove python<3.9 code

* setup.py - fix Windows Installer

* typing: python3.9 compliant

* Update pytest and readthedocs python versions

* typing fixes

* Python Version updates
  - Reduce max version to 3.10
  - Default to 3.10 in installers
  - Remove incompatible 3.11 tests

* Update dependencies

* Downgrade imageio dep for Windows

* typing: merge optional unions and fixes

* Updates
  - min python version 3.10
  - typing to python 3.10 spec
  - remove pre-tf2.10 code
  - Add conda tests

* train: re-enable optimizer saving

* Update dockerfiles

* Update setup.py
  - Apple Conda deps to setup.py
  - Better Cuda + dependency handling

* bugfix: Patch logging to prevent Autograph errors

* Update dockerfiles

* Setup.py - Setup.py - stdout to utf-8

* Add more OSes to github Actions

* suppress mac-os end to end test 
lib/model/nets.py