code: def from_array(array):
          
          if array is None or not array:
              return None
          # end if
          assert_type_or_raise(array, dict, parameter_name="array")
          from pytgbot.api_types.sendable.files import InputFile
  
  
          data = {}
          # 'type' is given by class type
          data['media'] = u(array.get('media'))
          if array.get('thumb') is None:
              data['thumb'] = None
          elif isinstance(array.get('thumb'), InputFile):
              data['thumb'] = None  # will be filled later by get_request_data()
          elif isinstance(array.get('thumb'), str):
              data['thumb'] = u(array.get('thumb'))
          else:
              raise TypeError('Unknown type, must be one of InputFile, str or None.')
          # end if
          data['caption'] = u(array.get('caption')) if array.get('caption') is not None else None
          data['parse_mode'] = u(array.get('parse_mode')) if array.get('parse_mode') is not None else None
  
          instance = InputMediaDocument(**data)
          instance._raw = array
          return instance
docs: Deserialize a new InputMediaDocument from a given dictionary.
  
          :return: new InputMediaDocument instance.
          :rtype: InputMediaDocument