Skip to content

Commit e7f3219

Browse files
committed
Adjust imports
1 parent 18575c9 commit e7f3219

File tree

7 files changed

+41
-37
lines changed

7 files changed

+41
-37
lines changed

rest_framework/routers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
from rest_framework.compat import NoReverseMatch
2727
from rest_framework.response import Response
2828
from rest_framework.reverse import reverse
29-
from rest_framework.schemas import SchemaGenerator, SchemaView
29+
from rest_framework.schemas import SchemaGenerator
30+
from rest_framework.schemas.views import SchemaView
3031
from rest_framework.settings import api_settings
3132
from rest_framework.urlpatterns import format_suffix_patterns
3233

rest_framework/schemas/__init__.py

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
1-
# The API we expose
2-
# from .views import get_schema_view
1+
from .generators import SchemaGenerator
2+
from .inspectors import AutoSchema, ManualSchema # noqa
33

44

5-
# Shared function. TODO: move to utils.
6-
def is_list_view(path, method, view):
5+
def get_schema_view(
6+
title=None, url=None, description=None, urlconf=None, renderer_classes=None,
7+
public=False, patterns=None, generator_class=SchemaGenerator):
78
"""
8-
Return True if the given path/method appears to represent a list view.
9+
Return a schema view.
910
"""
10-
if hasattr(view, 'action'):
11-
# Viewsets have an explicitly defined action, which we can inspect.
12-
return view.action == 'list'
13-
14-
if method.lower() != 'get':
15-
return False
16-
path_components = path.strip('/').split('/')
17-
if path_components and '{' in path_components[-1]:
18-
return False
19-
return True
11+
# Avoid import cycle on APIView
12+
from .views import SchemaView
13+
generator = generator_class(
14+
title=title, url=url, description=description,
15+
urlconf=urlconf, patterns=patterns,
16+
)
17+
return SchemaView.as_view(
18+
renderer_classes=renderer_classes,
19+
schema_generator=generator,
20+
public=public,
21+
)

rest_framework/schemas/generators.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,8 @@
1414
from rest_framework.request import clone_request
1515
from rest_framework.settings import api_settings
1616
from rest_framework.utils.model_meta import _get_pk
17-
from rest_framework.views import APIView
1817

19-
from . import is_list_view
18+
from .utils import is_list_view
2019

2120

2221
def common_path(paths):
@@ -40,6 +39,8 @@ def is_api_view(callback):
4039
"""
4140
Return `True` if the given view callback is a REST framework view/viewset.
4241
"""
42+
# Avoid import cycle on APIView
43+
from rest_framework.views import APIView
4344
cls = getattr(callback, 'cls', None)
4445
return (cls is not None) and issubclass(cls, APIView)
4546

rest_framework/schemas/inspectors.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from rest_framework.settings import api_settings
1111
from rest_framework.utils import formatting
1212

13-
from . import is_list_view
13+
from .utils import is_list_view
1414

1515
header_regex = re.compile('^[a-zA-Z][0-9A-Za-z_]*:')
1616

rest_framework/schemas/utils.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
2+
3+
def is_list_view(path, method, view):
4+
"""
5+
Return True if the given path/method appears to represent a list view.
6+
"""
7+
if hasattr(view, 'action'):
8+
# Viewsets have an explicitly defined action, which we can inspect.
9+
return view.action == 'list'
10+
11+
if method.lower() != 'get':
12+
return False
13+
path_components = path.strip('/').split('/')
14+
if path_components and '{' in path_components[-1]:
15+
return False
16+
return True

rest_framework/schemas/views.py

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from rest_framework import exceptions, renderers
22
from rest_framework.response import Response
3-
from rest_framework.schemas.generators import SchemaGenerator
43
from rest_framework.settings import api_settings
54
from rest_framework.views import APIView
65

@@ -28,20 +27,3 @@ def get(self, request, *args, **kwargs):
2827
if schema is None:
2928
raise exceptions.PermissionDenied()
3029
return Response(schema)
31-
32-
33-
def get_schema_view(
34-
title=None, url=None, description=None, urlconf=None, renderer_classes=None,
35-
public=False, patterns=None, generator_class=SchemaGenerator):
36-
"""
37-
Return a schema view.
38-
"""
39-
generator = generator_class(
40-
title=title, url=url, description=description,
41-
urlconf=urlconf, patterns=patterns,
42-
)
43-
return SchemaView.as_view(
44-
renderer_classes=renderer_classes,
45-
schema_generator=generator,
46-
public=public,
47-
)

rest_framework/views.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from rest_framework.compat import set_rollback
2020
from rest_framework.request import Request
2121
from rest_framework.response import Response
22+
from rest_framework.schemas import AutoSchema
2223
from rest_framework.settings import api_settings
2324
from rest_framework.utils import formatting
2425

@@ -113,6 +114,7 @@ class APIView(View):
113114

114115
# Mark the view as being included or excluded from schema generation.
115116
exclude_from_schema = False
117+
schema = AutoSchema()
116118

117119
@classmethod
118120
def as_view(cls, **initkwargs):

0 commit comments

Comments
 (0)