summaryrefslogtreecommitdiffstatshomepage
path: root/tests/cmdline/repl_autocomplete_underscore.py.exp
diff options
context:
space:
mode:
authorAndrew Leech <andrew.leech@planetinnovation.com.au>2025-03-26 11:29:54 +1100
committerDamien George <damien@micropython.org>2025-06-19 17:23:42 +1000
commit09541b78963d6aff334b143c3247271a939d54fa (patch)
tree35ffaac19370f18a483e8b6ea5af8b34d84516c6 /tests/cmdline/repl_autocomplete_underscore.py.exp
parent8eb56369967382b6644fa56b98acbff2e77a66a3 (diff)
downloadmicropython-master.tar.gz
micropython-master.zip
py/repl: Skip private variables when printing tab completion options.HEADmaster
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>
Diffstat (limited to 'tests/cmdline/repl_autocomplete_underscore.py.exp')
-rw-r--r--tests/cmdline/repl_autocomplete_underscore.py.exp41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/cmdline/repl_autocomplete_underscore.py.exp b/tests/cmdline/repl_autocomplete_underscore.py.exp
new file mode 100644
index 0000000000..35617554f5
--- /dev/null
+++ b/tests/cmdline/repl_autocomplete_underscore.py.exp
@@ -0,0 +1,41 @@
+MicroPython \.\+ version
+Use Ctrl-D to exit, Ctrl-E for paste mode
+>>> # Test REPL autocompletion filtering of underscore attributes
+>>>
+>>> # Start paste mode
+>>>
+paste mode; Ctrl-C to cancel, Ctrl-D to finish
+===
+=== 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
+===
+===
+>>> # 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.public_
+public_attr public_method public_property
+>>> obj.public_attr
+1
+>>>