[Release/1.7] Fix index parsing on Python-3.9#48744
Conversation
Summary:
In 3.9, `ast.Index` and `ast.ExtSlice` are deprecated, so:
- `ast.parse('img[3]', model='eval')` evaluates to
`Expression(body=Subscript(value=Name(id='img'), slice=Constant(value=3)))` by 3.9,
but was previously evaluated to `Expression(body=Subscript(value=Name(id='img'), slice=Index(value=Num(n=3))))`
- and `ast.parse('img[..., 10:20]', mode='eval')` is evaluated to
`
Subscript(value=Name(id='img'),slice=Tuple(elts=[Constant(value=Ellipsis),Slice(lower=Constant(value=10), upper=Constant(value=20))]))
`
, but was evaluated to
`
Subscript(value=Name(id='img'), slice=ExtSlice(dims=[Index(value=Ellipsis()), Slice(lower=Num(n=10), upper=Num(n=20), step=None)]))
`
Fixes #48674
Pull Request resolved: #48676
Reviewed By: seemethere, gmagogsfm
Differential Revision: D25261323
Pulled By: malfet
fbshipit-source-id: cc818ecc596a062ed5f1a1d11d3fdf0f22bf7f4a
|
Merging since tests passed on master |
💊 CI failures summary and remediationsAs of commit ba128f3 (more details on the Dr. CI page):
❄️ 25 failures tentatively classified as flakybut reruns have not yet been triggered to confirm:
|
Summary:
In 3.9,
ast.Indexandast.ExtSliceare deprecated, so:ast.parse('img[3]', model='eval')evaluates toExpression(body=Subscript(value=Name(id='img'), slice=Constant(value=3)))by 3.9,but was previously evaluated to
Expression(body=Subscript(value=Name(id='img'), slice=Index(value=Num(n=3))))ast.parse('img[..., 10:20]', mode='eval')is evaluated toSubscript(value=Name(id='img'),slice=Tuple(elts=[Constant(value=Ellipsis),Slice(lower=Constant(value=10), upper=Constant(value=20))])), but was evaluated to
Subscript(value=Name(id='img'), slice=ExtSlice(dims=[Index(value=Ellipsis()), Slice(lower=Num(n=10), upper=Num(n=20), step=None)]))Fixes #48674
This is a cherry-pick of #48676 into release/1.7