plugins-quickstart icon indicating copy to clipboard operation
plugins-quickstart copied to clipboard

[Bug] Incompatibility issues with Quart and Quart-CORS due to unspecific version requirements

Open DjangoPeng opened this issue 2 years ago • 5 comments

Environment Information:

  • OS: Ubuntu 18.04.6 LTS
  • Python Version: 3.6.9
  • Quart Version: 0.6.15
  • Quart-CORS Version: 0.1.3

Current Situation:

The versions are unspecific, leading to issues with Quart and Quart-CORS APIs when used. For instance:

Traceback (most recent call last):
  File "main.py", line 12, in <module>
    @app.post("/todos/<string:username>")
AttributeError: 'Quart' object has no attribute 'post'

Changing all @app HTTP method calls to this style:

@app.route("/todos/<string:username>", methods=["POST"])

allows successful execution of main.py.

However, it's unable to load the sample project "TODO Plugin (no auth)" at https://chat.openai.com/ and the following error is displayed:

[2023-05-17 15:08:42,918] ERROR in app: Exception on request GET /logo.png
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/quart/app.py", line 1451, in handle_request
    return await self.full_dispatch_request(request_context)
  File "/usr/local/lib/python3.6/dist-packages/quart/app.py", line 1473, in full_dispatch_request
    result = await self.handle_user_exception(error)
  File "/usr/local/lib/python3.6/dist-packages/quart/app.py", line 892, in handle_user_exception
    raise error
  File "/usr/local/lib/python3.6/dist-packages/quart/app.py", line 1471, in full_dispatch_request
    result = await self.dispatch_request(request_context)
  File "/usr/local/lib/python3.6/dist-packages/quart/app.py", line 1519, in dispatch_request
    return await handler(**request_.view_args)
  File "main.py", line 36, in plugin_logo
    return await quart.send_file(filename, mimetype='image/png')
TypeError: send_file() got an unexpected keyword argument 'mimetype'

This issue seems to be related to the versioning of Quart and Quart-CORS. Can we specify the versions in the requirements to prevent these issues?

DjangoPeng avatar May 17 '23 07:05 DjangoPeng

@logankilpatrick PTAL

DjangoPeng avatar May 17 '23 07:05 DjangoPeng

Simply cloning, installing dependencies and running python main.py fails.

Pinning dependencies may make this more stable.

(gpt-plugins) ➜  plugins-quickstart git:(main) python main.py 
Traceback (most recent call last):
  File "/Users/rees/plugins-quickstart/main.py", line 4, in <module>
    import quart_cors
  File "/Users/rees/mambaforge/envs/gpt-plugins/lib/python3.11/site-packages/quart_cors/__init__.py", line 6, in <module>
    from quart.datastructures import HeaderSet, RequestAccessControl
ImportError: cannot import name 'HeaderSet' from 'quart.datastructures' (/Users/rees/mambaforge/envs/gpt-plugins/lib/python3.11/site-packages/quart/datastructures.py)
(gpt-plugins) ➜  plugins-quickstart git:(main) mamba list quart    
# packages in environment at /Users/rees/mambaforge/envs/gpt-plugins:
#
# Name                    Version                   Build  Channel
quart                     0.18.3             pyhd8ed1ab_0    conda-forge
quart-cors                0.2.0                      py_0    conda-forge

evanroyrees avatar Jun 09 '23 20:06 evanroyrees

@WiscEvan

How about taking a look at #30

DjangoPeng avatar Jun 10 '23 06:06 DjangoPeng

I gave your code a try as well and this still resulted in the error.

The error seems to be a result of using quart-cors 0.2.0 rather than quart-cors 0.6.0

The code ran without any issues with these versions:

# packages in environment at /Users/rees/mambaforge/envs/gpt-plugins:
#
# Name                    Version                   Build  Channel
quart                     0.18.4                   pypi_0    pypi
quart-cors                0.6.0                    pypi_0    pypi

The conda-forge channel for quart-cors appears to be out of date. This was resolved by installing with pip rather than mamba

The quart-cors conda-forge package should be bumped from 0.2.0 to the latest version to install using the conda package manager. Otherwise, installation should be performed using pypi

evanroyrees avatar Jun 13 '23 11:06 evanroyrees

I see.

Thanks for your explanation.

Let me update the PR( https://github.com/openai/plugins-quickstart/pull/30) to specify version of quart-cors

DjangoPeng avatar Jun 14 '23 02:06 DjangoPeng