On Tue, Apr 19, 2016 at 2:13 AM, Xuancong Wang <xuancon...@gmail.com> wrote:
> Dear Cython developers, > > Python supports meta-programming, in which a variable with name > specified in a string can be created at run-time. One built-in library > which make use of this is argparse. > > For example: > > parser.add_argument('-N', '--max_threads', help='maximum number of > concurrent decoding threads', type=int, default=16) > > in this case, the variable max_threads is created from the string > argument. And then Cython will generate an incorrect C program with > the following error: > > smt.py:78:88: undeclared name not builtin: headtail > smt.c:1:2: error: #error Do not use this file, it is the result of a > failed Cython compilation. Argparse works just fine in Cython import argparse parser = argparse.ArgumentParser() parser.add_argument('-N', '--max_threads', help='maximum number of concurrent decoding threads', type=int, default=16) args = parser.parse_args() print args.max_threads Could you provide a full example that you think should work? Where is headtail defined? Is it another argument? > In comparison, I found that nuitka can convert this kind of Python > programs sucessfully. I hope Cython can be improved. Thanks! > argsparse dynamically adds the attributes to the returned object, which works fine in Cython. Unless you're doing something like http://stackoverflow.com/questions/19299635/python-argparse-parse-args-into-global-namespace-or-a-reason-this-is-a-bad-idea That's one of the few places we diverge, because people strongly preferred compile-time errors to runtime errors in this case.
_______________________________________________ cython-devel mailing list cython-devel@python.org https://mail.python.org/mailman/listinfo/cython-devel