Clean up for publish to pypi

openapi3
Cristi Vîjdea 2017-12-12 22:56:35 +01:00
parent 8883894775
commit 71b3fd2895
7 changed files with 56 additions and 26 deletions

View File

@ -54,6 +54,7 @@
</option> </option>
</inspection_tool> </inspection_tool>
<inspection_tool class="PyShadowingNamesInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> <inspection_tool class="PyShadowingNamesInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PyUnusedLocalInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false"> <inspection_tool class="PyUnusedLocalInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false">
<option name="ignoreTupleUnpacking" value="true" /> <option name="ignoreTupleUnpacking" value="true" />
<option name="ignoreLambdaParameters" value="true" /> <option name="ignoreLambdaParameters" value="true" />

View File

@ -14,7 +14,8 @@ Compatible with
- **Django**: 1.11, 2.0 - **Django**: 1.11, 2.0
- **Python**: 2.7, 3.4, 3.5, 3.6 - **Python**: 2.7, 3.4, 3.5, 3.6
**Source**: https://github.com/axnsan12/drf-swagger/ |br| **Source**: https://github.com/axnsan12/drf-swagger/
**Documentation**: https://drf-swagger.readthedocs.io/en/latest/ **Documentation**: https://drf-swagger.readthedocs.io/en/latest/
******** ********
@ -34,22 +35,21 @@ Features
`swagger-spec-validator <https://github.com/Yelp/swagger_spec_validator>`__ or `swagger-spec-validator <https://github.com/Yelp/swagger_spec_validator>`__ or
`flex <https://github.com/pipermerriam/flex>`__ `flex <https://github.com/pipermerriam/flex>`__
.. figure:: https://raw.githubusercontent.com/axnsan12/drf-swagger/1.0.1/screenshots/redoc-nested-response.png
.. figure:: https://raw.githubusercontent.com/axnsan12/drf-swagger/docs/screenshots/redoc-nested-response.png
:width: 100% :width: 100%
:figwidth: image :figwidth: image
:alt: redoc screenshot :alt: redoc screenshot
**Fully nested request and response schemas.** **Fully nested request and response schemas.**
.. figure:: https://raw.githubusercontent.com/axnsan12/drf-swagger/docs/screenshots/swagger-ui-list.png .. figure:: https://raw.githubusercontent.com/axnsan12/drf-swagger/1.0.1/screenshots/swagger-ui-list.png
:width: 100% :width: 100%
:figwidth: image :figwidth: image
:alt: swagger-ui screenshot :alt: swagger-ui screenshot
**Choose between redoc and swagger-ui.** **Choose between redoc and swagger-ui.**
.. figure:: https://raw.githubusercontent.com/axnsan12/drf-swagger/docs/screenshots/swagger-ui-models.png .. figure:: https://raw.githubusercontent.com/axnsan12/drf-swagger/1.0.1/screenshots/swagger-ui-models.png
:width: 100% :width: 100%
:figwidth: image :figwidth: image
:alt: model definitions screenshot :alt: model definitions screenshot
@ -68,15 +68,27 @@ Table of contents
Usage Usage
***** *****
.. _readme-quickstart: 0. Installation
===============
1. Quickstart The preferred instalation method is directly from pypi:
=============
.. code:: console
pip install drf-swagger
Additionally, if you want to use the built-in validation mechanisms (see `4. Validation`_), you need to install
some extra requirements:
.. code:: console .. code:: console
pip install drf-swagger[validation] pip install drf-swagger[validation]
.. _readme-quickstart:
1. Quickstart
=============
In ``settings.py``: In ``settings.py``:
.. code:: python .. code:: python
@ -222,7 +234,7 @@ it still conforms to OpenAPI 2.0. To this end, validation is provided at the gen
libraries, and can be activated by passing :python:`validators=['ssv', 'flex']` to ``get_schema_view``; if the generated libraries, and can be activated by passing :python:`validators=['ssv', 'flex']` to ``get_schema_view``; if the generated
schema is not valid, a :python:`SwaggerValidationError` is raised by the handling codec. schema is not valid, a :python:`SwaggerValidationError` is raised by the handling codec.
**Warning:** This internal validation can slow down your server. |br| **Warning:** This internal validation can slow down your server.
Caching can mitigate the speed impact of validation. Caching can mitigate the speed impact of validation.
The provided validation will catch syntactic errors, but more subtle violations of the spec might slip by them. To The provided validation will catch syntactic errors, but more subtle violations of the spec might slip by them. To
@ -258,8 +270,6 @@ If your schema is not accessible from the internet, you can run a local copy of
$ curl http://localhost:8189/debug?url=http://test.local:8002/swagger/?format=openapi $ curl http://localhost:8189/debug?url=http://test.local:8002/swagger/?format=openapi
{} {}
Using ``swagger-cli`` Using ``swagger-cli``
--------------------- ---------------------
@ -349,7 +359,3 @@ https://drf-swagger.readthedocs.io/en/latest/
.. |nbsp| unicode:: 0xA0 .. |nbsp| unicode:: 0xA0
:trim: :trim:
.. |br| raw:: html
<br />

View File

@ -7,6 +7,7 @@ import os
import sys import sys
import sphinx_rtd_theme import sphinx_rtd_theme
from pkg_resources import get_distribution
# -- General configuration ------------------------------------------------ # -- General configuration ------------------------------------------------
@ -39,11 +40,12 @@ author = 'Cristi V.'
# The version info for the project you're documenting, acts as replacement for # The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the # |version| and |release|, also used in various other places throughout the
# built documents. # built documents.
#
# The short X.Y version.
version = '1.0'
# The full version, including alpha/beta/rc tags. # The full version, including alpha/beta/rc tags.
release = '1.0.0' release = get_distribution('drf_swagger').version
# The short X.Y.Z version.
version = '.'.join(release.split('.')[:3])
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.
@ -194,11 +196,11 @@ nitpick_ignore = [
sys.path.insert(0, os.path.abspath('../testproj')) sys.path.insert(0, os.path.abspath('../testproj'))
os.putenv('DJANGO_SETTINGS_MODULE', 'testproj.settings') os.putenv('DJANGO_SETTINGS_MODULE', 'testproj.settings')
from django.conf import settings from django.conf import settings # noqa: E402
settings.configure() settings.configure()
import drf_swagger.views import drf_swagger.views # noqa: E402
# instantiate a SchemaView in the views module to make it available to autodoc # instantiate a SchemaView in the views module to make it available to autodoc
drf_swagger.views.SchemaView = drf_swagger.views.get_schema_view(None) drf_swagger.views.SchemaView = drf_swagger.views.get_schema_view(None)

View File

@ -1,3 +1,6 @@
# requirements for local development # requirements for local development
tox>=2.9.1 tox>=2.9.1
tox-battery>=0.5 tox-battery>=0.5
# do not unpin this (see setup.py)
setuptools_scm==1.15.6

View File

@ -5,6 +5,16 @@ import os
from setuptools import setup, find_packages from setuptools import setup, find_packages
try:
# see https://github.com/pypa/setuptools_scm/issues/190, setuptools_scm includes ALL versioned files from the git
# repo into the sdist by default, and there is no easy way to provide an opt-out;
# this hack is ugly but does the job; because this is not really a documented interface of the module,
# the setuptools_scm version should remain pinned to ensure it keeps working
import setuptools_scm.integration
setuptools_scm.integration.find_files = lambda _: []
except ImportError:
pass
def read_req(req_file): def read_req(req_file):
with open(os.path.join('requirements', req_file)) as req: with open(os.path.join('requirements', req_file)) as req:
@ -19,11 +29,12 @@ requirements_validation = read_req('validation.txt')
setup( setup(
name='drf-swagger', name='drf-swagger',
version='1.0.0rc1', use_scm_version=True,
packages=find_packages('src', include=['drf_swagger']), packages=find_packages('src', include=['drf_swagger']),
package_dir={'': 'src'}, package_dir={'': 'src'},
include_package_data=True, include_package_data=True,
install_requires=requirements, install_requires=requirements,
setup_requires=['setuptools_scm==1.15.6'],
extras_require={ extras_require={
'validation': requirements_validation, 'validation': requirements_validation,
}, },
@ -40,7 +51,7 @@ setup(
'License :: OSI Approved :: BSD License', 'License :: OSI Approved :: BSD License',
'Development Status :: 4 - Beta', 'Development Status :: 4 - Beta',
'Operating System :: OS Independent', 'Operating System :: OS Independent',
'Environment :: Web Environment' 'Environment :: Web Environment',
'Programming Language :: Python', 'Programming Language :: Python',
'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 2.7',

View File

@ -1,4 +1,11 @@
# coding=utf-8 # coding=utf-8
from pkg_resources import get_distribution, DistributionNotFound
__author__ = """Cristi V.""" __author__ = """Cristi V."""
__email__ = 'cristi@cvjd.me' __email__ = 'cristi@cvjd.me'
__version__ = '1.0.0rc1'
try:
__version__ = get_distribution(__name__).version
except DistributionNotFound:
# package is not installed
pass

View File

@ -178,8 +178,8 @@ class OpenAPISchemaGenerator(object):
# Attempt to infer a field description if possible. # Attempt to infer a field description if possible.
try: try:
model_field = model._meta.get_field(variable) model_field = model._meta.get_field(variable)
except Exception: except Exception: # pragma: no cover
model_field = None # pragma: no cover model_field = None
if model_field is not None and model_field.help_text: if model_field is not None and model_field.help_text:
description = force_text(model_field.help_text) description = force_text(model_field.help_text)