amuse icon indicating copy to clipboard operation
amuse copied to clipboard

help(code.parameters) broken on issue-1024 branch

Open LourensVeen opened this issue 1 year ago • 1 comments

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 main branch version to see if it also crashes
  • [ ] fix

LourensVeen avatar Feb 19 '25 17:02 LourensVeen

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.

LourensVeen avatar May 27 '25 09:05 LourensVeen