3030
3131__docformat__ = "restructuredtext"
3232
33- def codeType2Portable (code , version_tuple = PYTHON_VERSION_TRIPLE ):
33+ def codeType2Portable (code , version_triple = PYTHON_VERSION_TRIPLE ):
3434 """Converts a native types.CodeType code object into a
3535 corresponding more flexible xdis Code type.
3636 """
@@ -42,8 +42,8 @@ def codeType2Portable(code, version_tuple=PYTHON_VERSION_TRIPLE):
4242 )
4343 line_table_field = "co_lnotab" if hasattr (code , "co_lnotab" ) else "co_linetable"
4444 line_table = getattr (code , line_table_field )
45- if version_tuple >= (3 , 0 ):
46- if version_tuple < (3 , 8 ):
45+ if version_triple >= (3 , 0 ):
46+ if version_triple < (3 , 8 ):
4747 return Code3 (
4848 code .co_argcount ,
4949 code .co_kwonlyargcount ,
@@ -65,8 +65,9 @@ def codeType2Portable(code, version_tuple=PYTHON_VERSION_TRIPLE):
6565 # type, should we try to extract it?
6666 code .collection_order if hasattr (code , "collection_order" ) else {},
6767 code .reference_objects if hasattr (code , "reference_objects" ) else set (),
68+ version_triple = version_triple ,
6869 )
69- elif version_tuple < (3 , 10 ):
70+ elif version_triple < (3 , 10 ):
7071 return Code38 (
7172 co_argcount = code .co_argcount ,
7273 co_posonlyargcount = code .co_posonlyargcount ,
@@ -85,7 +86,7 @@ def codeType2Portable(code, version_tuple=PYTHON_VERSION_TRIPLE):
8586 co_firstlineno = code .co_firstlineno ,
8687 co_lnotab = line_table ,
8788 )
88- elif version_tuple [:2 ] == (3 , 10 ) or IS_PYPY and version_tuple [:2 ] == (3 , 11 ):
89+ elif version_triple [:2 ] == (3 , 10 ) or IS_PYPY and version_triple [:2 ] == (3 , 11 ):
8990 return Code310 (
9091 co_argcount = code .co_argcount ,
9192 co_posonlyargcount = code .co_posonlyargcount ,
@@ -104,7 +105,7 @@ def codeType2Portable(code, version_tuple=PYTHON_VERSION_TRIPLE):
104105 co_firstlineno = code .co_firstlineno ,
105106 co_linetable = line_table ,
106107 )
107- elif version_tuple [:2 ] >= (3 , 11 ):
108+ elif version_triple [:2 ] >= (3 , 11 ):
108109 return Code311 (
109110 co_argcount = code .co_argcount ,
110111 co_posonlyargcount = code .co_posonlyargcount ,
@@ -125,7 +126,7 @@ def codeType2Portable(code, version_tuple=PYTHON_VERSION_TRIPLE):
125126 co_linetable = line_table ,
126127 co_exceptiontable = code .co_exceptiontable ,
127128 )
128- elif version_tuple > (2 , 0 ):
129+ elif version_triple > (2 , 0 ):
129130 # 2.0 .. 2.7
130131 return Code2 (
131132 co_argcount = code .co_argcount ,
@@ -151,7 +152,7 @@ def codeType2Portable(code, version_tuple=PYTHON_VERSION_TRIPLE):
151152 )
152153 else :
153154 # 1.0 .. 1.5
154- if version_tuple < (1 , 5 ):
155+ if version_triple < (1 , 5 ):
155156 # 1.0 .. 1.3
156157 return Code13 (
157158 code .co_argcount ,
@@ -181,31 +182,31 @@ def codeType2Portable(code, version_tuple=PYTHON_VERSION_TRIPLE):
181182 )
182183
183184
184- def portableCodeType (version_tuple = PYTHON_VERSION_TRIPLE ):
185+ def portableCodeType (version_triple = PYTHON_VERSION_TRIPLE ):
185186 """
186187 Return the portable CodeType version for the supplied Python release version.
187188 `version` is a floating-point number, like 2.7, or 3.9. If no version
188189 number is supplied we'll use the current interpreter version.
189190 """
190- if version_tuple >= (3 , 0 ):
191- if version_tuple < (3 , 8 ):
191+ if version_triple >= (3 , 0 ):
192+ if version_triple < (3 , 8 ):
192193 # 3.0 .. 3.7
193194 return Code3
194- elif version_tuple < (3 , 10 ):
195+ elif version_triple < (3 , 10 ):
195196 # 3.8 ... 3.9
196197 return Code38
197- elif version_tuple [:2 ] == (3 , 10 ) or IS_PYPY and version_tuple [:2 ] == (3 , 11 ):
198+ elif version_triple [:2 ] == (3 , 10 ) or IS_PYPY and version_triple [:2 ] == (3 , 11 ):
198199 # 3.10
199200 return Code310
200- elif version_tuple [:2 ] >= (3 , 11 ):
201+ elif version_triple [:2 ] >= (3 , 11 ):
201202 # 3.11 ...
202203 return Code311
203- elif version_tuple > (2 , 0 ):
204+ elif version_triple > (2 , 0 ):
204205 # 2.0 .. 2.7
205206 return Code2
206207 else :
207208 # 1.0 .. 1.5
208- if version_tuple <= (1 , 3 ):
209+ if version_triple <= (1 , 3 ):
209210 return Code13
210211 else :
211212 return Code15
@@ -214,7 +215,7 @@ def portableCodeType(version_tuple=PYTHON_VERSION_TRIPLE):
214215# In contrast to Code3, Code2, etc. you can use CodeTypeUnint for building
215216# an incomplete code type, which might be converted to another code type
216217# later.
217- CodeTypeUnionFields = tuple (Code311FieldNames .split () + ["collection_order" , "reference_objects" ])
218+ CodeTypeUnionFields = tuple (Code311FieldNames .split () + ["collection_order" , "reference_objects" , "version_triple" ])
218219CodeTypeUnion = namedtuple ("CodeTypeUnion" , CodeTypeUnionFields )
219220
220221
@@ -265,6 +266,7 @@ def to_portable(
265266 co_exceptiontable = co_exceptiontable ,
266267 collection_order = collection_order ,
267268 reference_objects = reference_objects ,
269+ version_triple = version_triple ,
268270 )
269271 return codeType2Portable (code , version_triple )
270272
0 commit comments