In Python `range()` is __not a function__, it is a class, see 
[here](https://docs.python.org/3/library/stdtypes.html#ranges), and the 
function looking like `range()` is actually a constructor for the `range` class 
objects, not a function. 

In the `std.py.tags` tags file, some of the class constructors have signatures, 
and some do not.  Classes with signature can show calltips, but classes without 
signatures have nothing to provide a calltip.  One of the classes that have no 
signature is `range` so it has no calltip.

Without spending detailed analysis it appears to me that classes that are 
implemented by Python have a signature and those which are implemented by C 
code do not have a signature since the parameters for the class constructor are 
analysed by C code and there is no Python definition.

In particular 
[`rangeobject.c`](https://github.com/python/cpython/blob/main/Objects/rangeobject.c)
 in Python source is the source of the definition for the `class range` and so 
no constructor signature exists in Python.

The `std.py.tags` is automatically generated from Python, so there are no 
calltips for any classes that have no signature and they will have no calltip.

If a user really wants some or __all__ class constructors they may be able to 
hand craft a tags file for those they want by reading the C code of python 
and/or the details in the Python documentation.  But theer is not automatic 
means of creating such a tags file.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/issues/4011#issuecomment-2435239287
You are receiving this because you are subscribed to this thread.

Message ID: <geany/geany/issues/4011/2435239...@github.com>

Reply via email to