def unpack_mix(discrete: Multipoint, linear: Linear, shaped: Maybe[Shaped], context: Context ) -> Union[Empty, Linear, Mix, Multipoint, Shaped]: empty = context.empty return ((shaped if linear is empty else (linear if shaped is empty else context.mix_cls(discrete, linear, shaped))) if discrete is empty else (discrete if shaped is empty and linear is empty else context.mix_cls(discrete, linear, shaped)))
def unpack_linear_mix(discrete: Maybe[Multipoint], linear: Maybe[Linear], context: Context ) -> Union[Empty, Mix, Multipoint, Linear]: return (linear if discrete is context.empty else (discrete if linear is context.empty else context.mix_cls(discrete, linear, context.empty)))