3131
3232# Subset of Python builtins included in Pybricks MicroPython.
3333PYBRICKS_BUILTINS = {
34- "abs" ,
35- "all" ,
36- "any" ,
37- "ArithmeticError" ,
38- "AssertionError" ,
39- "AttributeError" ,
40- "BaseException" ,
41- "bin" ,
42- "bool" ,
43- "bytearray" ,
44- "bytes" ,
45- "callable" ,
46- "chr" ,
47- "classmethod" ,
48- "complex" ,
49- "dict" ,
50- "dir" ,
51- "divmod" ,
52- "enumerate" ,
53- "EOFError" ,
54- "eval" ,
55- "Exception" ,
56- "exec" ,
57- "float" ,
58- "GeneratorExit" ,
59- "getattr" ,
60- "globals" ,
61- "hasattr" ,
62- "hash" ,
63- "help" ,
64- "hex" ,
65- "id" ,
66- "ImportError" ,
67- "IndentationError" ,
68- "IndexError" ,
69- "input" ,
70- "int" ,
71- "isinstance" ,
72- "issubclass" ,
73- "iter" ,
74- "KeyboardInterrupt" ,
75- "KeyError" ,
76- "len" ,
77- "list" ,
78- "locals" ,
79- "LookupError" ,
80- "map" ,
81- "max" ,
82- "MemoryError" ,
83- "min" ,
84- "NameError" ,
85- "next" ,
86- "NotImplementedError" ,
87- "object" ,
88- "oct" ,
89- "ord" ,
90- "OSError" ,
91- "OverflowError" ,
92- "pow" ,
93- "print" ,
94- "range" ,
95- "repr" ,
96- "reversed" ,
97- "round" ,
98- "RuntimeError" ,
99- "set" ,
100- "setattr" ,
101- "slice" ,
102- "sorted" ,
103- "staticmethod" ,
104- "StopIteration" ,
105- "str" ,
106- "sum" ,
107- "super" ,
108- "SyntaxError" ,
109- "SystemExit" ,
110- "tuple" ,
111- "type" ,
112- "TypeError" ,
113- "ValueError" ,
114- "ZeroDivisionError" ,
115- "zip" ,
34+ "builtins.abs" ,
35+ "builtins.all" ,
36+ "builtins.any" ,
37+ "builtins.ArithmeticError" ,
38+ "builtins.AssertionError" ,
39+ "builtins.AttributeError" ,
40+ "builtins.BaseException" ,
41+ "builtins.bin" ,
42+ "builtins.bool" ,
43+ "builtins.bytearray" ,
44+ "builtins.bytes" ,
45+ "builtins.callable" ,
46+ "builtins.chr" ,
47+ "builtins.classmethod" ,
48+ "builtins.complex" ,
49+ "builtins.dict" ,
50+ "builtins.dir" ,
51+ "builtins.divmod" ,
52+ "builtins.enumerate" ,
53+ "builtins.EOFError" ,
54+ "builtins.eval" ,
55+ "builtins.Exception" ,
56+ "builtins.exec" ,
57+ "builtins.float" ,
58+ "builtins.GeneratorExit" ,
59+ "builtins.getattr" ,
60+ "builtins.globals" ,
61+ "builtins.hasattr" ,
62+ "builtins.hash" ,
63+ "builtins.help" ,
64+ "builtins.hex" ,
65+ "builtins.id" ,
66+ "builtins.ImportError" ,
67+ "builtins.IndentationError" ,
68+ "builtins.IndexError" ,
69+ "builtins.input" ,
70+ "builtins.int" ,
71+ "builtins.isinstance" ,
72+ "builtins.issubclass" ,
73+ "builtins.iter" ,
74+ "builtins.KeyboardInterrupt" ,
75+ "builtins.KeyError" ,
76+ "builtins.len" ,
77+ "builtins.list" ,
78+ "builtins.locals" ,
79+ "builtins.LookupError" ,
80+ "builtins.map" ,
81+ "builtins.max" ,
82+ "builtins.MemoryError" ,
83+ "builtins.min" ,
84+ "builtins.NameError" ,
85+ "builtins.next" ,
86+ "builtins.NotImplementedError" ,
87+ "builtins.object" ,
88+ "builtins.oct" ,
89+ "builtins.ord" ,
90+ "builtins.OSError" ,
91+ "builtins.OverflowError" ,
92+ "builtins.pow" ,
93+ "builtins.print" ,
94+ "builtins.range" ,
95+ "builtins.repr" ,
96+ "builtins.reversed" ,
97+ "builtins.round" ,
98+ "builtins.RuntimeError" ,
99+ "builtins.set" ,
100+ "builtins.setattr" ,
101+ "builtins.slice" ,
102+ "builtins.sorted" ,
103+ "builtins.staticmethod" ,
104+ "builtins.StopIteration" ,
105+ "builtins.str" ,
106+ "builtins.sum" ,
107+ "builtins.super" ,
108+ "builtins.SyntaxError" ,
109+ "builtins.SystemExit" ,
110+ "builtins.tuple" ,
111+ "builtins.type" ,
112+ "builtins.TypeError" ,
113+ "builtins.ValueError" ,
114+ "builtins.ZeroDivisionError" ,
115+ "builtins.zip" ,
116+ "builtins.bytearray.append" ,
117+ "builtins.bytearray.extend" ,
118+ "builtins.dict.clear" ,
119+ "builtins.dict.copy" ,
120+ "builtins.dict.fromkeys" ,
121+ "builtins.dict.get" ,
122+ "builtins.dict.items" ,
123+ "builtins.dict.keys" ,
124+ "builtins.dict.pop" ,
125+ "builtins.dict.popitem" ,
126+ "builtins.dict.setdefault" ,
127+ "builtins.dict.update" ,
128+ "builtins.dict.values" ,
129+ "builtins.int.from_bytes" ,
130+ "builtins.int.to_bytes" ,
131+ "builtins.list.append" ,
132+ "builtins.list.clear" ,
133+ "builtins.list.copy" ,
134+ "builtins.list.count" ,
135+ "builtins.list.extend" ,
136+ "builtins.list.index" ,
137+ "builtins.list.insert" ,
138+ "builtins.list.pop" ,
139+ "builtins.list.remove" ,
140+ "builtins.list.reverse" ,
141+ "builtins.list.sort" ,
142+ "builtins.str.count" ,
143+ "builtins.str.endswith" ,
144+ "builtins.str.find" ,
145+ "builtins.str.format" ,
146+ "builtins.str.index" ,
147+ "builtins.str.isalpha" ,
148+ "builtins.str.isdigit" ,
149+ "builtins.str.islower" ,
150+ "builtins.str.isspace" ,
151+ "builtins.str.isupper" ,
152+ "builtins.str.join" ,
153+ "builtins.str.lower" ,
154+ "builtins.str.lstrip" ,
155+ "builtins.str.replace" ,
156+ "builtins.str.rfind" ,
157+ "builtins.str.rindex" ,
158+ "builtins.str.rsplit" ,
159+ "builtins.str.rstrip" ,
160+ "builtins.str.split" ,
161+ "builtins.str.startswith" ,
162+ "builtins.str.strip" ,
163+ "builtins.str.upper" ,
164+ "builtins.tuple.count" ,
165+ "builtins.tuple.index" ,
166+ }
167+
168+ PYBRICKS_BUILTINS_NO_FULLNAME = {"items" , "values" }
169+
170+ PYBRICKS_TYPING = {
171+ "typing.MutableSequence.append" ,
172+ "typing.MutableSequence.extend" ,
173+ "typing.MutableMapping.pop" ,
174+ "typing.Mapping.get" ,
116175}
117176
118177# Types from monaco editor
@@ -256,7 +315,7 @@ def _is_pybricks(c: Completion) -> bool:
256315 return False
257316
258317 # filter out typing types
259- if c .full_name .startswith ("typing." ):
318+ if c .full_name .startswith ("typing." ) and c . full_name not in PYBRICKS_TYPING :
260319 return False
261320
262321 # filter out packages/modules that are not included in Pybricks firmware
@@ -265,7 +324,10 @@ def _is_pybricks(c: Completion) -> bool:
265324
266325 # filter subset of builtins
267326 if c .module_name == "builtins" and c .type != "keyword" :
268- return c .name in PYBRICKS_BUILTINS
327+ if c .full_name is None :
328+ return c .name in PYBRICKS_BUILTINS_NO_FULLNAME
329+
330+ return c .full_name in PYBRICKS_BUILTINS
269331
270332 # this is a type alias, not a real type
271333 if c .full_name == "pybricks.parameters.Number" :
0 commit comments