<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _deck_from_smoothie( self, smoothie_pos: Dict[str, float]) -> Dict[Axis, float]: """ Build a deck-abs position store from the smoothie's position This should take the smoothie style position {'X': float, etc} and turn it into the position dict used here {Axis.X: float} in deck-absolute coordinates. It runs the reverse deck transformation for the axes that require it. One piece of complexity is that if the gantry transformation includes a transition between non parallel planes, the z position of the left mount would depend on its actual position in deck frame, so we have to apply the mount offset. TODO: Figure out which frame the mount offset is measured in, because if it's measured in the deck frame (e.g. by touching off points on the deck) it has to go through the reverse transform to be added to the smoothie coordinates here. """

        with_enum = {Axis[k]: v for k, v in smoothie_pos.items()}
        plunger_axes = {k: v for k, v in with_enum.items()
                        if k not in Axis.gantry_axes()}
        right = (with_enum[Axis.X], with_enum[Axis.Y],
                 with_enum[Axis.by_mount(top_types.Mount.RIGHT)])
        # Tell apply_transform to just do the change of base part of the
        # transform rather than the full affine transform, because this is
        # an offset
        left = (with_enum[Axis.X],
                with_enum[Axis.Y],
                with_enum[Axis.by_mount(top_types.Mount.LEFT)])
        right_deck = linal.apply_reverse(self.config.gantry_calibration,
                                         right)
        left_deck = linal.apply_reverse(self.config.gantry_calibration,
                                        left)
        deck_pos = {Axis.X: right_deck[0],
                    Axis.Y: right_deck[1],
                    Axis.by_mount(top_types.Mount.RIGHT): right_deck[2],
                    Axis.by_mount(top_types.Mount.LEFT): left_deck[2]}
        deck_pos.update(plunger_axes)
        return deck_pos