diff options
-rw-r--r-- | sphinx/application.py | 14 | ||||
-rw-r--r-- | sphinx/util/pycompat.py | 4 |
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: |