mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge pull request #6812 from astrofrog/explicit-parallel-unsafe
Give a warning when extensions are explicitly not parallel safe
This commit is contained in:
@@ -1192,26 +1192,30 @@ class Sphinx:
|
||||
"""
|
||||
if typ == 'read':
|
||||
attrname = 'parallel_read_safe'
|
||||
message = __("the %s extension does not declare if it is safe "
|
||||
"for parallel reading, assuming it isn't - please "
|
||||
"ask the extension author to check and make it "
|
||||
"explicit")
|
||||
message_not_declared = __("the %s extension does not declare if it "
|
||||
"is safe for parallel reading, assuming "
|
||||
"it isn't - please ask the extension author "
|
||||
"to check and make it explicit")
|
||||
message_not_safe = __("the %s extension is not safe for parallel reading")
|
||||
elif typ == 'write':
|
||||
attrname = 'parallel_write_safe'
|
||||
message = __("the %s extension does not declare if it is safe "
|
||||
"for parallel writing, assuming it isn't - please "
|
||||
"ask the extension author to check and make it "
|
||||
"explicit")
|
||||
message_not_declared = __("the %s extension does not declare if it "
|
||||
"is safe for parallel writing, assuming "
|
||||
"it isn't - please ask the extension author "
|
||||
"to check and make it explicit")
|
||||
message_not_safe = __("the %s extension is not safe for parallel writing")
|
||||
else:
|
||||
raise ValueError('parallel type %s is not supported' % typ)
|
||||
|
||||
for ext in self.extensions.values():
|
||||
allowed = getattr(ext, attrname, None)
|
||||
if allowed is None:
|
||||
logger.warning(message, ext.name)
|
||||
logger.warning(message_not_declared, ext.name)
|
||||
logger.warning(__('doing serial %s'), typ)
|
||||
return False
|
||||
elif not allowed:
|
||||
logger.warning(message_not_safe, ext.name)
|
||||
logger.warning(__('doing serial %s'), typ)
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
@@ -105,6 +105,8 @@ def test_add_is_parallel_allowed(app, status, warning):
|
||||
|
||||
app.setup_extension('read_serial')
|
||||
assert app.is_parallel_allowed('read') is False
|
||||
assert "the read_serial extension is not safe for parallel reading" in warning.getvalue()
|
||||
warning.truncate(0) # reset warnings
|
||||
assert app.is_parallel_allowed('write') is True
|
||||
assert warning.getvalue() == ''
|
||||
app.extensions.pop('read_serial')
|
||||
|
||||
Reference in New Issue
Block a user