summaryrefslogtreecommitdiff
path: root/sphinx/cmd/quickstart.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/cmd/quickstart.py')
-rw-r--r--sphinx/cmd/quickstart.py68
1 files changed, 25 insertions, 43 deletions
diff --git a/sphinx/cmd/quickstart.py b/sphinx/cmd/quickstart.py
index 4234c039c..a40a21073 100644
--- a/sphinx/cmd/quickstart.py
+++ b/sphinx/cmd/quickstart.py
@@ -11,13 +11,11 @@
import argparse
import locale
import os
-import re
import sys
import time
-import warnings
from collections import OrderedDict
from os import path
-from typing import Any, Callable, Dict, List, Pattern, Union
+from typing import Any, Callable, Dict, List, Union
# try to import readline, unix specific enhancement
try:
@@ -36,15 +34,11 @@ from docutils.utils import column_width
import sphinx.locale
from sphinx import __display_version__, package_dir
-from sphinx.deprecation import RemovedInSphinx40Warning
from sphinx.locale import __
-from sphinx.util.console import (bold, color_terminal, colorize, nocolor, red, # type: ignore
- turquoise)
+from sphinx.util.console import bold, color_terminal, colorize, nocolor, red # type: ignore
from sphinx.util.osutil import ensuredir
from sphinx.util.template import SphinxRenderer
-TERM_ENCODING = getattr(sys.stdin, 'encoding', None) # RemovedInSphinx40Warning
-
EXTENSIONS = OrderedDict([
('autodoc', __('automatically insert docstrings from modules')),
('doctest', __('automatically test code snippets in doctest blocks')),
@@ -135,30 +129,6 @@ def ok(x: str) -> str:
return x
-def term_decode(text: Union[bytes, str]) -> str:
- warnings.warn('term_decode() is deprecated.',
- RemovedInSphinx40Warning, stacklevel=2)
-
- if isinstance(text, str):
- return text
-
- # Use the known encoding, if possible
- if TERM_ENCODING:
- return text.decode(TERM_ENCODING)
-
- # If ascii is safe, use it with no warning
- if text.decode('ascii', 'replace').encode('ascii', 'replace') == text:
- return text.decode('ascii')
-
- print(turquoise(__('* Note: non-ASCII characters entered '
- 'and terminal encoding unknown -- assuming '
- 'UTF-8 or Latin-1.')))
- try:
- return text.decode()
- except UnicodeDecodeError:
- return text.decode('latin1')
-
-
def do_prompt(text: str, default: str = None, validator: Callable[[str], Any] = nonempty) -> Union[str, bool]: # NOQA
while True:
if default is not None:
@@ -187,22 +157,27 @@ def do_prompt(text: str, default: str = None, validator: Callable[[str], Any] =
return x
-def convert_python_source(source: str, rex: Pattern = re.compile(r"[uU]('.*?')")) -> str:
- # remove Unicode literal prefixes
- warnings.warn('convert_python_source() is deprecated.',
- RemovedInSphinx40Warning, stacklevel=2)
- return rex.sub('\\1', source)
-
-
class QuickstartRenderer(SphinxRenderer):
def __init__(self, templatedir: str) -> None:
self.templatedir = templatedir or ''
super().__init__()
+ def _has_custom_template(self, template_name: str) -> bool:
+ """Check if custom template file exists.
+
+ Note: Please don't use this function from extensions.
+ It will be removed in the future without deprecation period.
+ """
+ template = path.join(self.templatedir, path.basename(template_name))
+ if self.templatedir and path.exists(template):
+ return True
+ else:
+ return False
+
def render(self, template_name: str, context: Dict) -> str:
- user_template = path.join(self.templatedir, path.basename(template_name))
- if self.templatedir and path.exists(user_template):
- return self.render_from_file(user_template, context)
+ if self._has_custom_template(template_name):
+ custom_template = path.join(self.templatedir, path.basename(template_name))
+ return self.render_from_file(custom_template, context)
else:
return super().render(template_name, context)
@@ -355,6 +330,7 @@ def generate(d: Dict, overwrite: bool = True, silent: bool = False, templatedir:
if 'mastertocmaxdepth' not in d:
d['mastertocmaxdepth'] = 2
+ d['root_doc'] = d['master']
d['now'] = time.asctime()
d['project_underline'] = column_width(d['project']) * '='
d.setdefault('extensions', [])
@@ -399,7 +375,13 @@ def generate(d: Dict, overwrite: bool = True, silent: bool = False, templatedir:
write_file(path.join(srcdir, 'conf.py'), template.render_string(conf_text, d))
masterfile = path.join(srcdir, d['master'] + d['suffix'])
- write_file(masterfile, template.render('quickstart/master_doc.rst_t', d))
+ if template._has_custom_template('quickstart/master_doc.rst_t'):
+ msg = ('A custom template `master_doc.rst_t` found. It has been renamed to '
+ '`root_doc.rst_t`. Please rename it on your project too.')
+ print(colorize('red', msg)) # RemovedInSphinx60Warning
+ write_file(masterfile, template.render('quickstart/master_doc.rst_t', d))
+ else:
+ write_file(masterfile, template.render('quickstart/root_doc.rst_t', d))
if d.get('make_mode') is True:
makefile_template = 'quickstart/Makefile.new_t'