black/tests/data/python2_detection.py
Richard Si 0753d99519
Improve Python 2 only syntax detection (GH-2592)
* Improve Python 2 only syntax detection

First of all this fixes a mistake I made in Python 2 deprecation PR
using token.* to check for print/exec statements. Turns out that
for nodes with a type value higher than 256 its numeric type isn't
guaranteed to be constant. Using syms.* instead fixes this.

Also add support for the following cases:

    print "hello, world!"

    exec "print('hello, world!')"

    def set_position((x, y), value):
        pass

    try:
        pass
    except Exception, err:
        pass

    raise RuntimeError, "I feel like crashing today :p"

    `wow_these_really_did_exist`

    10L

* Add octal support, more test cases, and fixup long ints

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2021-11-11 20:28:48 -05:00

90 lines
758 B
Python

# This uses a similar construction to the decorators.py test data file FYI.
print "hello, world!"
###
exec "print('hello, world!')"
###
def set_position((x, y), value):
pass
###
try:
pass
except Exception, err:
pass
###
raise RuntimeError, "I feel like crashing today :p"
###
`wow_these_really_did_exist`
###
10L
###
10l
###
0123
# output
print("hello python three!")
###
exec("I'm not sure if you can use exec like this but that's not important here!")
###
try:
pass
except make_exception(1, 2):
pass
###
try:
pass
except Exception as err:
pass
###
raise RuntimeError(make_msg(1, 2))
###
raise RuntimeError("boom!",)
###
def set_position(x, y, value):
pass
###
10
###
0
###
000
###
0o12