summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sphinx/application.py14
-rw-r--r--sphinx/util/pycompat.py4
2 files changed, 13 insertions, 5 deletions
diff --git a/sphinx/application.py b/sphinx/application.py
index f325935ad..eeaa954eb 100644
--- a/sphinx/application.py
+++ b/sphinx/application.py
@@ -207,11 +207,15 @@ class Sphinx(object):
# the config file itself can be an extension
if self.config.setup:
self._setting_up_extension = ['conf.py']
- raise ConfigError(
- _("'setup' that is specified in the conf.py has not been "
- "callable. Please provide a callable `setup` function "
- "in order to behave as a sphinx extension conf.py itself.")
- )
+ # py31 doesn't have 'callable' function for below check
+ if hasattr(self.config.setup, '__call__'):
+ self.config.setup(self)
+ else:
+ raise ConfigError(
+ _("'setup' that is specified in the conf.py has not been "
+ "callable. Please provide a callable `setup` function "
+ "in order to behave as a sphinx extension conf.py itself.")
+ )
# now that we know all config values, collect them from conf.py
self.config.init_values()
diff --git a/sphinx/util/pycompat.py b/sphinx/util/pycompat.py
index e9dec7736..69a4351bf 100644
--- a/sphinx/util/pycompat.py
+++ b/sphinx/util/pycompat.py
@@ -135,6 +135,10 @@ def execfile_(filepath, _globals, open=open):
with open(filepath, mode) as f:
source = f.read()
+ # py26 accept only LF eol instead of CRLF
+ if sys.version_info[:2] == (2, 6):
+ source = source.replace(b'\r\n', b'\n')
+
# compile to a code object, handle syntax errors
filepath_enc = filepath.encode(fs_encoding)
try: