Compare commits

...

11 Commits

Author SHA1 Message Date
Cristi Vîjdea eed8a8d3ec Add 1.15.1 changelog 2019-06-13 03:23:25 +03:00
Cristi Vîjdea d04f27f40f Add test for serializer field label
Closes #353.
2019-06-13 03:15:24 +03:00
Cristi Vîjdea db154d196a Drop Python 3.4 support 2019-06-13 02:37:04 +03:00
Cristi Vîjdea 60e1346150 Refactor setup.py python_requires 2019-06-13 02:36:43 +03:00
Cristi Vîjdea 69b628a7af Fix python 3.7 typing
Closes #371
2019-06-13 02:26:36 +03:00
Cristi Vîjdea 64d9d42aa9 Remove pygments test dependency 2019-06-13 01:54:22 +03:00
Cristi Vîjdea e9d5344de3 Update swagger-ui to 3.22.3 and ReDoc to 2.0.0-rc.8-1 2019-06-13 01:28:31 +03:00
elliott-omosheye b5aba7243d Fix unicode attribute error if typing installed on py2.7 (#363) 2019-06-13 00:51:47 +03:00
Terence Honles 91ef83e830 update reference.yaml based on pygments lexers & styles changes (#364)
Snippet model in testproj/snippets/models.py has field choices which depend
on ``pygments.lexers`` and ``pygments.styles``
2019-06-13 00:51:23 +03:00
raksa 0991c806c7 Fixed typo (#361) 2019-05-16 00:10:12 +03:00
johnthagen 59e86ff72f Support Django 2.2 (#346) 2019-04-05 23:32:33 +03:00
23 changed files with 332 additions and 732 deletions
+1
View File
@@ -3,6 +3,7 @@ testproj/db.sqlite3
testproj/staticfiles testproj/staticfiles
\.pytest_cache/ \.pytest_cache/
docs/\.doctrees/ docs/\.doctrees/
pip-wheel-metadata/
# Created by .ignore support plugin (hsz.mobi) # Created by .ignore support plugin (hsz.mobi)
### Python template ### Python template
+1
View File
@@ -19,6 +19,7 @@
<excludeFolder url="file://$MODULE_DIR$/.cache" /> <excludeFolder url="file://$MODULE_DIR$/.cache" />
<excludeFolder url="file://$MODULE_DIR$/.eggs" /> <excludeFolder url="file://$MODULE_DIR$/.eggs" />
<excludeFolder url="file://$MODULE_DIR$/.pytest_cache" /> <excludeFolder url="file://$MODULE_DIR$/.pytest_cache" />
<excludeFolder url="file://$MODULE_DIR$/.tox" />
<excludeFolder url="file://$MODULE_DIR$/build" /> <excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/dist" /> <excludeFolder url="file://$MODULE_DIR$/dist" />
<excludeFolder url="file://$MODULE_DIR$/docs/.doctrees" /> <excludeFolder url="file://$MODULE_DIR$/docs/.doctrees" />
-1
View File
@@ -1,7 +1,6 @@
language: python language: python
python: python:
- '2.7' - '2.7'
- '3.4'
- '3.5' - '3.5'
- '3.6' - '3.6'
- '3.7' - '3.7'
+1 -1
View File
@@ -95,7 +95,7 @@ You want to contribute some code? Great! Here are a few steps to get you started
#. **Your code must pass all the required travis jobs before it is merged** #. **Your code must pass all the required travis jobs before it is merged**
As of now, this consists of running on Python 2.7, 3.4, 3.5 and 3.6, and building the docs succesfully. As of now, this consists of running on Python 2.7, 3.5, 3.6 and 3.7, and building the docs succesfully.
****************** ******************
Maintainer's notes Maintainer's notes
+2 -2
View File
@@ -14,8 +14,8 @@ Generate **real** Swagger/OpenAPI 2.0 specifications from a Django Rest Framewor
Compatible with Compatible with
- **Django Rest Framework**: 3.7.7, 3.8, 3.9 - **Django Rest Framework**: 3.7.7, 3.8, 3.9
- **Django**: 1.11, 2.0, 2.1 - **Django**: 1.11, 2.0, 2.1, 2.2
- **Python**: 2.7, 3.4, 3.5, 3.6, 3.7 - **Python**: 2.7, 3.5, 3.6, 3.7
Only the latest patch version of each ``major.minor`` series of Python, Django and Django REST Framework is supported. Only the latest patch version of each ``major.minor`` series of Python, Django and Django REST Framework is supported.
+13
View File
@@ -2,6 +2,19 @@
Changelog Changelog
######### #########
**********
**1.15.1**
**********
*Release date: Jun 13, 2019*
- **IMPROVED:** updated ``swagger-ui`` to version 3.22.3
- **IMPROVED:** updated ``ReDoc`` to version 2.0.0-rc.8-1
- **FIXED:** fixed an issue with inspection of typing hints on Python 2.7 (:issue:`363`)
- **FIXED:** fixed an issue with inspection of typing hints on Python 3.7 (:issue:`371`)
**Python 3.4 support has been dropped!**
********** **********
**1.15.0** **1.15.0**
+2 -2
View File
@@ -340,7 +340,7 @@ values for Parameters.
OAUTH2_REDIRECT_URL OAUTH2_REDIRECT_URL
------------------- -------------------
Used when OAuth2 authenitcation of API requests via swagger-ui is desired. If ``None`` is passed, the Used when OAuth2 authentication of API requests via swagger-ui is desired. If ``None`` is passed, the
``oauth2RedirectUrl`` parameter will be set to ``{% static 'drf-yasg/swagger-ui-dist/oauth2-redirect.html' %}``. This ``oauth2RedirectUrl`` parameter will be set to ``{% static 'drf-yasg/swagger-ui-dist/oauth2-redirect.html' %}``. This
is the default `https://github.com/swagger-api/swagger-ui/blob/master/dist/oauth2-redirect.html <oauth2-redirect>`_ is the default `https://github.com/swagger-api/swagger-ui/blob/master/dist/oauth2-redirect.html <oauth2-redirect>`_
file provided by ``swagger-ui``. file provided by ``swagger-ui``.
@@ -351,7 +351,7 @@ file provided by ``swagger-ui``.
OAUTH2_CONFIG OAUTH2_CONFIG
------------- -------------
Used when OAuth2 authenitcation of API requests via swagger-ui is desired. Provides OAuth2 configuration parameters Used when OAuth2 authentication of API requests via swagger-ui is desired. Provides OAuth2 configuration parameters
to the ``SwaggerUIBundle#initOAuth`` method, and must be a dictionary. See to the ``SwaggerUIBundle#initOAuth`` method, and must be a dictionary. See
`OAuth2 configuration <https://github.com/swagger-api/swagger-ui/blob/master/docs/usage/oauth2.md>`_. `OAuth2 configuration <https://github.com/swagger-api/swagger-ui/blob/master/docs/usage/oauth2.md>`_.
+203 -203
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -1,8 +1,8 @@
{ {
"name": "drf-yasg", "name": "drf-yasg",
"dependencies": { "dependencies": {
"redoc": "^2.0.0-rc.4", "redoc": "^2.0.0-rc.8-1",
"swagger-ui-dist": "^3.22.0" "swagger-ui-dist": "^3.22.3"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
+1 -2
View File
@@ -1,9 +1,8 @@
# test project requirements # test project requirements
Pillow>=4.3.0 Pillow>=4.3.0
pygments>=2.2.0
django-cors-headers>=2.1.0 django-cors-headers>=2.1.0
django-filter>=1.1.0,<2.0; python_version == "2.7" django-filter>=1.1.0,<2.0; python_version == "2.7"
django-filter>=1.1.0; python_version >= "3.4" django-filter>=1.1.0; python_version >= "3.5"
djangorestframework-camel-case>=0.2.0 djangorestframework-camel-case>=0.2.0
djangorestframework-recursive>=0.1.2 djangorestframework-recursive>=0.1.2
dj-database-url>=0.4.2 dj-database-url>=0.4.2
+15 -10
View File
@@ -19,6 +19,18 @@ with io.open('README.rst', encoding='utf-8') as readme:
requirements = read_req('base.txt') requirements = read_req('base.txt')
requirements_validation = read_req('validation.txt') requirements_validation = read_req('validation.txt')
py3_supported_range = (5, 7)
# convert inclusive range to exclusive range
py3_supported_range = (py3_supported_range[0], py3_supported_range[1] + 1)
python_requires = ", ".join([">=2.7"] + ["!=3.{}.*".format(v) for v in range(0, py3_supported_range[0])])
python_classifiers = [
'Programming Language :: Python',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
] + ['Programming Language :: Python :: 3.{}'.format(v) for v in range(*py3_supported_range)]
def drf_yasg_setup(**kwargs): def drf_yasg_setup(**kwargs):
setup( setup(
@@ -38,28 +50,21 @@ def drf_yasg_setup(**kwargs):
author_email='cristi@cvjd.me', author_email='cristi@cvjd.me',
keywords='drf django django-rest-framework schema swagger openapi codegen swagger-codegen ' keywords='drf django django-rest-framework schema swagger openapi codegen swagger-codegen '
'documentation drf-yasg django-rest-swagger drf-openapi', 'documentation drf-yasg django-rest-swagger drf-openapi',
python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", python_requires=python_requires,
classifiers=[ classifiers=[
'Intended Audience :: Developers', 'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License', 'License :: OSI Approved :: BSD License',
'Development Status :: 5 - Production/Stable', 'Development Status :: 5 - Production/Stable',
'Operating System :: OS Independent', 'Operating System :: OS Independent',
'Environment :: Web Environment', 'Environment :: Web Environment',
'Programming Language :: Python',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Framework :: Django', 'Framework :: Django',
'Framework :: Django :: 1.11', 'Framework :: Django :: 1.11',
'Framework :: Django :: 2.0', 'Framework :: Django :: 2.0',
'Framework :: Django :: 2.1', 'Framework :: Django :: 2.1',
'Framework :: Django :: 2.2',
'Topic :: Documentation', 'Topic :: Documentation',
'Topic :: Software Development :: Code Generators', 'Topic :: Software Development :: Code Generators',
], ] + python_classifiers,
**kwargs **kwargs
) )
+9 -3
View File
@@ -2,6 +2,7 @@ import datetime
import inspect import inspect
import logging import logging
import operator import operator
import sys
import uuid import uuid
from collections import OrderedDict from collections import OrderedDict
from decimal import Decimal from decimal import Decimal
@@ -489,6 +490,10 @@ hinting_type_info = [
(datetime.date, (openapi.TYPE_STRING, openapi.FORMAT_DATE)), (datetime.date, (openapi.TYPE_STRING, openapi.FORMAT_DATE)),
] ]
if sys.version_info < (3, 0):
# noinspection PyUnresolvedReferences
hinting_type_info.append((unicode, (openapi.TYPE_STRING, None))) # noqa: F821
if typing: if typing:
def inspect_collection_hint_class(hint_class): def inspect_collection_hint_class(hint_class):
args = hint_class.__args__ args = hint_class.__args__
@@ -527,11 +532,14 @@ def get_basic_type_info_from_hint(hint_class):
:rtype: OrderedDict :rtype: OrderedDict
""" """
union_types = _get_union_types(hint_class) union_types = _get_union_types(hint_class)
if typing and union_types: if typing and union_types:
# Optional is implemented as Union[T, None] # Optional is implemented as Union[T, None]
if len(union_types) == 2 and isinstance(None, union_types[1]): if len(union_types) == 2 and isinstance(None, union_types[1]):
result = get_basic_type_info_from_hint(union_types[0]) result = get_basic_type_info_from_hint(union_types[0])
if result:
result['x-nullable'] = True result['x-nullable'] = True
return result return result
return None return None
@@ -602,9 +610,7 @@ class SerializerMethodFieldInspector(FieldInspector):
# look for Python 3.5+ style type hinting of the return value # look for Python 3.5+ style type hinting of the return value
hint_class = inspect_signature(method).return_annotation hint_class = inspect_signature(method).return_annotation
if not inspect.isclass(hint_class) and hasattr(hint_class, '__args__'): if not issubclass(hint_class, inspect._empty):
hint_class = hint_class.__args__[0]
if inspect.isclass(hint_class) and not issubclass(hint_class, inspect._empty):
type_info = get_basic_type_info_from_hint(hint_class) type_info = get_basic_type_info_from_hint(hint_class)
if type_info is not None: if type_info is not None:
+1 -1
View File
@@ -9,7 +9,7 @@ from .. import openapi
from ..errors import SwaggerGenerationError from ..errors import SwaggerGenerationError
from ..utils import ( from ..utils import (
filter_none, force_real_str, force_serializer_instance, get_consumes, get_produces, guess_response_status, filter_none, force_real_str, force_serializer_instance, get_consumes, get_produces, guess_response_status,
is_list_view, merge_params, no_body, param_list_to_odict merge_params, no_body, param_list_to_odict
) )
from .base import ViewInspector, call_view_method from .base import ViewInspector, call_view_method
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,23 @@
# Generated by Django 2.2.2 on 2019-06-12 22:54
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('snippets', '0003_snippetviewer'),
]
operations = [
migrations.AlterField(
model_name='snippet',
name='language',
field=models.CharField(choices=[('cpp', 'cpp'), ('js', 'js'), ('python', 'python')], default='python', max_length=100),
),
migrations.AlterField(
model_name='snippet',
name='style',
field=models.CharField(choices=[('monokai', 'monokai'), ('solarized-dark', 'solarized-dark'), ('vim', 'vim')], default='solarized-dark', max_length=100),
),
]
+3 -6
View File
@@ -1,10 +1,7 @@
from django.db import models from django.db import models
from pygments.lexers import get_all_lexers
from pygments.styles import get_all_styles
LEXERS = [item for item in get_all_lexers() if item[1]] LANGUAGE_CHOICES = sorted((item, item) for item in ('cpp', 'python', 'js'))
LANGUAGE_CHOICES = sorted([(item[1][0], item[0]) for item in LEXERS]) STYLE_CHOICES = sorted((item, item) for item in ('solarized-dark', 'monokai', 'vim'))
STYLE_CHOICES = sorted((item, item) for item in get_all_styles())
class Snippet(models.Model): class Snippet(models.Model):
@@ -14,7 +11,7 @@ class Snippet(models.Model):
code = models.TextField(help_text="code model help text") code = models.TextField(help_text="code model help text")
linenos = models.BooleanField(default=False) linenos = models.BooleanField(default=False)
language = models.CharField(choices=LANGUAGE_CHOICES, default='python', max_length=100) language = models.CharField(choices=LANGUAGE_CHOICES, default='python', max_length=100)
style = models.CharField(choices=STYLE_CHOICES, default='friendly', max_length=100) style = models.CharField(choices=STYLE_CHOICES, default='solarized-dark', max_length=100)
class Meta: class Meta:
ordering = ('created',) ordering = ('created',)
+2 -2
View File
@@ -17,7 +17,7 @@ class LanguageSerializer(serializers.Serializer):
class ExampleProjectSerializer(serializers.Serializer): class ExampleProjectSerializer(serializers.Serializer):
project_name = serializers.CharField(help_text='Name of the project') project_name = serializers.CharField(label='project name custom title', help_text='Name of the project')
github_repo = serializers.CharField(required=True, help_text='Github repository of the project') github_repo = serializers.CharField(required=True, help_text='Github repository of the project')
class Meta: class Meta:
@@ -69,7 +69,7 @@ class SnippetSerializer(serializers.Serializer):
tags = serializers.ListField(child=serializers.CharField(min_length=2), min_length=3, max_length=15) tags = serializers.ListField(child=serializers.CharField(min_length=2), min_length=3, max_length=15)
linenos = serializers.BooleanField(required=False) linenos = serializers.BooleanField(required=False)
language = LanguageSerializer(help_text="Sample help text for language") language = LanguageSerializer(help_text="Sample help text for language")
styles = serializers.MultipleChoiceField(choices=STYLE_CHOICES, default=['friendly']) styles = serializers.MultipleChoiceField(choices=STYLE_CHOICES, default=['solarized-dark'])
lines = serializers.ListField(child=serializers.IntegerField(), allow_empty=True, allow_null=True, required=False) lines = serializers.ListField(child=serializers.IntegerField(), allow_empty=True, allow_null=True, required=False)
example_projects = serializers.ListSerializer(child=ExampleProjectSerializer(), read_only=True, example_projects = serializers.ListSerializer(child=ExampleProjectSerializer(), read_only=True,
validators=[MaxLengthValidator(100)]) validators=[MaxLengthValidator(100)])
+5
View File
@@ -1,3 +1,5 @@
import sys
from django.contrib.auth.models import User from django.contrib.auth.models import User
from rest_framework import serializers from rest_framework import serializers
@@ -6,7 +8,10 @@ from snippets.models import Snippet
try: try:
import typing # noqa: F401 import typing # noqa: F401
if sys.version_info >= (3, 4):
from .method_serializers_with_typing import MethodFieldExampleSerializer from .method_serializers_with_typing import MethodFieldExampleSerializer
else:
from .method_serializers_without_typing import MethodFieldExampleSerializer
except ImportError: except ImportError:
from .method_serializers_without_typing import MethodFieldExampleSerializer from .method_serializers_without_typing import MethodFieldExampleSerializer
+3 -463
View File
@@ -1110,7 +1110,7 @@ definitions:
type: object type: object
properties: properties:
projectName: projectName:
title: Project name title: project name custom title
description: Name of the project description: Name of the project
type: string type: string
minLength: 1 minLength: 1
@@ -1176,443 +1176,9 @@ definitions:
description: The name of the programming language description: The name of the programming language
type: string type: string
enum: enum:
- abap
- abnf
- ada
- adl
- agda
- aheui
- ahk
- alloy
- ampl
- antlr
- antlr-as
- antlr-cpp
- antlr-csharp
- antlr-java
- antlr-objc
- antlr-perl
- antlr-python
- antlr-ruby
- apacheconf
- apl
- applescript
- arduino
- as
- as3
- aspectj
- aspx-cs
- aspx-vb
- asy
- at
- autoit
- awk
- basemake
- bash
- bat
- bbcode
- bc
- befunge
- bib
- blitzbasic
- blitzmax
- bnf
- boo
- boogie
- brainfuck
- bro
- bst
- bugs
- c
- c-objdump
- ca65
- cadl
- camkes
- capdl
- capnp
- cbmbas
- ceylon
- cfc
- cfengine3
- cfm
- cfs
- chai
- chapel
- cheetah
- cirru
- clay
- clean
- clojure
- clojurescript
- cmake
- cobol
- cobolfree
- coffee-script
- common-lisp
- componentpascal
- console
- control
- coq
- cpp - cpp
- cpp-objdump
- cpsa
- cr
- crmsh
- croc
- cryptol
- csharp
- csound
- csound-document
- csound-score
- css
- css+django
- css+erb
- css+genshitext
- css+lasso
- css+mako
- css+mozpreproc
- css+myghty
- css+php
- css+smarty
- cucumber
- cuda
- cypher
- cython
- d
- d-objdump
- dart
- delphi
- dg
- diff
- django
- docker
- doscon
- dpatch
- dtd
- duel
- dylan
- dylan-console
- dylan-lid
- earl-grey
- easytrieve
- ebnf
- ec
- ecl
- eiffel
- elixir
- elm
- emacs
- erb
- erl
- erlang
- evoque
- extempore
- ezhil
- factor
- fan
- fancy
- felix
- fennel
- fish
- flatline
- forth
- fortran
- fortranfixed
- foxpro
- fsharp
- gap
- gas
- genshi
- genshitext
- glsl
- gnuplot
- go
- golo
- gooddata-cl
- gosu
- groff
- groovy
- gst
- haml
- handlebars
- haskell
- haxeml
- hexdump
- hlsl
- hsail
- html
- html+cheetah
- html+django
- html+evoque
- html+genshi
- html+handlebars
- html+lasso
- html+mako
- html+myghty
- html+ng2
- html+php
- html+smarty
- html+twig
- html+velocity
- http
- hx
- hybris
- hylang
- i6t
- idl
- idris
- iex
- igor
- inform6
- inform7
- ini
- io
- ioke
- irc
- isabelle
- j
- jags
- jasmin
- java
- javascript+mozpreproc
- jcl
- jlcon
- js - js
- js+cheetah
- js+django
- js+erb
- js+genshitext
- js+lasso
- js+mako
- js+myghty
- js+php
- js+smarty
- jsgf
- json
- json-object
- jsonld
- jsp
- julia
- juttle
- kal
- kconfig
- koka
- kotlin
- lagda
- lasso
- lcry
- lean
- less
- lhs
- lidr
- lighty
- limbo
- liquid
- live-script
- llvm
- logos
- logtalk
- lsl
- lua
- make
- mako
- maql
- mask
- mason
- mathematica
- matlab
- matlabsession
- md
- minid
- modelica
- modula2
- monkey
- monte
- moocode
- moon
- mozhashpreproc
- mozpercentpreproc
- mql
- mscgen
- mupad
- mxml
- myghty
- mysql
- nasm
- ncl
- nemerle
- nesc
- newlisp
- newspeak
- ng2
- nginx
- nim
- nit
- nixos
- nsis
- numpy
- nusmv
- objdump
- objdump-nasm
- objective-c
- objective-c++
- objective-j
- ocaml
- octave
- odin
- ooc
- opa
- openedge
- pacmanconf
- pan
- parasail
- pawn
- perl
- perl6
- php
- pig
- pike
- pkgconfig
- plpgsql
- postgresql
- postscript
- pot
- pov
- powershell
- praat
- prolog
- properties
- protobuf
- ps1con
- psql
- pug
- puppet
- py3tb
- pycon
- pypylog
- pytb
- python - python
- python3
- qbasic
- qml
- qvto
- racket
- ragel
- ragel-c
- ragel-cpp
- ragel-d
- ragel-em
- ragel-java
- ragel-objc
- ragel-ruby
- raw
- rb
- rbcon
- rconsole
- rd
- rebol
- red
- redcode
- registry
- resource
- rexx
- rhtml
- rnc
- roboconf-graph
- roboconf-instances
- robotframework
- rql
- rsl
- rst
- rts
- rust
- sas
- sass
- sc
- scala
- scaml
- scheme
- scilab
- scss
- shen
- silver
- slim
- smali
- smalltalk
- smarty
- sml
- snobol
- snowball
- sourceslist
- sp
- sparql
- spec
- splus
- sql
- sqlite3
- squidconf
- ssp
- stan
- stata
- swift
- swig
- systemverilog
- tads3
- tap
- tasm
- tcl
- tcsh
- tcshcon
- tea
- termcap
- terminfo
- terraform
- tex
- text
- thrift
- todotxt
- trac-wiki
- treetop
- ts
- tsql
- turtle
- twig
- typoscript
- typoscriptcssdata
- typoscripthtmldata
- urbiscript
- vala
- vb.net
- vcl
- vclsnippets
- vctreestatus
- velocity
- verilog
- vgl
- vhdl
- vim
- wdiff
- whiley
- x10
- xml
- xml+cheetah
- xml+django
- xml+erb
- xml+evoque
- xml+lasso
- xml+mako
- xml+myghty
- xml+php
- xml+smarty
- xml+velocity
- xorg.conf
- xquery
- xslt
- xtend
- xul+mozpreproc
- yaml
- yaml+jinja
- zephir
default: python default: python
readOnlyNullable: readOnlyNullable:
title: Read only nullable title: Read only nullable
@@ -1625,37 +1191,11 @@ definitions:
items: items:
type: string type: string
enum: enum:
- abap
- algol
- algol_nu
- arduino
- autumn
- borland
- bw
- colorful
- default
- emacs
- friendly
- fruity
- igor
- lovelace
- manni
- monokai - monokai
- murphy - solarized-dark
- native
- paraiso-dark
- paraiso-light
- pastie
- perldoc
- rainbow_dash
- rrt
- tango
- trac
- vim - vim
- vs
- xcode
default: default:
- friendly - solarized-dark
lines: lines:
type: array type: array
items: items:
+1
View File
@@ -204,6 +204,7 @@ def test_action_mapping():
@pytest.mark.parametrize('choices, expected_type', [ @pytest.mark.parametrize('choices, expected_type', [
(['A', 'B'], openapi.TYPE_STRING), (['A', 'B'], openapi.TYPE_STRING),
([u'A', u'B'], openapi.TYPE_STRING),
([123, 456], openapi.TYPE_INTEGER), ([123, 456], openapi.TYPE_INTEGER),
([1.2, 3.4], openapi.TYPE_NUMBER), ([1.2, 3.4], openapi.TYPE_NUMBER),
(['A', 456], openapi.TYPE_STRING) (['A', 456], openapi.TYPE_STRING)
+7 -4
View File
@@ -5,9 +5,9 @@ isolated_build_env = .package
# https://docs.djangoproject.com/en/dev/faq/install/#what-python-version-can-i-use-with-django # https://docs.djangoproject.com/en/dev/faq/install/#what-python-version-can-i-use-with-django
envlist = envlist =
py{27,34,35,36}-django111-drf{37,38,39}, py27-django111-drf39-typing,
py{34,35,36,37}-django20-drf{37,38,39}, py{27,35,36}-django111-drf{37,38,39},
py{35,36,37}-django21-drf{37,38,39}, py{35,36,37}-django{20,21,22}-drf{37,38,39},
djmaster, lint, docs djmaster, lint, docs
[testenv:.package] [testenv:.package]
@@ -19,11 +19,14 @@ deps =
django111: Django>=1.11,<2.0 django111: Django>=1.11,<2.0
django20: Django>=2.0,<2.1 django20: Django>=2.0,<2.1
django21: Django>=2.1,<2.2 django21: Django>=2.1,<2.2
django22: Django>=2.2,<2.3
drf37: djangorestframework>=3.7.7,<3.8 drf37: djangorestframework>=3.7.7,<3.8
drf38: djangorestframework>=3.8.0,<3.9 drf38: djangorestframework>=3.8.0,<3.9
drf39: djangorestframework>=3.9,<3.10 drf39: djangorestframework>=3.9,<3.10
typing: typing>=3.6.6
# test with the latest build of django-rest-framework to get early warning of compatibility issues # test with the latest build of django-rest-framework to get early warning of compatibility issues
djmaster: https://github.com/encode/django-rest-framework/archive/master.tar.gz djmaster: https://github.com/encode/django-rest-framework/archive/master.tar.gz
djmaster: https://github.com/django/django/archive/master.tar.gz djmaster: https://github.com/django/django/archive/master.tar.gz
@@ -72,6 +75,6 @@ known_standard_library =
types,warnings types,warnings
known_third_party = known_third_party =
coreapi,coreschema,datadiff,dj_database_url,django,django_filters,djangorestframework_camel_case, coreapi,coreschema,datadiff,dj_database_url,django,django_filters,djangorestframework_camel_case,
rest_framework_recursive,flex,gunicorn,inflection,pygments,pytest,rest_framework,ruamel,setuptools_scm, rest_framework_recursive,flex,gunicorn,inflection,pytest,rest_framework,ruamel,setuptools_scm,
swagger_spec_validator,uritemplate,user_agents,whitenoise,oauth2_provider swagger_spec_validator,uritemplate,user_agents,whitenoise,oauth2_provider
known_first_party = drf_yasg,testproj,articles,people,snippets,todo,users,urlconfs known_first_party = drf_yasg,testproj,articles,people,snippets,todo,users,urlconfs