  [mypy-scipy.*]
  ignore_missing_imports = True
  [mypy-tensorflow.*]
  ignore_missing_imports = True
  [mypy-tensorflow_probability.*]
  ignore_missing_imports = True
  [mypy-tqdm.*]
  ignore_missing_imports = True
 
</s> remove         self._pitch_yaw: Tuple[int, int] = (0, 0)
 </s> add         self._pitch_yaw_roll: Tuple[float, float, float] = (0, 0, 0) </s> remove         self._pitch_yaw = (euler[0][0], euler[1][0])
        logger.trace("yaw_pitch: %s", self._pitch_yaw)  # type: ignore
 </s> add         self._pitch_yaw_roll = cast(Tuple[float, float, float], tuple(euler.squeeze()))
        logger.trace("yaw_pitch: %s", self._pitch_yaw_roll)  # type: ignore </s> remove     (("yaw", "pitch"), _GPDEGREES),
 </s> add     (("yaw", "pitch", "roll"), _GPDEGREES), </s> remove     def _get_pitch_yaw(self) -> None:
        """ Obtain the yaw and pitch from the :attr:`_rotation` in eular angles. """
 </s> add     @property
    def roll(self) -> float:
        """ float: The roll of the aligned face in eular angles """
        if not any(self._pitch_yaw_roll):
            self._get_pitch_yaw_roll()
        return self._pitch_yaw_roll[2]

    def _get_pitch_yaw_roll(self) -> None:
        """ Obtain the yaw, roll and pitch from the :attr:`_rotation` in eular angles. """ </s> remove     "yaw", "pitch", "hist", "hist-dissim", "color-black", "color-gray", "color-luma",
 </s> add     "yaw", "pitch", "roll", "hist", "hist-dissim", "color-black", "color-gray", "color-luma",
[mypy-sklearn.*]
ignore_missing_imports = True
  [mypy-scipy.*]
  ignore_missing_imports = True
[mypy-sklearn.*]
ignore_missing_imports = True
  [mypy-tensorflow.*]
  ignore_missing_imports = True
  [mypy-tensorflow_probability.*]
  ignore_missing_imports = True
  [mypy-tqdm.*]
  ignore_missing_imports = True
keep add keep keep keep keep keep keep
 sort tool: Add sort by roll 
setup.cfg