Yuichiro Tachibana (Tsuchiya) c77f05abb6
Fix the Queue to call API endpoints without internal HTTP routing (#5165)
* [WIP] Replace the HTTP call to /api/predict with a function call

* Extract shared logics into route_utils.*

* Fix Queue.call_prediction() to return the output dict and raise exceptions

* Remove run_predict()

* Create route_utils.call_process_api()

* Check Blocks.api_open and return 404 if it's false

* Refactoring on queueing.py

* Refactoring on queueing.py, renaming data to body

* Fix the if block of availability check in the predict() endpoint handler

* Put the code of clearning pending streams into route_utils.call_process_api

* Format gradio/routes.py

* Fix queueing.Queue.reset_iterators() not to call an HTTP endpoint

* Remove ququeing.Queue.queue_client, which is no longer used

* Fix with static type analysis

* Remove gradio.utils.AsyncRequest, which is no longer used

* add changeset

* Remove PEP604-syntax which is not supported by Python<3.10

* Fix gradio/queueing.py

* Remove AsyncRequest test cases

* Fix queueing and routes test cases

* Fix

* Replace Queue.server_url with .server_app and remove methods related to the old .server_url

* Revert `gradio_api_url` because building the document fails

* Add __future__.annotations to route_utils.py

* Update gradio/queueing.py

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Format

* Mark the `gradio_api_url` parameter of `mount_gradio_app()` deprecated

* Fix Queue.call_prediction to convert the output to a plain object

* Add a `except asyncio.CancelledError` handler to avoid printing stack trace for task cancellation

* Move the call of `route_utils.restore_session_state` into `route_utils.call_process_api`

* exception class

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
2023-09-05 15:33:15 -07:00
..
2022-03-17 10:45:48 -07:00
2022-03-30 13:08:34 +03:00
2023-04-03 15:48:18 -07:00
2023-09-05 11:47:10 -04:00
2023-05-04 21:54:23 -05:00
2023-08-29 17:29:15 -04:00
2023-02-16 16:31:16 -06:00

Backend Testing Guidelines

  • All the tests should test Backend functionalities. Frontend functionalities and e2e tests are done in Frontend.
  • Make use of pytest fixtures whenever it is possible. With fixtures, objects with high initialize durations are reused within tests, ex. a client session.
  • All testdata resides within _gradio/test_data and all test_files resides within test/test_files.
  • When doing network operations do not forget to make use of async to make tests faster.
  • Have clear class and function naming within the tests.
  • Short descriptions within test functions are great.
  • Library function docstrings is expected to contain an example, please add missing docstrings to the library while you are writing tests the related function.
  • Library docstring examples and descriptions are expected to align with tests, please fix divergent tests and library docstrings.