rst.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. """reStructuredText Exporter class"""
  2. # Copyright (c) Jupyter Development Team.
  3. # Distributed under the terms of the Modified BSD License.
  4. from traitlets import default
  5. from traitlets.config import Config
  6. from ..filters import DataTypeFilter
  7. from .templateexporter import TemplateExporter
  8. class RSTExporter(TemplateExporter):
  9. """
  10. Exports reStructuredText documents.
  11. """
  12. @default("file_extension")
  13. def _file_extension_default(self):
  14. return ".rst"
  15. @default("template_name")
  16. def _template_name_default(self):
  17. return "rst"
  18. @default("raw_mimetypes")
  19. def _raw_mimetypes_default(self):
  20. # Up to summer 2024, nbconvert had a mistaken output_mimetype.
  21. # Listing that as an extra option here maintains compatibility for
  22. # notebooks with raw cells marked as that mimetype.
  23. return [self.output_mimetype, "text/restructuredtext", ""]
  24. output_mimetype = "text/x-rst"
  25. export_from_notebook = "reST"
  26. def default_filters(self):
  27. """Override filter_data_type to use native rst outputs"""
  28. dtf = DataTypeFilter()
  29. dtf.display_data_priority = [self.output_mimetype, *dtf.display_data_priority]
  30. filters = dict(super().default_filters())
  31. filters["filter_data_type"] = dtf
  32. return filters.items()
  33. @property
  34. def default_config(self):
  35. c = Config(
  36. {
  37. "CoalesceStreamsPreprocessor": {"enabled": True},
  38. "ExtractOutputPreprocessor": {"enabled": True},
  39. "HighlightMagicsPreprocessor": {"enabled": True},
  40. }
  41. )
  42. if super().default_config:
  43. c2 = super().default_config.copy()
  44. c2.merge(c)
  45. c = c2
  46. return c