I am using the Gradio API to access a private HF Space and whenever the response is supposed to be a file, I get the following error
File ".../venv/lib/python3.8/site-packages/gradio_client/serializing.py", line 294, in _deserialize_single
assert data is not None, f"The 'data' field is missing in {x}"
AssertionError: The 'data' field is missing in {'value': {'name': '/tmp/gradio/b067c151fedfffa4ccf49e831cbe080379a537e3/audio.wav', 'data': None, 'is_file': True}, '__type__': 'update'}
Below is the code I am running that is giving the error.
client = Client("https://my-private-space.hf.space/", hf_token=HF_TOKEN)
# generating audio from local language text
result = client.predict(
"some text",
"eng: English",
0.1,
api_name="/predict"
)
According to the error message, the Gradio client on GitHub should direct code execution to Line 281 in gradio_client/serializing.py, but the code execution jumps to Line 292 because it thinks “is_file” should be a key in the main dict it is reading.
I am unsure if this is a bug with the Gradio client or if something is wrong with my code that is pushing “is_file” into another dict under the key “value”.
Can anyone help with this?
Hi @bluman1 - are you returning gr.File.update instead of the path to a new file in your private space? I think that’s what’s causing the issue. I think this is a bug in gradio though. What version of gradio is the space using?
I am using v0.2.8
How will I return gr.File.update instead of the path to a new file?
The ideal response from the predict endpoint is supposed to be a file that I can save based on the temporary file I can see in the error response - ‘/tmp/gradio/b067c151fedfffa4ccf49e831cbe080379a537e3/audio.wav’
Here’s the full error log to make it easier
Traceback (most recent call last):
File ".../code.py", line 8, in <module>
result = client.predict(
File "../venv/lib/python3.8/site-packages/gradio_client/client.py", line 285, in predict
return self.submit(*args, api_name=api_name, fn_index=fn_index).result()
File "../venv/lib/python3.8/site-packages/gradio_client/client.py", line 982, in result
raise self.future._exception # type: ignore
File "../.pyenv/versions/3.8.5/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "../venv/lib/python3.8/site-packages/gradio_client/client.py", line 646, in _inner
predictions = self.process_predictions(*predictions)
File "../venv/lib/python3.8/site-packages/gradio_client/client.py", line 836, in process_predictions
predictions = self.deserialize(*predictions)
File "../venv/lib/python3.8/site-packages/gradio_client/client.py", line 822, in deserialize
[
File "../venv/lib/python3.8/site-packages/gradio_client/client.py", line 823, in <listcomp>
s.deserialize(
File "../venv/lib/python3.8/site-packages/gradio_client/serializing.py", line 349, in deserialize
return self._deserialize_single(
File "../venv/lib/python3.8/site-packages/gradio_client/serializing.py", line 294, in _deserialize_single
assert data is not None, f"The 'data' field is missing in {x}"
AssertionError: The 'data' field is missing in {'value': {'name': '/tmp/gradio/b067c151fedfffa4ccf49e831cbe080379a537e3/audio.wav', 'data': None, 'is_file': True}, '__type__': 'update'}