@@ -1220,27 +1220,90 @@ if sys.version_info >= (3, 10):
1220
1220
@overload
1221
1221
async def anext (__i : SupportsAnext [_T ], default : _VT ) -> _T | _VT : ...
1222
1222
1223
- # TODO: `compile` has a more precise return type in reality; work on a way of expressing that?
1223
+ # compile() returns a CodeType, unless the flags argument includes PyCF_ONLY_AST (=1024),
1224
+ # in which case it returns ast.AST. We have overloads for flag 0 (the default) and for
1225
+ # explicitly passing PyCF_ONLY_AST. We fall back to Any for other values of flags.
1224
1226
if sys .version_info >= (3 , 8 ):
1227
+ @overload
1225
1228
def compile (
1226
1229
source : str | ReadableBuffer | _ast .Module | _ast .Expression | _ast .Interactive ,
1227
1230
filename : str | ReadableBuffer | _PathLike [Any ],
1228
1231
mode : str ,
1229
- flags : int = 0 ,
1232
+ flags : Literal [0 ],
1233
+ dont_inherit : int = False ,
1234
+ optimize : int = - 1 ,
1235
+ * ,
1236
+ _feature_version : int = - 1 ,
1237
+ ) -> CodeType : ...
1238
+ @overload
1239
+ def compile (
1240
+ source : str | ReadableBuffer | _ast .Module | _ast .Expression | _ast .Interactive ,
1241
+ filename : str | ReadableBuffer | _PathLike [Any ],
1242
+ mode : str ,
1243
+ * ,
1244
+ dont_inherit : int = False ,
1245
+ optimize : int = - 1 ,
1246
+ _feature_version : int = - 1 ,
1247
+ ) -> CodeType : ...
1248
+ @overload
1249
+ def compile (
1250
+ source : str | ReadableBuffer | _ast .Module | _ast .Expression | _ast .Interactive ,
1251
+ filename : str | ReadableBuffer | _PathLike [Any ],
1252
+ mode : str ,
1253
+ flags : Literal [1024 ],
1254
+ dont_inherit : int = False ,
1255
+ optimize : int = - 1 ,
1256
+ * ,
1257
+ _feature_version : int = - 1 ,
1258
+ ) -> _ast .AST : ...
1259
+ @overload
1260
+ def compile (
1261
+ source : str | ReadableBuffer | _ast .Module | _ast .Expression | _ast .Interactive ,
1262
+ filename : str | ReadableBuffer | _PathLike [Any ],
1263
+ mode : str ,
1264
+ flags : int ,
1230
1265
dont_inherit : int = False ,
1231
1266
optimize : int = - 1 ,
1232
1267
* ,
1233
1268
_feature_version : int = - 1 ,
1234
1269
) -> Any : ...
1235
1270
1236
1271
else :
1272
+ @overload
1273
+ def compile (
1274
+ source : str | ReadableBuffer | _ast .Module | _ast .Expression | _ast .Interactive ,
1275
+ filename : str | ReadableBuffer | _PathLike [Any ],
1276
+ mode : str ,
1277
+ flags : Literal [0 ],
1278
+ dont_inherit : int = False ,
1279
+ optimize : int = - 1 ,
1280
+ ) -> CodeType : ...
1281
+ @overload
1282
+ def compile (
1283
+ source : str | ReadableBuffer | _ast .Module | _ast .Expression | _ast .Interactive ,
1284
+ filename : str | ReadableBuffer | _PathLike [Any ],
1285
+ mode : str ,
1286
+ * ,
1287
+ dont_inherit : int = False ,
1288
+ optimize : int = - 1 ,
1289
+ ) -> CodeType : ...
1290
+ @overload
1237
1291
def compile (
1238
1292
source : str | ReadableBuffer | _ast .Module | _ast .Expression | _ast .Interactive ,
1239
1293
filename : str | ReadableBuffer | _PathLike [Any ],
1240
1294
mode : str ,
1241
- flags : int = ...,
1242
- dont_inherit : int = ...,
1243
- optimize : int = ...,
1295
+ flags : Literal [1024 ],
1296
+ dont_inherit : int = False ,
1297
+ optimize : int = - 1 ,
1298
+ ) -> _ast .AST : ...
1299
+ @overload
1300
+ def compile (
1301
+ source : str | ReadableBuffer | _ast .Module | _ast .Expression | _ast .Interactive ,
1302
+ filename : str | ReadableBuffer | _PathLike [Any ],
1303
+ mode : str ,
1304
+ flags : int ,
1305
+ dont_inherit : int = False ,
1306
+ optimize : int = - 1 ,
1244
1307
) -> Any : ...
1245
1308
1246
1309
def copyright () -> None : ...
0 commit comments