Yup, good point, 'None' does make sense as the first NAME in the dotted_name production.
No, dotted_name is only used in import statements.
None is a valid package name.
But it won't be when None becomes a keyword. We shouldn't change the grammar now anyway, so let's fight instead about which names *should* become keywords eventually (== which should generate warnings in 2.3 for non-rvalue uses).
import string import __builtin__
candidates = [k for k in dir(__builtin__) if k in string.ascii_uppercase and not k.endswith('Error') and not k.endswith('Warning')]
for k in candidates: print k
Ellipsis Exception False KeyboardInterrupt None NotImplemented StopIteration SystemExit True
in current CVS.
Ellipsis False None NotImplemented True
are the builtin singleton data constants, so I'm +1 on those. The others are exception classes; -0 from me.