chiark / gitweb /
documentation/python: deterministic formatting of function values.
authorVladimír Vondruš <mosra@centrum.cz>
Thu, 7 May 2020 20:10:58 +0000 (22:10 +0200)
committerVladimír Vondruš <mosra@centrum.cz>
Thu, 7 May 2020 20:12:09 +0000 (22:12 +0200)
Otherwise it would be a different hash every time.

documentation/python.py
documentation/test_python/inspect_value_formatting/inspect_value_formatting.html

index 8f32c50116feb948c93943d1270328029075e077..933a4106077759027e64553a01ec2883b675be77 100755 (executable)
@@ -915,7 +915,7 @@ def parse_pybind_docstring(state: State, referrer_path: List[str], doc: str) ->
 
 # Used to format function default arguments and data values. *Not* pybind's
 # function default arguments, as those are parsed from a string representation.
-def format_value(state: State, referrer_path: List[str], value: str) -> Optional[str]:
+def format_value(state: State, referrer_path: List[str], value) -> Optional[str]:
     if value is None: return str(value)
     if isinstance(value, enum.Enum):
         return make_name_link(state, referrer_path, '{}.{}.{}'.format(value.__class__.__module__, value.__class__.__qualname__, value.name))
@@ -924,6 +924,8 @@ def format_value(state: State, referrer_path: List[str], value: str) -> Optional
     # out of a str() instead.
     elif state.config['PYBIND11_COMPATIBILITY'] and hasattr(value.__class__, '__members__'):
         return make_name_link(state, referrer_path, '{}.{}.{}'.format(value.__class__.__module__, value.__class__.__qualname__, str(value).partition('.')[2]))
+    elif inspect.isfunction(value):
+        return html.escape('<function {}>'.format(value.__name__))
     elif '__repr__' in type(value).__dict__:
         rendered = repr(value)
         # TODO: tuples of non-representable values will still be ugly
index f89eac7e50877ff5d2b1640d9eb6221f091cad29..be5bb6734778e84ade6e6151ae201e358a4c6ffe 100644 (file)
@@ -55,7 +55,7 @@
             </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 = &lt;function basics at 0x7fc2ca424ee0&gt;)</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">callback = &lt;function basics&gt;)</span>
             </dt>
             <dd>Should produce a deterministic output.</dd>
           </dl>