You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-02 16:44:46 +08:00
37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
# In Python 3.3+ this uses grammar rule
|
|
# compare_chained_right ::= expr COMPARE_OP RETURN_VALUE
|
|
# In Python 3.6 uses this uses grammar rule
|
|
# compare_chained_right ::= expr COMPARE_OP come_froms JUMP_FORWARD
|
|
|
|
# Seen in Python 3.3 ipaddress.py
|
|
|
|
# RUNNABLE!
|
|
def _is_valid_netmask(netmask):
|
|
return 0 <= netmask <= 10
|
|
|
|
# There were also bugs in 2.6- involving the use of "or" twice in its "or"
|
|
# detections
|
|
|
|
# See in 2.6.9 quopri.py ishex():
|
|
assert not '0' <= __file__ <= '9' or 'a' <= __file__ <= 'f' or 'A' <= __file__ <= 'F'
|
|
|
|
# From 3.7 bug-grammar.py
|
|
|
|
# Bug in 3.7 was handling the last line where compare_chained -> compare_chained37 and
|
|
# therefore compare_chained has one child, not two as it normally does.
|
|
|
|
def test_comparison():
|
|
### comparison: expr (comp_op expr)*
|
|
### comp_op: '<'|'>'|'=='|'>='|'<='|'!='|'in'|'not' 'in'|'is'|'is' 'not'
|
|
if 1: pass
|
|
x = (1 == 1)
|
|
if 1 == 1: pass
|
|
if 1 != 1: pass
|
|
if 1 < 1: pass
|
|
if 1 > 1: pass
|
|
if 1 <= 1: pass
|
|
if 1 >= 1: pass
|
|
if 1 in (): pass
|
|
if 1 not in (): pass
|
|
if 1 < 1 > 1 == 1 >= 1 <= 1 != 1 in 1 not in 1 is 1 is not 1: pass
|