For the benefit of those who read this in ASCII, I will include Unicode translations in the following. I prefer code which is readable in ASCII (as PEP-8 suggests) which is one reason that I a little bit dislike the proposal. I had to go to the archives to even read the subject line. Nevertheless, I think that, in the Unicode world, the proposal is sound.
The question was asked earlier why the Python int() and float() functions do not allow Greek numbers, when they do allow numbers from many other language character sets.
The answer is in the documentation for int():
The "Nd" characters are decimal digits of systems which use positional notation (i.e. Arabic numbers). The Greeks used decimal numbers, but used different symbols for one, ten, hundred, thousand, (etc.) and added them together, much like the system of Roman numbers we are familiar with.The numeric literals accepted include the digits 0 to 9 or any Unicode equivalent (code points with the Nd property).
>>> import romanclass as Roman
>>> g2 = '\U0001015c'
>>> unicodedata.name(g2)
'GREEK ACROPHONIC THESPIAN TWO'
>>> g5000 = '\U00010172'
>>> unicodedata.name(g5000)
'GREEK ACROPHONIC THESPIAN FIVE THOUSAND'
>>> g5002 = g5000 + g2 # string concatenation (not addition)
>>> g5002
'\U00010172\U0001015c'
>>> Roman.Roman(g5002)
Roman(5002)
>>> print(Roman.Roman(g5002))
ↁII
>>> # but -- since Roman math subtracts values on the left...
>>> print(Roman.Roman(g2 + g5000))
MↁCMXCVIII
>>> u'\u2167'
'Ⅷ'
>>> eight = Roman.Roman(u'\u2167')
>>> print(eight + 10) # NOTE: mathematical addition
XVIII
>>> '\u03c0'
'π'
>>> pi = '\u03c0'
>>> unicodedata.name(pi)
'GREEK SMALL LETTER PI'
>>> unicodedata.numeric(pi)
Traceback (most recent call last):
File "<pyshell#113>", line 1, in <module>
unicodedata.numeric(pi)
ValueError: not a numeric character
>>>
>>> unicodedata.numeric('X')
Traceback (most recent call last):
File "<pyshell#114>", line 1, in <module>
unicodedata.numeric('X')
ValueError: not a numeric character
>>>
>>> Roman.Roman('X')
Roman(10)
>>> float(Roman.Roman('X'))
10.0
>>>