circuitpython/tests/cmdline/repl_autocomplete_underscore.py
Andrew Leech 09541b7896 py/repl: Skip private variables when printing tab completion options.
Any '_' variables/functions in frozen modules are currently printed, when
they shouldn't be.  That's due to underscore names possibly existing
between the start and end qstrs which are used to print the auto-complete
matches.  The underscore names should be skipped when iterating between the
two boundary qstrs.

The underscore attributes are removed from the extra coverage exp file
because tab completing "import <tab>" no longer lists modules beginning
with an underscore.

Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2025-06-19 17:23:42 +10:00

33 lines
658 B
Python

# Test REPL autocompletion filtering of underscore attributes
# Start paste mode
{\x05}
class TestClass:
def __init__(self):
self.public_attr = 1
self._private_attr = 2
self.__very_private = 3
def public_method(self):
pass
def _private_method(self):
pass
@property
def public_property(self):
return 42
@property
def _private_property(self):
return 99
{\x04}
# Paste executed
# Create an instance
obj = TestClass()
# Test tab completion on the instance
# The tab character after `obj.` and 'a' below triggers the completions
obj.{\x09}{\x09}a{\x09}