docs: def linear_deadzone(deadzone: float) -> DeadzoneCallable:
      """
          Real motors won't actually move unless you give them some minimum amount
          of input. This computes an output speed for a motor and causes it to
          'not move' if the input isn't high enough. Additionally, the output is
          adjusted linearly to compensate.
          
          Example: For a deadzone of 0.2:
          
          * Input of 0.0 will result in 0.0
          * Input of 0.2 will result in 0.0
          * Input of 0.3 will result in ~0.12
          * Input of 1.0 will result in 1.0
          
          This returns a function that computes the deadzone. You should pass the
          returned function to one of the drivetrain simulation functions as the
          ``deadzone`` parameter.
          
          :param motor_input: The motor input (between -1 and 1)
          :param deadzone: Minimum input required for the motor to move (between 0 and 1)
      """
      assert 0.0 < deadzone < 1.0
      scale_param = 1.0 - deadzone
  
      def _linear_deadzone(motor_input):
          abs_motor_input = abs(motor_input)
          if abs_motor_input < deadzone:
              return 0.0
          else:
              return math.copysign(
                  (abs_motor_input - deadzone) / scale_param, motor_input
              )
  
      return _linear_deadzone