diff options
author | CoprDistGit <infra@openeuler.org> | 2023-06-20 08:05:10 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-06-20 08:05:10 +0000 |
commit | 2d29f95af36fbfae1d546392bd957ea9a14c13bb (patch) | |
tree | 804cc0ca7a9450e0607b6e0a0ec2d4319acecb19 | |
parent | 6920e8601364462bc64562e96e1ff2c9f15be195 (diff) |
automatic import of python-django-openapiopeneuler20.03
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-django-openapi.spec | 407 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 409 insertions, 0 deletions
@@ -0,0 +1 @@ +/django-openapi-0.1.1.11.tar.gz diff --git a/python-django-openapi.spec b/python-django-openapi.spec new file mode 100644 index 0000000..1ae6026 --- /dev/null +++ b/python-django-openapi.spec @@ -0,0 +1,407 @@ +%global _empty_manifest_terminate_build 0 +Name: python-django-openapi +Version: 0.1.1.11 +Release: 1 +Summary: A minimal FastAPI implementation in python2 + Django without pydantic +License: MIT License +URL: https://github.com/tokikanno/django-openapi +Source0: https://mirrors.aliyun.com/pypi/web/packages/3e/10/de2b06156083d22a531e602d9b9508ebaa7019baea5a71a1c5246791ce4f/django-openapi-0.1.1.11.tar.gz +BuildArch: noarch + +Requires: python3-django +Requires: python3-six + +%description +# django-openapi +A minimal FastAPI implementation in Python2 + Django without pydantic + +# Why do you make this? Can't you just use FastAPI directly? +I'm a big fan of [FastAPI](https://fastapi.tiangolo.com/). It's elegant and saves lots of doc maintaince & API spec communication costs for me. + +But FastAPI needs Python3 to run, some legacy projects I maintained are still using Python2 and built by Django framework. It would take 2 migration steps (Python 2 to 3 and Django to FastAPI) for moving them onto FastAPI framework. + +So I decided to build a minimal FastAPI implementation in Python2 + Django, that I could instantly get the benefits from FastAPI without too many migrations on my legacy projects. + +# Who should use this? +People who like the way FastAPI works but +* Are still on the long migration process from Python2 to Python3 +* Or don't want to do full system rewrite from Django to FastAPI +* Or don't want to upgrade from Python2 to Python3 + +# Features +* Auto OpenAPI schema/document generation from Python function parameter +* Auto HTTP request parameter validation from Python function parameters +* Python 2/3 compatiable, you could use almost the same code for you Python2/3 projects + +# Installation + +``` +pip install django-openapi +``` + +# Live demo provided by Gitpod + +Click the button below and launch a free live demo server via Gitpod + +[](https://gitpod.io/#https://github.com/tokikanno/django-openapi) + +If the button doesn't show up, you clould also use below link directly + +[https://gitpod.io/#https://github.com/tokikanno/django-openapi](https://gitpod.io/#https://github.com/tokikanno/django-openapi) + +After Gitpod launched, if you see a dialog like this, just hit the `Open Browser` button then you will get to the quick intro live demo server. + + + +Use ctrl + p (or cmd + p if u're using MacOS X) and search for `intro.py` to see the source code of intro demo server. + +# Quick start + +### In your Django project + +* Import `OpenAPI` from `django_openapi` +* Create an API object instance +* Add API object into urlpatterns + +```python +# import OpenAPI from django_opeanapi +from django_openapi import OpenAPI + +# create an API object instance +api = OpenAPI(title='My OpenAPI Test', prefix_path='/test_api') + +urlpatterns = [ + api.as_django_url_pattern() # Add API object into urlpatterns +] +``` + +* Start you django debug server and open your browser with url like `http://localhost:8000/test_api/_docs`, this is the auto document page. +* Now let's try adding some basic routes for you API + +```python +from django_openapi import Path, Query, Form + +@api.get('/test/hello_via_path/{word}', tags=['test']) +def hello_via_path(word=Path()): + return {'hello': word} + + +@api.get('/test/hello_via_query', tags=['test']) +def hello_via_query(word=Query()): + return {'hello': word} + + +@api.post('/test/hello_via_form', tags=['test']) +def hello_via_form(word=Form()): + return {'hello': word} +``` +* Reload your browser & see if anything changed to the auto document page +* Advanced routes via JSON body & JSON schema object + +```python +from django_openapi import Body +from django_openapi.schema import BaseModel, StringField + +class HelloPayload(BaseModel): + word = StringField(default_value='world', min_length=3) + +@api.post('/test/hello_via_json_body', tags=['test']) +def hello_via_json_body(payload=Body(HelloPayload)): + return {'hello': payload.word} +``` + +* Reload agagin, the auto document page now should have 4 APIs on it. + + + +Browse to the [demo folder](https://github.com/tokikanno/django-openapi/tree/master/demo) for more advanced samples. + +# TODO + +* More documents and samples +* Better schema validation error message handling +* More advanced field types (e.g.: EmailStringField, CommaSeparatedArrayField ...) + + + + +%package -n python3-django-openapi +Summary: A minimal FastAPI implementation in python2 + Django without pydantic +Provides: python-django-openapi +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-django-openapi +# django-openapi +A minimal FastAPI implementation in Python2 + Django without pydantic + +# Why do you make this? Can't you just use FastAPI directly? +I'm a big fan of [FastAPI](https://fastapi.tiangolo.com/). It's elegant and saves lots of doc maintaince & API spec communication costs for me. + +But FastAPI needs Python3 to run, some legacy projects I maintained are still using Python2 and built by Django framework. It would take 2 migration steps (Python 2 to 3 and Django to FastAPI) for moving them onto FastAPI framework. + +So I decided to build a minimal FastAPI implementation in Python2 + Django, that I could instantly get the benefits from FastAPI without too many migrations on my legacy projects. + +# Who should use this? +People who like the way FastAPI works but +* Are still on the long migration process from Python2 to Python3 +* Or don't want to do full system rewrite from Django to FastAPI +* Or don't want to upgrade from Python2 to Python3 + +# Features +* Auto OpenAPI schema/document generation from Python function parameter +* Auto HTTP request parameter validation from Python function parameters +* Python 2/3 compatiable, you could use almost the same code for you Python2/3 projects + +# Installation + +``` +pip install django-openapi +``` + +# Live demo provided by Gitpod + +Click the button below and launch a free live demo server via Gitpod + +[](https://gitpod.io/#https://github.com/tokikanno/django-openapi) + +If the button doesn't show up, you clould also use below link directly + +[https://gitpod.io/#https://github.com/tokikanno/django-openapi](https://gitpod.io/#https://github.com/tokikanno/django-openapi) + +After Gitpod launched, if you see a dialog like this, just hit the `Open Browser` button then you will get to the quick intro live demo server. + + + +Use ctrl + p (or cmd + p if u're using MacOS X) and search for `intro.py` to see the source code of intro demo server. + +# Quick start + +### In your Django project + +* Import `OpenAPI` from `django_openapi` +* Create an API object instance +* Add API object into urlpatterns + +```python +# import OpenAPI from django_opeanapi +from django_openapi import OpenAPI + +# create an API object instance +api = OpenAPI(title='My OpenAPI Test', prefix_path='/test_api') + +urlpatterns = [ + api.as_django_url_pattern() # Add API object into urlpatterns +] +``` + +* Start you django debug server and open your browser with url like `http://localhost:8000/test_api/_docs`, this is the auto document page. +* Now let's try adding some basic routes for you API + +```python +from django_openapi import Path, Query, Form + +@api.get('/test/hello_via_path/{word}', tags=['test']) +def hello_via_path(word=Path()): + return {'hello': word} + + +@api.get('/test/hello_via_query', tags=['test']) +def hello_via_query(word=Query()): + return {'hello': word} + + +@api.post('/test/hello_via_form', tags=['test']) +def hello_via_form(word=Form()): + return {'hello': word} +``` +* Reload your browser & see if anything changed to the auto document page +* Advanced routes via JSON body & JSON schema object + +```python +from django_openapi import Body +from django_openapi.schema import BaseModel, StringField + +class HelloPayload(BaseModel): + word = StringField(default_value='world', min_length=3) + +@api.post('/test/hello_via_json_body', tags=['test']) +def hello_via_json_body(payload=Body(HelloPayload)): + return {'hello': payload.word} +``` + +* Reload agagin, the auto document page now should have 4 APIs on it. + + + +Browse to the [demo folder](https://github.com/tokikanno/django-openapi/tree/master/demo) for more advanced samples. + +# TODO + +* More documents and samples +* Better schema validation error message handling +* More advanced field types (e.g.: EmailStringField, CommaSeparatedArrayField ...) + + + + +%package help +Summary: Development documents and examples for django-openapi +Provides: python3-django-openapi-doc +%description help +# django-openapi +A minimal FastAPI implementation in Python2 + Django without pydantic + +# Why do you make this? Can't you just use FastAPI directly? +I'm a big fan of [FastAPI](https://fastapi.tiangolo.com/). It's elegant and saves lots of doc maintaince & API spec communication costs for me. + +But FastAPI needs Python3 to run, some legacy projects I maintained are still using Python2 and built by Django framework. It would take 2 migration steps (Python 2 to 3 and Django to FastAPI) for moving them onto FastAPI framework. + +So I decided to build a minimal FastAPI implementation in Python2 + Django, that I could instantly get the benefits from FastAPI without too many migrations on my legacy projects. + +# Who should use this? +People who like the way FastAPI works but +* Are still on the long migration process from Python2 to Python3 +* Or don't want to do full system rewrite from Django to FastAPI +* Or don't want to upgrade from Python2 to Python3 + +# Features +* Auto OpenAPI schema/document generation from Python function parameter +* Auto HTTP request parameter validation from Python function parameters +* Python 2/3 compatiable, you could use almost the same code for you Python2/3 projects + +# Installation + +``` +pip install django-openapi +``` + +# Live demo provided by Gitpod + +Click the button below and launch a free live demo server via Gitpod + +[](https://gitpod.io/#https://github.com/tokikanno/django-openapi) + +If the button doesn't show up, you clould also use below link directly + +[https://gitpod.io/#https://github.com/tokikanno/django-openapi](https://gitpod.io/#https://github.com/tokikanno/django-openapi) + +After Gitpod launched, if you see a dialog like this, just hit the `Open Browser` button then you will get to the quick intro live demo server. + + + +Use ctrl + p (or cmd + p if u're using MacOS X) and search for `intro.py` to see the source code of intro demo server. + +# Quick start + +### In your Django project + +* Import `OpenAPI` from `django_openapi` +* Create an API object instance +* Add API object into urlpatterns + +```python +# import OpenAPI from django_opeanapi +from django_openapi import OpenAPI + +# create an API object instance +api = OpenAPI(title='My OpenAPI Test', prefix_path='/test_api') + +urlpatterns = [ + api.as_django_url_pattern() # Add API object into urlpatterns +] +``` + +* Start you django debug server and open your browser with url like `http://localhost:8000/test_api/_docs`, this is the auto document page. +* Now let's try adding some basic routes for you API + +```python +from django_openapi import Path, Query, Form + +@api.get('/test/hello_via_path/{word}', tags=['test']) +def hello_via_path(word=Path()): + return {'hello': word} + + +@api.get('/test/hello_via_query', tags=['test']) +def hello_via_query(word=Query()): + return {'hello': word} + + +@api.post('/test/hello_via_form', tags=['test']) +def hello_via_form(word=Form()): + return {'hello': word} +``` +* Reload your browser & see if anything changed to the auto document page +* Advanced routes via JSON body & JSON schema object + +```python +from django_openapi import Body +from django_openapi.schema import BaseModel, StringField + +class HelloPayload(BaseModel): + word = StringField(default_value='world', min_length=3) + +@api.post('/test/hello_via_json_body', tags=['test']) +def hello_via_json_body(payload=Body(HelloPayload)): + return {'hello': payload.word} +``` + +* Reload agagin, the auto document page now should have 4 APIs on it. + + + +Browse to the [demo folder](https://github.com/tokikanno/django-openapi/tree/master/demo) for more advanced samples. + +# TODO + +* More documents and samples +* Better schema validation error message handling +* More advanced field types (e.g.: EmailStringField, CommaSeparatedArrayField ...) + + + + +%prep +%autosetup -n django-openapi-0.1.1.11 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-django-openapi -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.1.1.11-1 +- Package Spec generated @@ -0,0 +1 @@ +50f4983014b3ee30bb97ba39af280624 django-openapi-0.1.1.11.tar.gz |