[Python-3000] Support for PEP 3131

Rauli Ruohonen rauli.ruohonen at gmail.com
Mon Jun 11 18:43:58 CEST 2007


On 6/11/07, Jim Jewett <jimjjewett at gmail.com> wrote:
>     "In fact, it might even use something downright misleading, and
> you won't have any warning, because we thought that maybe someone,
> somewhere, might have wanted that character in a different context."
>
> And no, I don't think I'm exagerating with that last one; we aren't
> proposing rules against mixed script identifiers (or even limiting
> script switches to occur only at the _ character).

This isn't limited to identifiers, though. You can already write "tricky"
code in 2.5, but the coding directive and the unicode/str separation
make it obvious that something funny is going on. The former will not
be necessary in 3.0 and the latter will be gone. Won't restricting
identifiers only give you false sense of security?

Small example using strings:

authors = ['Michélle Mischié-Vous', 'Günther Gutenberg']
clearances = ['infrared', 'red', 'orange', 'yellow', 'green',
              'blue', 'indigo', 'violet', 'ultraviolet']

class ClearanceError(ValueError):
    pass

def validate_clearance(clearance):
    if clearance not in clearances:
        raise ClearanceError(clearance)

def big_red_button451(clearance):
    validate_clearance(clearance)
    if clearance == 'infrarеd': # cyrillic e
        # Even this button has *some* standards! -- Michélle
        raise ClearanceError(clearance)
    # Set Günther's printer on fire

def main():
    try:
        big_red_button451('infrarеd') # cyrillic e
    except ClearanceError:
        pass
    else:
        print('BRB 451 does not check clearances properly!')

if __name__ == '__main__':
    main() # run tests


More information about the Python-3000 mailing list