New submission from Peter <peter_duli...@hotmail.com>:

Hello,

I expect the following code to run fine, but the assertion fails. dbg1 is 1, 
while dbg2 is 3.  I thought they would both be 3.
Note that the only difference between the expressions for dbg1 and dbg2 are the 
parentheses.
Please accept my apologies if this is expected behavior, but it came as a big 
surprise to me.


import json
if __name__ == "__main__":
    msg = '''
        {
        "Sync Setup Flags": {
            "Setup Sync": "Enable",
            "Generate Primary Sync": "Enable",
            "Backup Primary Sync": "Disable",
            "Follow Only": "Disable",
            "Use Local Clock": "Disable",
            "Set Active": "Disable"
        }
        }
        '''
    obj = json.loads(msg)
    dbg1 = \
        1 if obj["Sync Setup Flags"]["Setup Sync"] == "Enable" else 0 | \
        2 if obj["Sync Setup Flags"]["Generate Primary Sync"] == "Enable" else 
0 | \
        4 if obj["Sync Setup Flags"]["Backup Primary Sync"] == "Enable" else 0 
| \
        8 if obj["Sync Setup Flags"]["Follow Only"] == "Enable" else 0 | \
        16 if obj["Sync Setup Flags"]["Use Local Clock"] == "Enable" else 0 | \
        128 if obj["Sync Setup Flags"]["Set Active"] == "Enable" else 0
    dbg2 = \
        (1 if obj["Sync Setup Flags"]["Setup Sync"] == "Enable" else 0) | \
        (2 if obj["Sync Setup Flags"]["Generate Primary Sync"] == "Enable" else 
0) | \
        (4 if obj["Sync Setup Flags"]["Backup Primary Sync"] == "Enable" else 
0) | \
        (8 if obj["Sync Setup Flags"]["Follow Only"] == "Enable" else 0) | \
        (16 if obj["Sync Setup Flags"]["Use Local Clock"] == "Enable" else 0) | 
\
        (128 if obj["Sync Setup Flags"]["Set Active"] == "Enable" else 0)

    assert(dbg1 == dbg2)

----------
messages: 384874
nosy: amazingmo
priority: normal
severity: normal
status: open
title: Ternary operator precedence relative to bitwise or
type: behavior
versions: Python 3.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue42900>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to