Expression access the property through API PropertyContainer::getPropertyByName(), so it shouldn't matter if it is py2 or py3. If we want to do it now, just lift the ASCII only naming restriction in DynamicProperty::addDynamicProperty() and PropertySheet::isValidAlias() should be fine.
On the other hand, lifting property name restriction may be to invasive IMO, and may cause unnecessary compatibility problems. With my branch (also included in my expression completer PR), I have changed how Spreadsheet provides cell alias. Instead of adding a dynamic property, it literally gives the same property an alternative name, and expose it through getPropertyByName(), and can be enumerated using new API PropertyContainer::getPropertyNamedList(). With that, we only need to lift naming restriction in PropertySheet::isValidAlias(). I just tried it in my branch, and it works fine. Here is the commit, which includes a few other minor changes that I can think of.