@@ -168,24 +168,43 @@ def inner(value):
168168 (),
169169 )
170170 else :
171- return types .CodeType (
172- co .co_argcount ,
173- co .co_kwonlyargcount ,
174- co .co_nlocals ,
175- co .co_stacksize ,
176- co .co_flags ,
177- co .co_code ,
178- co .co_consts ,
179- co .co_names ,
180- co .co_varnames ,
181- co .co_filename ,
182- co .co_name ,
183- co .co_firstlineno ,
184- co .co_lnotab ,
185- co .co_cellvars , # this is the trickery
186- (),
187- )
188-
171+ if hasattr (types .CodeType , "co_posonlyargcount" ): # pragma: no branch
172+ return types .CodeType (
173+ co .co_argcount ,
174+ co .co_posonlyargcount , # Python3.8 with PEP570
175+ co .co_kwonlyargcount ,
176+ co .co_nlocals ,
177+ co .co_stacksize ,
178+ co .co_flags ,
179+ co .co_code ,
180+ co .co_consts ,
181+ co .co_names ,
182+ co .co_varnames ,
183+ co .co_filename ,
184+ co .co_name ,
185+ co .co_firstlineno ,
186+ co .co_lnotab ,
187+ co .co_cellvars , # this is the trickery
188+ (),
189+ )
190+ else :
191+ return types .CodeType (
192+ co .co_argcount ,
193+ co .co_kwonlyargcount ,
194+ co .co_nlocals ,
195+ co .co_stacksize ,
196+ co .co_flags ,
197+ co .co_code ,
198+ co .co_consts ,
199+ co .co_names ,
200+ co .co_varnames ,
201+ co .co_filename ,
202+ co .co_name ,
203+ co .co_firstlineno ,
204+ co .co_lnotab ,
205+ co .co_cellvars , # this is the trickery
206+ (),
207+ )
189208
190209_cell_set_template_code = _make_cell_set_template_code ()
191210
@@ -371,12 +390,23 @@ def save_codeobject(self, obj):
371390 Save a code object
372391 """
373392 if PY3 : # pragma: no branch
374- args = (
375- obj .co_argcount , obj .co_kwonlyargcount , obj .co_nlocals , obj .co_stacksize ,
376- obj .co_flags , obj .co_code , obj .co_consts , obj .co_names , obj .co_varnames ,
377- obj .co_filename , obj .co_name , obj .co_firstlineno , obj .co_lnotab , obj .co_freevars ,
378- obj .co_cellvars
379- )
393+ if hasattr (obj , "co_posonlyargcount" ): # pragma: no branch
394+ args = (
395+ obj .co_argcount , obj .co_posonlyargcount ,
396+ obj .co_kwonlyargcount , obj .co_nlocals , obj .co_stacksize ,
397+ obj .co_flags , obj .co_code , obj .co_consts , obj .co_names ,
398+ obj .co_varnames , obj .co_filename , obj .co_name ,
399+ obj .co_firstlineno , obj .co_lnotab , obj .co_freevars ,
400+ obj .co_cellvars
401+ )
402+ else :
403+ args = (
404+ obj .co_argcount , obj .co_kwonlyargcount , obj .co_nlocals ,
405+ obj .co_stacksize , obj .co_flags , obj .co_code , obj .co_consts ,
406+ obj .co_names , obj .co_varnames , obj .co_filename ,
407+ obj .co_name , obj .co_firstlineno , obj .co_lnotab ,
408+ obj .co_freevars , obj .co_cellvars
409+ )
380410 else :
381411 args = (
382412 obj .co_argcount , obj .co_nlocals , obj .co_stacksize , obj .co_flags , obj .co_code ,
0 commit comments