diff options
author | Anton Samokhvalov <pg83@yandex.ru> | 2022-02-10 16:45:17 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:17 +0300 |
commit | d3a398281c6fd1d3672036cb2d63f842d2cb28c5 (patch) | |
tree | dd4bd3ca0f36b817e96812825ffaf10d645803f2 /contrib/tools/cython/Cython/Compiler/CmdLine.py | |
parent | 72cb13b4aff9bc9cf22e49251bc8fd143f82538f (diff) | |
download | ydb-d3a398281c6fd1d3672036cb2d63f842d2cb28c5.tar.gz |
Restoring authorship annotation for Anton Samokhvalov <pg83@yandex.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/tools/cython/Cython/Compiler/CmdLine.py')
-rw-r--r-- | contrib/tools/cython/Cython/Compiler/CmdLine.py | 342 |
1 files changed, 171 insertions, 171 deletions
diff --git a/contrib/tools/cython/Cython/Compiler/CmdLine.py b/contrib/tools/cython/Cython/Compiler/CmdLine.py index 77c2de9ef9..a20ab38dc2 100644 --- a/contrib/tools/cython/Cython/Compiler/CmdLine.py +++ b/contrib/tools/cython/Cython/Compiler/CmdLine.py @@ -1,83 +1,83 @@ -# -# Cython - Command Line Parsing -# - -from __future__ import absolute_import - -import os -import sys -from . import Options - -usage = """\ -Cython (http://cython.org) is a compiler for code written in the -Cython language. Cython is based on Pyrex by Greg Ewing. - -Usage: cython [options] sourcefile.{pyx,py} ... - -Options: - -V, --version Display version number of cython compiler - -l, --create-listing Write error messages to a listing file - -I, --include-dir <directory> Search for include files in named directory - (multiple include directories are allowed). - -o, --output-file <filename> Specify name of generated C file - -t, --timestamps Only compile newer source files - -f, --force Compile all source files (overrides implied -t) - -v, --verbose Be verbose, print file names on multiple compilation - -p, --embed-positions If specified, the positions in Cython files of each - function definition is embedded in its docstring. - --cleanup <level> Release interned objects on python exit, for memory debugging. - Level indicates aggressiveness, default 0 releases nothing. - -w, --working <directory> Sets the working directory for Cython (the directory modules - are searched from) - --gdb Output debug information for cygdb - --gdb-outdir <directory> Specify gdb debug information output directory. Implies --gdb. - - -D, --no-docstrings Strip docstrings from the compiled module. - -a, --annotate Produce a colorized HTML version of the source. +# +# Cython - Command Line Parsing +# + +from __future__ import absolute_import + +import os +import sys +from . import Options + +usage = """\ +Cython (http://cython.org) is a compiler for code written in the +Cython language. Cython is based on Pyrex by Greg Ewing. + +Usage: cython [options] sourcefile.{pyx,py} ... + +Options: + -V, --version Display version number of cython compiler + -l, --create-listing Write error messages to a listing file + -I, --include-dir <directory> Search for include files in named directory + (multiple include directories are allowed). + -o, --output-file <filename> Specify name of generated C file + -t, --timestamps Only compile newer source files + -f, --force Compile all source files (overrides implied -t) + -v, --verbose Be verbose, print file names on multiple compilation + -p, --embed-positions If specified, the positions in Cython files of each + function definition is embedded in its docstring. + --cleanup <level> Release interned objects on python exit, for memory debugging. + Level indicates aggressiveness, default 0 releases nothing. + -w, --working <directory> Sets the working directory for Cython (the directory modules + are searched from) + --gdb Output debug information for cygdb + --gdb-outdir <directory> Specify gdb debug information output directory. Implies --gdb. + + -D, --no-docstrings Strip docstrings from the compiled module. + -a, --annotate Produce a colorized HTML version of the source. --annotate-coverage <cov.xml> Annotate and include coverage information from cov.xml. - --line-directives Produce #line directives pointing to the .pyx source - --cplus Output a C++ rather than C file. - --embed[=<method_name>] Generate a main() function that embeds the Python interpreter. - -2 Compile based on Python-2 syntax and code semantics. - -3 Compile based on Python-3 syntax and code semantics. + --line-directives Produce #line directives pointing to the .pyx source + --cplus Output a C++ rather than C file. + --embed[=<method_name>] Generate a main() function that embeds the Python interpreter. + -2 Compile based on Python-2 syntax and code semantics. + -3 Compile based on Python-3 syntax and code semantics. --3str Compile based on Python-3 syntax and code semantics without assuming unicode by default for string literals under Python 2. - --lenient Change some compile time errors to runtime errors to - improve Python compatibility - --capi-reexport-cincludes Add cincluded headers to any auto-generated header files. - --fast-fail Abort the compilation on the first error - --warning-errors, -Werror Make all warnings into errors - --warning-extra, -Wextra Enable extra warnings - -X, --directive <name>=<value>[,<name=value,...] Overrides a compiler directive + --lenient Change some compile time errors to runtime errors to + improve Python compatibility + --capi-reexport-cincludes Add cincluded headers to any auto-generated header files. + --fast-fail Abort the compilation on the first error + --warning-errors, -Werror Make all warnings into errors + --warning-extra, -Wextra Enable extra warnings + -X, --directive <name>=<value>[,<name=value,...] Overrides a compiler directive -E, --compile-time-env name=value[,<name=value,...] Provides compile time env like DEF would do. -""" - - +""" + + # The following experimental options are supported only on MacOSX: -# -C, --compile Compile generated .c file to .o file -# --link Link .o file to produce extension module (implies -C) -# -+, --cplus Use C++ compiler for compiling and linking -# Additional .o files to link may be supplied when using -X.""" - -def bad_usage(): - sys.stderr.write(usage) - sys.exit(1) - - -def parse_command_line(args): - from .Main import CompilationOptions, default_options - +# -C, --compile Compile generated .c file to .o file +# --link Link .o file to produce extension module (implies -C) +# -+, --cplus Use C++ compiler for compiling and linking +# Additional .o files to link may be supplied when using -X.""" + +def bad_usage(): + sys.stderr.write(usage) + sys.exit(1) + + +def parse_command_line(args): + from .Main import CompilationOptions, default_options + pending_arg = [] - def pop_arg(): + def pop_arg(): if not args or pending_arg: - bad_usage() + bad_usage() if '=' in args[0] and args[0].startswith('--'): # allow "--long-option=xyz" name, value = args.pop(0).split('=', 1) pending_arg.append(value) return name return args.pop(0) - + def pop_value(default=None): if pending_arg: return pending_arg.pop() @@ -87,104 +87,104 @@ def parse_command_line(args): bad_usage() return args.pop(0) - def get_param(option): - tail = option[2:] - if tail: - return tail - else: - return pop_arg() - - options = CompilationOptions(default_options) - sources = [] - while args: - if args[0].startswith("-"): - option = pop_arg() - if option in ("-V", "--version"): - options.show_version = 1 - elif option in ("-l", "--create-listing"): - options.use_listing_file = 1 - elif option in ("-+", "--cplus"): - options.cplus = 1 - elif option == "--embed": + def get_param(option): + tail = option[2:] + if tail: + return tail + else: + return pop_arg() + + options = CompilationOptions(default_options) + sources = [] + while args: + if args[0].startswith("-"): + option = pop_arg() + if option in ("-V", "--version"): + options.show_version = 1 + elif option in ("-l", "--create-listing"): + options.use_listing_file = 1 + elif option in ("-+", "--cplus"): + options.cplus = 1 + elif option == "--embed": Options.embed = pop_value("main") - elif option.startswith("-I"): - options.include_path.append(get_param(option)) - elif option == "--include-dir": + elif option.startswith("-I"): + options.include_path.append(get_param(option)) + elif option == "--include-dir": options.include_path.append(pop_value()) - elif option in ("-w", "--working"): + elif option in ("-w", "--working"): options.working_path = pop_value() - elif option in ("-o", "--output-file"): + elif option in ("-o", "--output-file"): options.output_file = pop_value() - elif option in ("-t", "--timestamps"): - options.timestamps = 1 - elif option in ("-f", "--force"): - options.timestamps = 0 - elif option in ("-v", "--verbose"): - options.verbose += 1 - elif option in ("-p", "--embed-positions"): - Options.embed_pos_in_docstring = 1 - elif option in ("-z", "--pre-import"): + elif option in ("-t", "--timestamps"): + options.timestamps = 1 + elif option in ("-f", "--force"): + options.timestamps = 0 + elif option in ("-v", "--verbose"): + options.verbose += 1 + elif option in ("-p", "--embed-positions"): + Options.embed_pos_in_docstring = 1 + elif option in ("-z", "--pre-import"): Options.pre_import = pop_value() - elif option == "--cleanup": + elif option == "--cleanup": Options.generate_cleanup_code = int(pop_value()) - elif option in ("-D", "--no-docstrings"): - Options.docstrings = False - elif option in ("-a", "--annotate"): - Options.annotate = True + elif option in ("-D", "--no-docstrings"): + Options.docstrings = False + elif option in ("-a", "--annotate"): + Options.annotate = True elif option == "--annotate-coverage": Options.annotate = True Options.annotate_coverage_xml = pop_value() - elif option == "--convert-range": - Options.convert_range = True - elif option == "--line-directives": - options.emit_linenums = True - elif option == "--no-c-in-traceback": - options.c_line_in_traceback = False - elif option == "--gdb": - options.gdb_debug = True - options.output_dir = os.curdir - elif option == "--gdb-outdir": - options.gdb_debug = True + elif option == "--convert-range": + Options.convert_range = True + elif option == "--line-directives": + options.emit_linenums = True + elif option == "--no-c-in-traceback": + options.c_line_in_traceback = False + elif option == "--gdb": + options.gdb_debug = True + options.output_dir = os.curdir + elif option == "--gdb-outdir": + options.gdb_debug = True options.output_dir = pop_value() - elif option == "--lenient": - Options.error_on_unknown_names = False - Options.error_on_uninitialized = False + elif option == "--lenient": + Options.error_on_unknown_names = False + Options.error_on_uninitialized = False elif option == '--module-name': options.module_name = pop_arg() elif option == '--init-suffix': options.init_suffix = pop_arg() elif option == '--source-root': Options.source_root = pop_arg() - elif option == '-2': - options.language_level = 2 - elif option == '-3': - options.language_level = 3 + elif option == '-2': + options.language_level = 2 + elif option == '-3': + options.language_level = 3 elif option == '--3str': options.language_level = '3str' - elif option == "--capi-reexport-cincludes": - options.capi_reexport_cincludes = True - elif option == "--fast-fail": - Options.fast_fail = True + elif option == "--capi-reexport-cincludes": + options.capi_reexport_cincludes = True + elif option == "--fast-fail": + Options.fast_fail = True elif option == "--cimport-from-pyx": Options.cimport_from_pyx = True - elif option in ('-Werror', '--warning-errors'): - Options.warning_errors = True - elif option in ('-Wextra', '--warning-extra'): - options.compiler_directives.update(Options.extra_warnings) - elif option == "--old-style-globals": - Options.old_style_globals = True - elif option == "--directive" or option.startswith('-X'): - if option.startswith('-X') and option[2:].strip(): - x_args = option[2:] - else: + elif option in ('-Werror', '--warning-errors'): + Options.warning_errors = True + elif option in ('-Wextra', '--warning-extra'): + options.compiler_directives.update(Options.extra_warnings) + elif option == "--old-style-globals": + Options.old_style_globals = True + elif option == "--directive" or option.startswith('-X'): + if option.startswith('-X') and option[2:].strip(): + x_args = option[2:] + else: x_args = pop_value() - try: - options.compiler_directives = Options.parse_directive_list( - x_args, relaxed_bool=True, - current_settings=options.compiler_directives) + try: + options.compiler_directives = Options.parse_directive_list( + x_args, relaxed_bool=True, + current_settings=options.compiler_directives) except ValueError as e: - sys.stderr.write("Error in compiler directive: %s\n" % e.args[0]) - sys.exit(1) + sys.stderr.write("Error in compiler directive: %s\n" % e.args[0]) + sys.exit(1) elif option == "--compile-time-env" or option.startswith('-E'): if option.startswith('-E') and option[2:].strip(): x_args = option[2:] @@ -196,35 +196,35 @@ def parse_command_line(args): except ValueError as e: sys.stderr.write("Error in compile-time-env: %s\n" % e.args[0]) sys.exit(1) - elif option.startswith('--debug'): - option = option[2:].replace('-', '_') - from . import DebugFlags - if option in dir(DebugFlags): - setattr(DebugFlags, option, True) - else: - sys.stderr.write("Unknown debug flag: %s\n" % option) - bad_usage() - elif option in ('-h', '--help'): - sys.stdout.write(usage) - sys.exit(0) - else: - sys.stderr.write("Unknown compiler flag: %s\n" % option) - sys.exit(1) - else: - sources.append(pop_arg()) + elif option.startswith('--debug'): + option = option[2:].replace('-', '_') + from . import DebugFlags + if option in dir(DebugFlags): + setattr(DebugFlags, option, True) + else: + sys.stderr.write("Unknown debug flag: %s\n" % option) + bad_usage() + elif option in ('-h', '--help'): + sys.stdout.write(usage) + sys.exit(0) + else: + sys.stderr.write("Unknown compiler flag: %s\n" % option) + sys.exit(1) + else: + sources.append(pop_arg()) if pending_arg: bad_usage() - if options.use_listing_file and len(sources) > 1: - sys.stderr.write( - "cython: Only one source file allowed when using -o\n") - sys.exit(1) - if len(sources) == 0 and not options.show_version: - bad_usage() - if Options.embed and len(sources) > 1: - sys.stderr.write( - "cython: Only one source file allowed when using -embed\n") - sys.exit(1) - return options, sources - + if options.use_listing_file and len(sources) > 1: + sys.stderr.write( + "cython: Only one source file allowed when using -o\n") + sys.exit(1) + if len(sources) == 0 and not options.show_version: + bad_usage() + if Options.embed and len(sources) > 1: + sys.stderr.write( + "cython: Only one source file allowed when using -embed\n") + sys.exit(1) + return options, sources + |