python-trio / unasync

The async transformation code.
Other
89 stars 13 forks source link

Allow pattern matching / substitutions #68

Open johtso opened 3 years ago

johtso commented 3 years ago

Think this would be a generally very useful feature. Easy to structure your code so that various things have Async/Sync prefixes, and then you can just target them all with a regex instead of having to list every token.

This is something that httpcore are doing in their custom unasync script https://github.com/encode/httpcore/blob/0.11.1/unasync.py#L10

pquentin commented 3 years ago

Would additional_replacements be enough for your needs? https://unasync.readthedocs.io/en/latest/#usage

johtso commented 3 years ago

Well, that's still just string for string replacement, no regexes right?

I did just realise that with the case of Async/Sync prefixed class names, we just hard-code the replacement. https://github.com/python-trio/unasync/blob/master/src/unasync/__init__.py#L106-L108

A guess a small benefit of having it implemented as a regex is that it will then be with all the other default replacements at the top of the file rather than hidden in the code.