
On 06/29/2013 02:07 AM, Nick Coghlan wrote:
On 29 June 2013 10:09, Ethan Furman <ethan@stoneleaf.us> wrote:
Am I making this too complicated? Can I just do my renaming in the setup.py script before calling the setup function?
You can't easily create a wheel that way.
What would actually be better is if you could avoid the need for any Python 3 specific syntax in the first place. Are you sure you can't tweak the code to use types.new_class or an inner function call to avoid the syntax problems?
For example, Python 2 can do keyword only arguments like this:
def _unpack_args(module=None, type=None): return module, type
class CallableWithKeywordOnlyArgs def __call__(cls, value, names=None, **kwargs): module, type = _unpack_kwargs(**kwargs)
The introspection support and error messages aren't as good as those for true Python 3 keyword-only arguments, but they're not *that* bad.
There's a reason shared syntax compatible 2/3 source has become the most popular approach for straddling the 2/3 boundary - the alternatives are all lousy by comparison. Conditional distribution of version specific source files is far more painful than jumping through a few syntactic hoops to stay within the common 2/3 subset of the language.
I was hoping to provide good examples of Python 3 code (as opposed to good examples of 2/3 boundary straddling), but yeah, it's danged difficult! Is there a way to have both a Py2 distribution and a Py3 distribution available on PyPI? -- ~Ethan~