Help() prints duplicate lines

I’m not sure if I’m the only one, but I get two lines of the same thing when I run help(GSXXX).

It’s been around for quite a while (since G3) and I was thinking someone would notice and get it fixed, but it’s unchanged.

What exactly do you get?

Here’s the first 30 lines of help(GSLayer) for example:

Help on class GSLayer in module objc:

class GSLayer(NSObject)
 |  GSLayer(*args, **kwargs)
 |  
 |  Method resolution order:
 |      GSLayer
 |      NSObject
 |      objc.objc_object
 |      builtins.object
 |  
 |  Methods defined here:
 |  
 |  .cxx_destruct()
 |      - (void).cxx_destruct;
 |  
 |  .cxx_destruct()
 |      - (void).cxx_destruct;
 |  
 |  CA_interpolateValues___interpolator_(arg0, arg1, arg2, arg3, /)
 |      - (id)CA_interpolateValues___interpolator_:(id)arg0;
 |  
 |  CA_interpolateValues___interpolator_(arg0, arg1, arg2, arg3, /)
 |      - (id)CA_interpolateValues___interpolator_:(id)arg0;
 |  
 |  SCN_setupDisplayLinkWithQueue_screen_policy_(arg0, arg1, arg2, /)
 |      - (id)SCN_setupDisplayLinkWithQueue_screen_policy_:(id)arg0;
 |  
 |  SCN_setupDisplayLinkWithQueue_screen_policy_(arg0, arg1, arg2, /)
 |      - (id)SCN_setupDisplayLinkWithQueue_screen_policy_:(id)arg0;

I noticed that, too. Can confirm that it is since a while (as long as I can remember).

works for me:

Help on class GSLayer in module objc:

class GSLayer(_frozen_importlib.NSObject)
 |  GSLayer(*args, **kwargs)
 |  
 |  Method resolution order:
 |      GSLayer
 |      _frozen_importlib.NSObject
 |      objc.objc_object
 |      builtins.object
 |  
 |  Methods defined here:
 |  
 |  .cxx_destruct()
 |      - (void).cxx_destruct;
 |  
 |  CA_interpolateValues___interpolator_(arg0, arg1, arg2, arg3, /)
 |      - (id)CA_interpolateValues___interpolator_:(id)arg0;
 |  
 |  SCN_setupDisplayLinkWithQueue_screen_policy_(arg0, arg1, arg2, /)
 |      - (id)SCN_setupDisplayLinkWithQueue_screen_policy_:(id)arg0;
 |  
 |  __add__ = __GSLayer__add__(self, summand)
 |  
 |  __eq__ lambda self, other
 |  
 |  __init__ = __empty__init__(self, path=None)
 |  
 |  __mul__ = __GSLayer__mul__(self, factor)
 |  
 |  __str__ = __GSLayer__str__(self)
 |  
 |  addAnchor_(arg0, /)
 |      - (void)addAnchor_:(id)arg0;
 |  
 |  addAnnotation_(arg0, /)
 |      - (void)addAnnotation_:(id)arg0;
 |  
 |  addBackgroundImageWithURL_(arg0, /)
 |      - (void)addBackgroundImageWithURL_:(id)arg0;
 |  
 |  addExtremePoints()
 |      - (void)addExtremePoints;

Can you try to start Glyphs without plugins?

Removing plugins does fix the issue. But how does this relate do a plugin?

There seems to be a plugin that messes with the pyobjc runtime.