code: def FromData(cls, stream, json_data, http=None, auto_transfer=None,
                   **kwds):
          
          info = json.loads(json_data)
          missing_keys = cls._REQUIRED_SERIALIZATION_KEYS - set(info.keys())
          if missing_keys:
              raise exceptions.InvalidDataError(
                  'Invalid serialization data, missing keys: %s' % (
                      ', '.join(missing_keys)))
          download = cls.FromStream(stream, **kwds)
          if auto_transfer is not None:
              download.auto_transfer = auto_transfer
          else:
              download.auto_transfer = info['auto_transfer']
          setattr(download, '_Download__progress', info['progress'])
          setattr(download, '_Download__total_size', info['total_size'])
          download._Initialize(  # pylint: disable=protected-access
              http, info['url'])
          return download
docs: Create a new Download object from a stream and serialized data.