Skip to content
  • Damien George's avatar
    py/modbuiltins: Simplify and generalise dir() by probing qstrs. · 98647e83
    Damien George authored
    This patch improves the builtin dir() function by probing the target object
    with all possible qstrs via mp_load_method_maybe.  This is very simple (in
    terms of implementation), doesn't require recursion, and allows to list all
    methods of user-defined classes (without duplicates) even if they have
    multiple inheritance with a common parent.  The downside is that it can be
    slow because it has to iterate through all the qstrs in the system, but
    the "dir()" function is anyway mostly used for testing frameworks and user
    introspection of types, so speed is not considered a priority.
    
    In addition to providing a more complete implementation of dir(), this
    patch is simpler than the previous implementation and saves some code
    space:
    
       bare-arm:   -80
    minimal x86:   -80
       unix x64:   -56
    unix nanbox:   -48
          stm32:   -80
         cc3200:   -80
        esp8266:  -104
          esp32:   -64
    98647e83