Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
@unittest.skipIf(sphinx_version < [2, 0],
"not a problem for sphinx 2.7")
@unittest.expectedFailure
def test_warnings_depreciation(self, app, status, warning):
with self.assertWarnsRegex(sphinx.deprecation.RemovedInSphinx40Warning,
r'(?s).*Autosummary.warnings'):
app.build()
priority = CallableDataDocumenter.priority + 0.1
def __init__(self, *args, **kwargs):
super(NoDataDataDocumenter, self).__init__(*args, **kwargs)
fullname = '.'.join(self.name.rsplit('::', 1))
if hasattr(self.env, 'config') and dont_document_data(
self.env.config, fullname):
self.options = Options(self.options)
self.options.annotation = ' '
class NoDataAttributeDocumenter(CallableAttributeDocumenter):
"""AttributeDocumenter that prevents the displaying of large data"""
#: slightly higher priority as the one of the CallableAttributeDocumenter
priority = CallableAttributeDocumenter.priority + 0.1
def __init__(self, *args, **kwargs):
super(NoDataAttributeDocumenter, self).__init__(*args, **kwargs)
fullname = '.'.join(self.name.rsplit('::', 1))
if hasattr(self.env, 'config') and dont_document_data(
self.env.config, fullname):
self.options = Options(self.options)
self.options.annotation = ' '
def setup(app):
"""setup function for using this module as a sphinx extension"""
app.setup_extension('sphinx.ext.autosummary')
app.setup_extension('sphinx.ext.autodoc')
# make sure to allow inheritance when registering new documenters
class NoDataDataDocumenter(CallableDataDocumenter):
"""DataDocumenter that prevents the displaying of large data"""
#: slightly higher priority as the one of the CallableDataDocumenter
priority = CallableDataDocumenter.priority + 0.1
def __init__(self, *args, **kwargs):
super(NoDataDataDocumenter, self).__init__(*args, **kwargs)
fullname = '.'.join(self.name.rsplit('::', 1))
if hasattr(self.env, 'config') and dont_document_data(
self.env.config, fullname):
self.options = Options(self.options)
self.options.annotation = ' '
class NoDataAttributeDocumenter(CallableAttributeDocumenter):
"""AttributeDocumenter that prevents the displaying of large data"""
#: slightly higher priority as the one of the CallableAttributeDocumenter
priority = CallableAttributeDocumenter.priority + 0.1
def __init__(self, *args, **kwargs):
super(NoDataAttributeDocumenter, self).__init__(*args, **kwargs)
fullname = '.'.join(self.name.rsplit('::', 1))
if hasattr(self.env, 'config') and dont_document_data(
self.env.config, fullname):
self.options = Options(self.options)
self.options.annotation = ' '
def setup(app):
"""setup function for using this module as a sphinx extension"""
if config.document_data is True:
document_data = [re.compile('.*')]
else:
document_data = config.document_data
if config.not_document_data is True:
not_document_data = [re.compile('.*')]
else:
not_document_data = config.not_document_data
return (
# data should not be documented
(any(re.match(p, fullname) for p in not_document_data)) or
# or data is not included in what should be documented
(not any(re.match(p, fullname) for p in document_data)))
class NoDataDataDocumenter(CallableDataDocumenter):
"""DataDocumenter that prevents the displaying of large data"""
#: slightly higher priority as the one of the CallableDataDocumenter
priority = CallableDataDocumenter.priority + 0.1
def __init__(self, *args, **kwargs):
super(NoDataDataDocumenter, self).__init__(*args, **kwargs)
fullname = '.'.join(self.name.rsplit('::', 1))
if hasattr(self.env, 'config') and dont_document_data(
self.env.config, fullname):
self.options = Options(self.options)
self.options.annotation = ' '
class NoDataAttributeDocumenter(CallableAttributeDocumenter):
"""AttributeDocumenter that prevents the displaying of large data"""
if config.not_document_data is True:
not_document_data = [re.compile('.*')]
else:
not_document_data = config.not_document_data
return (
# data should not be documented
(any(re.match(p, fullname) for p in not_document_data)) or
# or data is not included in what should be documented
(not any(re.match(p, fullname) for p in document_data)))
class NoDataDataDocumenter(CallableDataDocumenter):
"""DataDocumenter that prevents the displaying of large data"""
#: slightly higher priority as the one of the CallableDataDocumenter
priority = CallableDataDocumenter.priority + 0.1
def __init__(self, *args, **kwargs):
super(NoDataDataDocumenter, self).__init__(*args, **kwargs)
fullname = '.'.join(self.name.rsplit('::', 1))
if hasattr(self.env, 'config') and dont_document_data(
self.env.config, fullname):
self.options = Options(self.options)
self.options.annotation = ' '
class NoDataAttributeDocumenter(CallableAttributeDocumenter):
"""AttributeDocumenter that prevents the displaying of large data"""
#: slightly higher priority as the one of the CallableAttributeDocumenter
priority = CallableAttributeDocumenter.priority + 0.1
def __init__(self, *args, **kwargs):
super(NoDataAttributeDocumenter, self).__init__(*args, **kwargs)
fullname = '.'.join(self.name.rsplit('::', 1))
if hasattr(self.env, 'config') and dont_document_data(
self.env.config, fullname):
self.options = Options(self.options)
self.options.annotation = ' '
def __init__(self, *args, **kwargs):
super(NoDataDataDocumenter, self).__init__(*args, **kwargs)
fullname = '.'.join(self.name.rsplit('::', 1))
if hasattr(self.env, 'config') and dont_document_data(
self.env.config, fullname):
self.options = Options(self.options)
self.options.annotation = ' '
def setup(app):
"""setup function for using this module as a sphinx extension"""
app.setup_extension('sphinx.ext.autosummary')
app.setup_extension('sphinx.ext.autodoc')
# make sure to allow inheritance when registering new documenters
if sphinx_version < [1, 7]:
registry = AutodocRegistry._registry
else:
registry = get_documenters(app)
for cls in [AutoSummClassDocumenter, AutoSummModuleDocumenter,
CallableAttributeDocumenter, NoDataDataDocumenter,
NoDataAttributeDocumenter]:
if not issubclass(registry.get(cls.objtype), cls):
if sphinx_version >= [2, 2]:
app.add_autodocumenter(cls, override=True)
elif sphinx_version >= [0, 6]:
app.add_autodocumenter(cls)
else:
app.add_documenter(cls)
# directives
if sphinx_version >= [1, 8]:
app.add_directive('automodule', AutoSummDirective, override=True)
app.add_directive('autoclass', AutoSummDirective, override=True)
else:
app.add_directive('automodule', AutoSummDirective)
app.add_directive('autoclass', AutoSummDirective)
def get_doc(self, encoding=None, ignore=1):
"""Reimplemented to include data from the call method"""
content = self.env.config.autodata_content
if content not in ('both', 'call') or not self.get_attr(
self.get_attr(self.object, '__call__', None), '__doc__'):
return super(CallableAttributeDocumenter, self).get_doc(
encoding=encoding, ignore=ignore)
# for classes, what the "docstring" is can be controlled via a
# config value; the default is both docstrings
docstrings = []
if content != 'call':
docstring = self.get_attr(self.object, '__doc__', None)
docstrings = [docstring + '\n'] if docstring else []
calldocstring = self.get_attr(
self.get_attr(self.object, '__call__', None), '__doc__')
if docstrings:
docstrings[0] += calldocstring
else:
docstrings.append(calldocstring + '\n')
doc = []
def get_doc(self, encoding=None, ignore=1):
"""Reimplemented to include data from the call method"""
content = self.env.config.autodata_content
if content not in ('both', 'call') or not self.get_attr(
self.get_attr(self.object, '__call__', None), '__doc__'):
return super(CallableDataDocumenter, self).get_doc(
encoding=encoding, ignore=ignore)
# for classes, what the "docstring" is can be controlled via a
# config value; the default is both docstrings
docstrings = []
if content != 'call':
docstring = self.get_attr(self.object, '__doc__', None)
docstrings = [docstring + '\n'] if docstring else []
calldocstring = self.get_attr(
self.get_attr(self.object, '__call__', None), '__doc__')
if docstrings:
docstrings[0] += calldocstring
else:
docstrings.append(calldocstring + '\n')
doc = []