diff --git a/docs/user/build-default-versions.rst b/docs/user/build-default-versions.rst index bb9a426c7a7..b6b961a45ef 100644 --- a/docs/user/build-default-versions.rst +++ b/docs/user/build-default-versions.rst @@ -58,7 +58,8 @@ mock: ``1.0.1`` (could be removed in the future). pillow: - ``5.4.1`` (could be removed in the future). + ``5.4.1`` when using Python 2.7, 3.4, 3.5, 3.6, 3.7. Otherwise, its latest version + (could be removed in the future). alabaster: ``0.7.x`` (could be removed in the future). diff --git a/readthedocs/doc_builder/python_environments.py b/readthedocs/doc_builder/python_environments.py index 86db7acb894..f3fa0276d0d 100644 --- a/readthedocs/doc_builder/python_environments.py +++ b/readthedocs/doc_builder/python_environments.py @@ -169,13 +169,23 @@ def install_core_requirements(self): *cmd, bin_path=self.venv_bin(), cwd=self.checkout_path ) - requirements = [ - 'mock==1.0.1', - 'pillow==5.4.1', - 'alabaster>=0.7,<0.8,!=0.7.5', - 'commonmark==0.8.1', - 'recommonmark==0.5.0', - ] + requirements = [] + + # Unpin Pillow on newer Python versions to avoid re-compiling + # https://pillow.readthedocs.io/en/stable/installation.html#python-support + if self.config.python.version in ("2.7", "3.4", "3.5", "3.6", "3.7"): + requirements.append("pillow==5.4.1") + else: + requirements.append("pillow") + + requirements.extend( + [ + "mock==1.0.1", + "alabaster>=0.7,<0.8,!=0.7.5", + "commonmark==0.8.1", + "recommonmark==0.5.0", + ] + ) if self.config.doctype == 'mkdocs': requirements.append( diff --git a/readthedocs/projects/tests/test_build_tasks.py b/readthedocs/projects/tests/test_build_tasks.py index f4222bb8396..21f8f2243ad 100644 --- a/readthedocs/projects/tests/test_build_tasks.py +++ b/readthedocs/projects/tests/test_build_tasks.py @@ -579,8 +579,8 @@ def test_build_commands_executed(self, load_yaml_config): "install", "--upgrade", "--no-cache-dir", + "pillow", "mock==1.0.1", - "pillow==5.4.1", "alabaster>=0.7,<0.8,!=0.7.5", "commonmark==0.8.1", "recommonmark==0.5.0", diff --git a/readthedocs/rtd_tests/tests/test_doc_building.py b/readthedocs/rtd_tests/tests/test_doc_building.py index f1b2d570bad..6d1642780e9 100644 --- a/readthedocs/rtd_tests/tests/test_doc_building.py +++ b/readthedocs/rtd_tests/tests/test_doc_building.py @@ -368,9 +368,9 @@ def setUp(self): self.build_env_mock = Mock() self.base_requirements = [ - 'mock', - 'pillow', - 'alabaster', + "pillow", + "mock", + "alabaster", ] self.base_conda_requirements = [ 'mock', @@ -395,7 +395,7 @@ def assertArgsStartsWith(self, args, call): for arg, arg_mock in zip_longest(args, args_mock): if arg is not mock.ANY: self.assertIsNotNone(arg_mock) - self.assertTrue(arg_mock.startswith(arg)) + self.assertTrue(arg_mock.startswith(arg), arg) @patch('readthedocs.projects.models.Project.checkout_path') def test_install_core_requirements_sphinx(self, checkout_path):