I could be wrong, but I don't think you can join on a User Defined function. It should be because you can't have a foreign key on a function, and in order to join using SQLAlchemy you have to have a foreign key or a defined relationship.
Hopefully someone else could shed some light on this if they see it differently.