amuse
amuse copied to clipboard
help(code.parameters) broken on issue-1024 branch
Describe the bug
The command help(code.parameters) is supposed to show a generated docstring, but this crashes at least on the issue-1024-new-build-system branch:
In [12]: help(se.parameters)
---------------------------------------------------------------------------
CoreException Traceback (most recent call last)
Cell In[12], line 1
----> 1 help(se.parameters)
File <frozen _sitebuiltins>:103, in __call__(self, *args, **kwds)
File /opt/homebrew/Caskroom/miniconda/base/envs/amuse-env/lib/python3.13/pydoc.py:1992, in Helper.__call__(self, request)
1990 if request is not self._GoInteractive:
1991 try:
-> 1992 self.help(request)
1993 except ImportError as err:
1994 self.output.write(f'{err}\n')
File /opt/homebrew/Caskroom/miniconda/base/envs/amuse-env/lib/python3.13/pydoc.py:2053, in Helper.help(self, request, is_cli)
2051 else: doc(str, 'Help on %s:', output=self._output, is_cli=is_cli)
2052 elif isinstance(request, Helper): self()
-> 2053 else: doc(request, 'Help on %s:', output=self._output, is_cli=is_cli)
2054 self.output.write('\n')
File /opt/homebrew/Caskroom/miniconda/base/envs/amuse-env/lib/python3.13/pydoc.py:1759, in doc(thing, title, forceload, output, is_cli)
1757 what = thing
1758 else:
-> 1759 what = getattr(thing, '__qualname__', None)
1760 if not isinstance(what, str):
1761 what = getattr(thing, '__name__', None)
File /opt/homebrew/Caskroom/miniconda/base/envs/amuse-env/lib/python3.13/site-packages/amuse/datamodel/parameters.py:38, in Parameters.__getattr__(self, name)
34 def __getattr__(self, name):
35 # if name.startswith('__'):
36 # return object.__getattribute__(self, name)
37 if not name in self._mapping_from_name_to_definition:
---> 38 raise exceptions.CoreException(
39 f"tried to get unknown parameter '{name}' "
40 f"for a '{type(self._instance()).__name__}' object"
41 )
42 self._instance().before_get_parameter()
44 return self.get_parameter(name).get_value()
CoreException: tried to get unknown parameter '__qualname__' for a 'SSE' object
I think I may have broken something here, I definitely did something with __qualname__ and __name__ to fix some broken tests.
- [x] check with
mainbranch version to see if it also crashes - [ ] fix
On the main branch, I get:
>>> from amuse.community.sse import Sse
>>> se = Sse()
>>> help(se.parameters)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.10/_sitebuiltins.py", line 103, in __call__
return pydoc.help(*args, **kwds)
File "/usr/lib/python3.10/pydoc.py", line 2013, in __call__
self.help(request)
File "/usr/lib/python3.10/pydoc.py", line 2072, in help
else: doc(request, 'Help on %s:', output=self._output)
File "/usr/lib/python3.10/pydoc.py", line 1792, in doc
pager(render_doc(thing, title, forceload))
File "/usr/lib/python3.10/pydoc.py", line 1780, in render_doc
if hasattr(object, '__origin__'):
File "/home/lourens/NLeSC/projects/ReDiTSAp/software/amuse-ref/src/amuse/datamodel/parameters.py", line 38, in __getattr__
raise exceptions.CoreException(
amuse.support.exceptions.CoreException: tried to get unknown parameter '__origin__' for a 'SSE' object
Different error, but still broken. So let's fix this separately.