__init__.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. """
  2. rest_framework.schemas
  3. schemas:
  4. __init__.py
  5. generators.py # Top-down schema generation
  6. inspectors.py # Per-endpoint view introspection
  7. utils.py # Shared helper functions
  8. views.py # Houses `SchemaView`, `APIView` subclass.
  9. We expose a minimal "public" API directly from `schemas`. This covers the
  10. basic use-cases:
  11. from rest_framework.schemas import (
  12. AutoSchema,
  13. ManualSchema,
  14. get_schema_view,
  15. SchemaGenerator,
  16. )
  17. Other access should target the submodules directly
  18. """
  19. from rest_framework.settings import api_settings
  20. from . import coreapi, openapi
  21. from .coreapi import AutoSchema, ManualSchema, SchemaGenerator # noqa
  22. from .inspectors import DefaultSchema # noqa
  23. def get_schema_view(
  24. title=None, url=None, description=None, urlconf=None, renderer_classes=None,
  25. public=False, patterns=None, generator_class=None,
  26. authentication_classes=api_settings.DEFAULT_AUTHENTICATION_CLASSES,
  27. permission_classes=api_settings.DEFAULT_PERMISSION_CLASSES,
  28. version=None):
  29. """
  30. Return a schema view.
  31. """
  32. if generator_class is None:
  33. if coreapi.is_enabled():
  34. generator_class = coreapi.SchemaGenerator
  35. else:
  36. generator_class = openapi.SchemaGenerator
  37. generator = generator_class(
  38. title=title, url=url, description=description,
  39. urlconf=urlconf, patterns=patterns, version=version
  40. )
  41. # Avoid import cycle on APIView
  42. from .views import SchemaView
  43. return SchemaView.as_view(
  44. renderer_classes=renderer_classes,
  45. schema_generator=generator,
  46. public=public,
  47. authentication_classes=authentication_classes,
  48. permission_classes=permission_classes,
  49. )