elif state.config['PYBIND11_COMPATIBILITY'] and hasattr(value.__class__, '__members__'):
# TODO Python 3.8+ supports `a, *b`, switch to that once 3.7 is dropped
return (value.name, ) + make_name_relative_link(state, referrer_path, '{}.{}.{}'.format(value.__class__.__module__, value.__class__.__qualname__, value.name))
- elif inspect.isfunction(value):
- out = '<function {}>'.format(value.__name__)
+ # isbuiltin returns true if object is a builtin _function_ or _method_, not
+ # just any builtin such as the False literal
+ elif inspect.isfunction(value) or inspect.isbuiltin(value):
+ # TODO if the function is in our name map, return its name and link to
+ # it maybe?
+ out = '...'
return out, out, html.escape(out)
elif '__repr__' in type(value).__dict__:
rendered = repr(value)
<h2><a href="#functions">Functions</a></h2>
<dl class="m-doc">
<dt id="function">
- <span class="m-doc-wrap-bumper">def <a href="#function" class="m-doc-self">function</a>(</span><span class="m-doc-wrap">default_string_that_should_be_escaped = '<&>',
- default_function_that_should_be_escaped = <function <lambda>>)</span>
+ <span class="m-doc-wrap-bumper">def <a href="#function" class="m-doc-self">function</a>(</span><span class="m-doc-wrap">default_string_that_should_be_escaped = '<&>')</span>
</dt>
<dd></dd>
</dl>
class Enum(enum.Enum):
VALUE_THAT_SHOULD_BE_ESCAPED = "<&>"
-def function(default_string_that_should_be_escaped = "<&>", default_function_that_should_be_escaped = lambda a: a):
+def function(default_string_that_should_be_escaped = "<&>"):
pass
DATA_THAT_SHOULD_BE_ESCAPED = "<&>"
</dt>
<dd></dd>
<dt id="setup_callback">
- <span class="m-doc-wrap-bumper">def <a href="#setup_callback" class="m-doc-self">setup_callback</a>(</span><span class="m-doc-wrap">callback = <function basics>)</span>
+ <span class="m-doc-wrap-bumper">def <a href="#setup_callback" class="m-doc-self">setup_callback</a>(</span><span class="m-doc-wrap">unknown_function_is_an_ellipsis = ...,
+ builtin_function_is_an_ellipsis = ...,
+ lambda_is_an_ellipsis = ...)</span>
</dt>
<dd>Should produce a deterministic output.</dd>
</dl>
"""Value and default argument formatting"""
import enum
+import math
+import os
class Foo:
...
def basics(string_param = "string", tuple_param = (3, 5), float_param = 1.2, unrepresentable_param = Foo()):
pass
-def setup_callback(callback = basics):
+def setup_callback(unknown_function_is_an_ellipsis = os.path.join,
+ builtin_function_is_an_ellipsis = math.log,
+ lambda_is_an_ellipsis = lambda a: a):
"""Should produce a deterministic output."""
pass