@@ -376,6 +376,20 @@ def put_nb_func(self, fn: NbFunction, name: Optional[str] = None) -> None:
376
376
self .write_ln (f"@{ overload } " )
377
377
self .put_nb_overload (fn , s , name )
378
378
379
+ def put_nb_method (self , fn : NbFunction , name : Optional [str ], parent : Optional [object ]) -> None :
380
+ fn_qualname = getattr (fn , "__qualname__" , None )
381
+ if name and fn_qualname :
382
+ fn_class , _ , fn_name = fn_qualname .rpartition ('.' )
383
+ # Check if this function is an alias
384
+ if name != fn_name :
385
+ if fn_class == getattr (parent , "__qualname__" , None ):
386
+ real_name = fn_name
387
+ else :
388
+ real_name = fn_qualname
389
+ self .write_ln (f"{ name } = { real_name } \n " )
390
+ return
391
+ self .put_nb_func (fn , name )
392
+
379
393
def put_function (self , fn : Callable [..., Any ], name : Optional [str ] = None , parent : Optional [object ] = None ):
380
394
"""Append a function of an arbitrary type to the stub"""
381
395
# Don't generate a constructor for nanobind classes that aren't constructible
@@ -848,7 +862,7 @@ def put(self, value: object, name: Optional[str] = None, parent: Optional[object
848
862
elif tp_mod == "nanobind" :
849
863
if tp_name == "nb_method" :
850
864
value = cast (NbFunction , value )
851
- self .put_nb_func (value , name )
865
+ self .put_nb_method (value , name , parent )
852
866
elif tp_name == "nb_static_property" :
853
867
value = cast (NbStaticProperty , value )
854
868
self .put_nb_static_property (name , value )
0 commit comments