Lib for adding file upload functionality to GraphQL mutations in Graphene Django and Flask-Graphql
Project description
graphene-file-upload
graphene-file-upload is a drop in replacement for the the GraphQL view in Graphene for Django, and for Flask-Graphql. It supports multi-part file uploads that adhere to the Multipart Request Spec.
It currently supports Python 2.7 and 3.4+.
Installation:
pip install graphene-file-upload
Usage
To add an upload type to your mutation, import and use Upload. Upload is a scalar type.
from graphene_file_upload.scalars import Upload
class UploadMutation(graphene.Mutation):
class Arguments:
file = Upload(required=True)
success = graphene.Boolean()
def mutate(self, info, file, **kwargs):
# do something with your file
return UploadMutation(success=True)
Django Integration:
To use, import the view, then add to your list of urls (replace previous GraphQL view).
from graphene_file_upload.django import FileUploadGraphQLView
urlpatterns = [
url(r'^graphql', FileUploadGraphQLView.as_view(graphiql=True)),
]
Flask Integration:
Note that flask-graphql version <2.0 is not supported. At the time of writing this README, you must install flask-graphql with pip install --pre flask-graphql
Simply import the modified view and create a new url rule on your app:
from graphene_file_upload.flask import FileUploadGraphQLView
app.add_url_rule(
'/graphql',
view_func=FileUploadGraphQLView.as_view(
...
)
)
Contributing:
If you’d like to contribute, please run the test suite prior to sending a PR.
In order to run the testing environment, create a virtual environment, install tox, and run the tox commands:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements-tox.txt
# You may have to deactivate and reactivate to have access to the tox command,
# depending on your system.
# Run the test suite with the versions of python you have installed
tox -e py27,py34
# Alternatively, if you're using something like pyenv and can easily install
# Multiple versions of python, then try running the following command
tox
# If for some reason you need to recreate the tox environment (e.g. a new
# dependency has been added since you last ran it, add the -r flag to the
# tox command)
tox -r {...additional flags...}
Check out pyenv if you’d like a simple way of installing multiple python versions to test out.
Packaging for PyPi:
Build the distribution.
python3 setup.py sdist bdist_wheel
Upload to PyPi test servers.
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
Upload to PyPi production servers.
twine upload dist/*
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for graphene_file_upload-1.2.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | b5f47a81f5614d1184ba9480a63835769b26303cb7759316122401784858e9c7 |
|
MD5 | 4ec839e947e193fed6de5f7a22e6248a |
|
BLAKE2b-256 | 71b421810cf3847b4699dc00f680e1d43f6ddf4a99a70ba17771315999325050 |
Hashes for graphene_file_upload-1.2.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 034ff72d2834b7aebd06fda412fa88a10aba34bac604317f7552457e47040654 |
|
MD5 | 2dffc297b3dd0fa5bfba563b85ff6594 |
|
BLAKE2b-256 | c6a7b0de6ec138b554e9d7f36e2a1acf44fa8217d45d5f90cb0098907cd19297 |